Server : LiteSpeed
System : Linux server51.dnsbootclub.com 4.18.0-553.62.1.lve.el8.x86_64 #1 SMP Mon Jul 21 17:50:35 UTC 2025 x86_64
User : nandedex ( 1060)
PHP Version : 8.1.33
Disable Function : NONE
Directory :  /home/nandedex/.cagefs/tmp/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]


Current File : /home/nandedex/.cagefs/tmp/phpEfMfBV
<?php
/*
Plugin Name: Better Disqus Comments
Plugin URI: http://betterstudio.com
Description: Take advantage of powerful and unique features by integrating Disqus comments on your website instead of the standard WordPress commenting system.
Version: 1.3.0
Author: BetterStudio
Author URI: http://betterstudio.com
License: GPL2
*/


/**
 * Better_Disqus_Comments class wrapper for make changes safe in future
 *
 * @return Better_Disqus_Comments
 */
function Better_Disqus_Comments() {

	return Better_Disqus_Comments::self();
}


// Initialize Better Disqus Comments
Better_Disqus_Comments();


/**
 * Class Better_Disqus_Comments
 */
class Better_Disqus_Comments {


	/**
	 * Contains Better_Disqus_Comments version number that used for assets for preventing cache mechanism
	 *
	 * @var string
	 */
	private static $version = '1.3.0';


	/**
	 * Contains plugin option panel ID
	 *
	 * @var string
	 */
	private static $panel_id = 'better_disqus_comments';

	/**
	 * Comments loading type: ajaxified|plain
	 *
	 * @var string
	 */
	private $comments_type;

	/**
	 * Inner array of instances
	 *
	 * @var array
	 */
	protected static $instances = array();


	function __construct() {

		include self::dir_path( 'includes/options/panel.php' );

		// Initialize
		add_action( 'better-framework/after_setup', array( $this, 'bf_init' ) );

		load_plugin_textdomain( 'better-studio', FALSE, 'better-disqus-comments/languages' );

	}


	/**
	 * Used for accessing plugin directory URL
	 *
	 * @param string $address
	 *
	 * @return string
	 */
	public static function dir_url( $address = '' ) {

		return plugin_dir_url( __FILE__ ) . $address;

	}


	/**
	 * Used for accessing plugin directory path
	 *
	 * @param string $address
	 *
	 * @return string
	 */
	public static function dir_path( $address = '' ) {

		return plugin_dir_path( __FILE__ ) . $address;

	}


	/**
	 * Returns plugin current Version
	 *
	 * @return string
	 */
	public static function get_version() {

		return self::$version;

	}


	/**
	 * Build the required object instance
	 *
	 * @param   string $object
	 * @param   bool   $fresh
	 * @param   bool   $just_include
	 *
	 * @return  Better_Disqus_Comments|null
	 */
	public static function factory( $object = 'self', $fresh = FALSE, $just_include = FALSE ) {

		if ( isset( self::$instances[ $object ] ) && ! $fresh ) {
			return self::$instances[ $object ];
		}

		switch ( $object ) {

			/**
			 * Main Better_Disqus_Comments Class
			 */
			case 'self':
				$class = 'Better_Disqus_Comments';
				break;

			default:
				return NULL;
		}


		// Just prepare/includes files
		if ( $just_include ) {
			return;
		}

		// don't cache fresh objects
		if ( $fresh ) {
			return new $class;
		}

		self::$instances[ $object ] = new $class;

		return self::$instances[ $object ];
	}


	/**
	 * Used for accessing alive instance of Better_Disqus_Comments
	 *
	 * @since 1.0
	 *
	 * @return Better_Disqus_Comments
	 */
	public static function self() {

		return self::factory();

	}


	/**
	 * Used for retrieving options simply and safely for next versions
	 *
	 * @param $option_key
	 *
	 * @return mixed|null
	 */
	public static function get_option( $option_key ) {

		return bf_get_option( $option_key, self::$panel_id );

	}


	/**
	 *  Init the plugin
	 */
	function bf_init() {

		if ( is_admin() && ! apply_filters( 'better-disqus-comments/allow-multiple', FALSE ) ) {

			if ( $this->get_option( 'shortname' ) && function_exists( 'Better_Facebook_Comments' ) && Better_Facebook_Comments()->get_option( 'app_id' ) ) {
				Better_Framework()->admin_notices()->add_notice( array(
					'id'  => 'facebook-and-disqus-same-time',
					'msg' => __( 'You activated both <strong>Facebook Comments</strong> and <strong>Disqus Comments</strong>. Please ensure that only one comment plugin is active at a time.', 'better-studio' )
				) );
			} else {
				Better_Framework()->admin_notices()->remove_notice( 'facebook-and-disqus-same-time' );
			}
		}


		if ( apply_filters( 'better-disqus-comments/override-template', $this->get_option( 'shortname' ) != '' ) ) {
			// Change default template
			add_filter( 'comments_template', array( $this, 'custom_comments_template' ) );
		}


		if ( ! is_admin() ) {

			// Update comments link
			add_filter( 'better-studio/theme/meta/comments/link', array(
				$this,
				'better_studio_themes_comment_link'
			), 10, 2 );

			// Clear themes comments count text in meta
			add_filter( 'better-studio/themes/meta/comments/text', array(
				$this,
				'better_studio_themes_comment_text'
			) );

		}

		// Add disqus count js
		Better_Framework()->assets_manager()->add_js( " var disqus_shortname = '" . $this->get_option( 'shortname' ) . "';
            (function () {
                var s = document.createElement('script'); s.async = true;
                s.type = 'text/javascript';
                s.src = '//' + disqus_shortname + '.disqus.com/count.js';
                (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
            }());" );

		add_action( 'wp_footer', array( $this, 'wp_footer' ) );

	}


	public function get_script() {

		ob_start();
		?>
		//<script>

		(function(){
		var disqus_shortname = '<?php echo esc_attr( $this->get_option( 'shortname' ) ) ?>';


		function beforeLoad(e,$wrapper, $this) {

             var $prevEl = jQuery('#disqus_thread');

             if($prevEl.length === 0) {
                 return;
             }

            $prevEl.removeAttr('id');

            $prevEl.addClass('disqus_thread_prev');
		}

		function appendDisqusScript(e,$wrapper, res) {

		if( typeof DISQUS === 'object' && DISQUS.reset ) {

        var info = res && res.info ? res.info : {};


		jQuery(".disqus_thread_prev").each(function(){

		    var $prevEl = jQuery(this),
		        $respond = $prevEl.closest('.comments-template'),
		     $link = $respond.parent().find('.ajaxified-comments-container');

            $link.show();
			$link.children().show();

			$respond.remove();

		});

		DISQUS.reset({
		reload: true,
		config: function () {
		this.page.identifier = info.post_id;
		this.page.url = info.permalink;
		this.page.title = info.title;
		}
		});



		} else {

		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
		}

		};

		<?php if ( $this->comments_type === 'ajaxified' ) { ?>
			jQuery(document).on("ajaxified-comments-before-load",beforeLoad)
						    .on("ajaxified-comments-loaded",appendDisqusScript);

        <?php } else { ?>
        appendDisqusScript();
		<?php }?>

		})();
		<?php

		return ob_get_clean();
	}


	public function output() {

		ob_start();
		?>
		<script><?php echo $this->get_script() ?></script>

		<?php

		return ob_get_clean();
	}


	/**
	 *  Init the plugin
	 */
	function wp_footer() {

		// Add Disqus main js file
		if ( is_singular() && ! ( is_front_page() || is_home() ) ) {

			Better_Framework()->assets_manager()->add_js( $this->get_script() );
		}

	}


	/**
	 * Finds appropriate template file and return path
	 * This make option to change template in themes
	 *
	 * @return string
	 */
	function get_template() {

		if ( is_child_theme() ) {
			// Use child theme specified template for Disqus comments
			if ( file_exists( get_stylesheet_directory() . '/better-disqus-comments.php' ) ) {
				return get_stylesheet_directory() . '/better-disqus-comments.php';
			}
		}

		// Use theme specified template for search page
		if ( file_exists( get_template_directory() . '/better-disqus-comments.php' ) ) {
			return get_template_directory() . '/better-disqus-comments.php';
		}

		return $this->dir_path( 'templates/better-disqus-comments.php' );

	}


	/**
	 * Changes WP comments template with diqus template
	 *
	 * @param string $template absolute path to comment template file
	 *
	 * @return string
	 */
	function custom_comments_template( $template ) {

		// Automatic AMP
		if ( function_exists( 'is_amp_endpoint' ) && is_amp_endpoint() ) {
			return $template;
		}

		// Better AMP
		if ( function_exists( 'is_better_amp' ) && is_better_amp() ) {
			return $template;
		}

		if ( ! apply_filters( 'better-disqus-comments/override-template', $this->get_option( 'shortname' ) != '' ) ) {
			return $template;
		}

		$is_ajaxified = basename( $template ) === 'comments-ajaxified.php';

		$this->comments_type = $is_ajaxified ? 'ajaxified' : 'plain';
		if ( $is_ajaxified ) {
			return $template;
		}

		return $this->get_template();

	}


	/**
	 * Callback: Used to clear themes meta text to better style in front-end
	 *
	 * Filter: better-studio/themes/meta/comments/text
	 *
	 * @param $text
	 *
	 * @return string
	 */
	function better_studio_themes_comment_text( $text ) {

		if ( apply_filters( 'better-disqus-comments/disable-aggregate', FALSE ) ) {
			return $text;
		}

		if ( is_single( get_the_ID() ) && is_main_query() && ! apply_filters( 'better-disqus-comments/allow-multiple', TRUE ) ) {
			return $text;
		} else {
			return '';
		}

	}


	/**
	 * Callback: Used to change themes meta link to support disqus count
	 *
	 * Filter: better-studio/themes/meta/comments/link
	 *
	 * @param $link string
	 *
	 * @return string
	 */
	function better_studio_themes_comment_link( $link ) {

		if ( apply_filters( 'better-disqus-comments/disable-aggregate', FALSE ) ) {
			return $link;
		}

		if ( is_single( get_the_ID() ) && is_main_query() && apply_filters( 'better-disqus-comments/allow-multiple', FALSE ) ) {
			return $link;
		} else {
			return get_permalink() . '#disqus_thread';
		}

	}

}
<?php

/**
 * Custom Template For Better Disqus Comments Plugin
 *
 * Copy this to your site theme and make it more compatible with your site layout
 */

?>

<div id="comments" class="better-comments-area better-disqus-comments-area">

	<div id="disqus_thread" data-post-id="<?php the_ID() ?>"></div>

	<noscript><?php _e( 'Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a>', 'better-studio' ); ?></noscript>

</div><?php

// Language  name for smart admin texts
$lang = bf_get_current_lang_raw();
if ( $lang != 'none' ) {
	$lang = bf_get_language_name( $lang );
} else {
	$lang = '';
}

$panel = array(
	'config'     => array(
		'parent'              => 'better-studio',
		'slug'                => 'better-studio/better-disqus-comments',
		'name'                => __( 'Better Disqus Comments', 'better-studio' ),
		'page_title'          => __( 'Better Disqus Comments', 'better-studio' ),
		'menu_title'          => __( 'Disqus Comments', 'better-studio' ),
		'capability'          => 'manage_options',
		'icon_url'            => NULL,
		'position'            => 80.07,
		'exclude_from_export' => FALSE,
	),
	'texts'      => array(

		'panel-desc-lang'     => '<p>' . __( '%s Language Options.', 'better-studio' ) . '</p>',
		'panel-desc-lang-all' => '<p>' . __( 'All Languages Options.', 'better-studio' ) . '</p>',

		'reset-button'     => ! empty( $lang ) ? sprintf( __( 'Reset %s Options', 'better-studio' ), $lang ) : __( 'Reset Options', 'better-studio' ),
		'reset-button-all' => __( 'Reset All Options', 'better-studio' ),

		'reset-confirm'     => ! empty( $lang ) ? sprintf( __( 'Are you sure to reset %s options?', 'better-studio' ), $lang ) : __( 'Are you sure to reset options?', 'better-studio' ),
		'reset-confirm-all' => __( 'Are you sure to reset all options?', 'better-studio' ),

		'save-button'     => ! empty( $lang ) ? sprintf( __( 'Save %s Options', 'better-studio' ), $lang ) : __( 'Save Options', 'better-studio' ),
		'save-button-all' => __( 'Save All Options', 'better-studio' ),

		'save-confirm-all' => __( 'Are you sure to save all options? this will override specified options per languages', 'better-studio' )

	),
	'panel-name' => _x( 'Better Disqus Comments', 'Panel title', 'better-studio' ),
	'panel-desc' => '<p>' . __( 'Take advantage of integrating Disqus comments on your website.', 'better-studio' ) . '</p>',
);
<?php

add_filter( 'better-framework/panel/add', 'better_disqus_comments_panel_add', 10 );

if ( ! function_exists( 'better_disqus_comments_panel_add' ) ) {
	/**
	 * Callback: Ads panel
	 *
	 * Filter: better-framework/panel/options
	 *
	 * @param $panels
	 *
	 * @return array
	 */
	function better_disqus_comments_panel_add( $panels ) {

		$panels['better_disqus_comments'] = array(
			'id' => 'better_disqus_comments',
		);

		return $panels;
	}
}


add_filter( 'better-framework/panel/better_disqus_comments/config', 'better_disqus_comments_panel_config', 10 );

if ( ! function_exists( 'better_disqus_comments_panel_config' ) ) {
	/**
	 * Callback: Init's BF options
	 *
	 * @param $panel
	 *
	 * @return array
	 */
	function better_disqus_comments_panel_config( $panel ) {

		include Better_Disqus_Comments::dir_path( 'includes/options/panel-config.php' );

		return $panel;
	} // better_disqus_comments_panel_config
}


add_filter( 'better-framework/panel/better_disqus_comments/std', 'better_disqus_comments_panel_std', 10 );

if ( ! function_exists( 'better_disqus_comments_panel_std' ) ) {
	/**
	 * Callback: Init's BF options
	 *
	 * Filter: better-framework/panel/options
	 *
	 * @param $fields
	 *
	 * @return array
	 */
	function better_disqus_comments_panel_std( $fields ) {

		$field['shortname'] = array(
			'std' => '',
		);

		return $fields;
	}
}


add_filter( 'better-framework/panel/better_disqus_comments/fields', 'better_disqus_comments_panel_fields', 10 );

if ( ! function_exists( 'better_disqus_comments_panel_fields' ) ) {
	/**
	 * Callback: Init's BF options
	 *
	 * Filter: better-framework/panel/options
	 *
	 * @param $fields
	 *
	 * @return array
	 */
	function better_disqus_comments_panel_fields( $fields ) {

		$fields['shortname'] = array(
			'name' => __( 'Site Shortname', 'better-studio' ),
			'id'   => 'shortname',
			'desc' => __( 'Enter the shortname for your website. This is generated in your Disqus account.', 'better-studio' ),
			'type' => 'text',
			'std'  => '',
		);

		return $fields;
	}
}
<?php
/*
Plugin Name: Smart Thumbnails
Plugin URI: http://betterstudio.com
Description: Create Better and Smarter Thumbnails.
Version: 1.0.0
Author: BetterStudio
Author URI: http://betterstudio.com
License: GPL2
Requires at least: 4.5.0
*/

/**
 * Better_Smart_Thumbnails class wrapper
 *
 * @return Better_Smart_Thumbnails
 */
function Better_Smart_Thumbnails() {

	return Better_Smart_Thumbnails::self();
}

// Fire up the plugin
Better_Smart_Thumbnails();


/**
 * Better Comments Functionality
 */
class Better_Smart_Thumbnails {

	/**
	 * @var array
	 */
	protected $focus_point = array();

	/**
	 * Current plugin version number
	 *
	 * @var string
	 */
	public static $version = '1.0.0';


	/**
	 * Contains BR option panel id
	 *
	 * @var string
	 */
	public static $panel_id = 'smart-thumbnails';

	/**
	 * Inner array of instances
	 *
	 * @var array
	 */
	protected static $instances = array();


	/**
	 * Initialize!
	 */
	function __construct() {

		// make sure following code only one time run
		static $initialized;

		if ( $initialized ) {
			return;
		} else {
			$initialized = TRUE;
		}

		add_action( 'better-framework/after_setup', array( $this, 'init' ) );

		// Includes BF loader if not included before
		include self::dir_path( 'includes/libs/better-framework/init.php' );

		// Add option panel
		include $this->dir_path( 'includes/options/panel.php' );

		// Register included BF to loader
		add_filter( 'better-framework/loader', array( $this, 'better_framework_loader' ) );

		// Enable needed sections
		add_filter( 'better-framework/sections', array( $this, 'setup_bf_features' ), 50 );

		add_filter( 'better-framework/oculus/logger/turn-off', array( $this, 'oculus_logger' ), 22, 3 );
	}


	/**
	 * Used for accessing plugin directory URL
	 *
	 * @param string $address
	 *
	 * @return string
	 */
	public static function dir_url( $address = '' ) {

		static $url;

		if ( is_null( $url ) ) {
			$url = trailingslashit( plugin_dir_url( __FILE__ ) );
		}

		return $url . ltrim( $address, '/' );
	}


	/**
	 * Used for accessing plugin directory path
	 *
	 * @param string $address
	 *
	 * @return string
	 */
	public static function dir_path( $address = '' ) {

		static $path;

		if ( is_null( $path ) ) {
			$path = trailingslashit( plugin_dir_path( __FILE__ ) );
		}

		return $path . ltrim( $address, '/' );
	}


	/**
	 * Returns current version
	 *
	 * @return string
	 */
	public static function get_version() {

		return self::$version;
	}


	/**
	 * Used for retrieving options simply and safely for next versions
	 *
	 * @param string $option_key
	 *
	 * @return mixed|null
	 */
	public static function get_option( $option_key ) {

		return bf_get_option( $option_key, self::$panel_id );
	}


	/**
	 * Build the required object instance
	 *
	 * @param string $object
	 * @param bool   $fresh
	 * @param bool   $just_include
	 *
	 * @return self|null
	 */
	public static function factory( $object = 'self', $fresh = FALSE, $just_include = FALSE ) {

		if ( isset( self::$instances[ $object ] ) && ! $fresh ) {
			return self::$instances[ $object ];
		}

		switch ( $object ) {

			/**
			 * Main Better_Smart_Thumbnails Class
			 */
			case 'self':
				$class = 'Better_Smart_Thumbnails';
				break;
		}


		// Just prepare/includes files
		if ( $just_include ) {
			return NULL;
		}

		// don't cache fresh objects
		if ( $fresh ) {
			return new $class;
		}

		self::$instances[ $object ] = new $class;

		return self::$instances[ $object ];
	}


	/**
	 * Used for accessing alive instance class
	 *
	 * @since 1.0
	 *
	 * @return Better_Smart_Thumbnails
	 */
	public static function self() {

		return self::factory();
	}


	/**
	 * @hooked better-framework/after_setup
	 *
	 * @since  1.0.0
	 */
	public function init() {

		if ( ! self::get_option( 'enable' ) ) {
			return;
		}

		// Enqueue assets
		add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts_admin' ) );

		add_filter( 'image_resize_dimensions', array( $this, 'resize_dimensions' ), 100, 6 );

		// Do not crop medium image size because it will show for preview image on `Featured Image` modal
		add_filter( 'pre_option_medium_crop', '__return_false', 99 );

		add_filter( 'attachment_fields_to_edit', array( $this, 'pass_data2_media_modal' ), 30, 2 );

		add_action( 'wp_ajax_bt-regenerate-thumbnails', array( $this, 'ajax_get_crop_image_data' ) );
		add_action( 'wp_ajax_bt-preview-thumbnails', array( $this, 'ajax_get_preview_image_data' ) );

		if ( self::get_option( 'force-clear-cache' ) ) {

			add_filter( 'wp_get_attachment_metadata', array( $this, 'append_time2images' ) );

		}
	}


	/**
	 * Adds included BetterFramework to loader
	 *
	 * @param $frameworks
	 *
	 * @since 1.0.0
	 * @return array
	 */
	function better_framework_loader( $frameworks ) {

		$frameworks[] = array(
			'version' => '3.9.0',
			'path'    => self::dir_path( 'includes/libs/better-framework/' ),
			'uri'     => self::dir_url( 'includes/libs/better-framework/' ),
		);

		return $frameworks;
	}


	/**
	 * Setups features of BetterFramework
	 *
	 * @param array $features
	 *
	 * @since 1.0.0
	 * @return array
	 */
	function setup_bf_features( $features ) {

		$features['admin_panel'] = TRUE;

		return $features;
	}


	/**
	 * @param int $attachment_id
	 *
	 * @since    1.0.0
	 * @return array
	 */
	protected function delete_useless_thumbnails( $attachment_id ) {

		if ( ! class_exists( 'ST_CleanUp_Thumbnail' ) ) {

			require self::dir_path( 'includes/class-st-cleanup-thumbnails.php' );
		}

		$cleanup = new ST_CleanUp_Thumbnail( $attachment_id );

		$cleanup->cleanup();
	}


	/**
	 * @hooked wp_ajax_bt-regenerate-thumbnails
	 *
	 * @since  1.0.0
	 */
	public function ajax_get_crop_image_data() {

		if ( empty( $_REQUEST['thumbnail_id'] ) || ! isset( $_REQUEST['focus_x'] ) || ! isset( $_REQUEST['focus_y'] ) ) {
			return;
		}

		$attachment_id = intval( $_REQUEST['thumbnail_id'] );

		check_ajax_referer( $this->get_nonce_key( $attachment_id ), 'nonce' );

		$focus_x = intval( $_REQUEST['focus_x'] ) / 100;
		$focus_y = intval( $_REQUEST['focus_y'] ) / 100;

		// Validate x, y values

		if ( ! ( $focus_x >= 0 && $focus_x <= 1 ) ) {
			return;
		}

		if ( ! ( $focus_y >= 0 && $focus_y <= 1 ) ) {
			return;
		}

		$this->focus_point = array( $focus_x, $focus_y );

		$this->set_focus_point( $attachment_id, $focus_x, $focus_y );

		$metadata = wp_generate_attachment_metadata( $attachment_id, get_attached_file( $attachment_id ) );
		//
		$metadata['bt-time'] = time();

		wp_update_attachment_metadata( $attachment_id, $metadata );

		if ( self::get_option( 'delete-unused-thumbnail' ) ) {
			$this->delete_useless_thumbnails( $attachment_id );
		}

		wp_send_json_success( array( 'message' => __( 'All thumbnails has been successfully generated.', 'smart-thumbnails' ) ) );
	}


	/**
	 * @hooked wp_ajax_bt-preview-thumbnails
	 *
	 * @since  1.0.0
	 */
	public function ajax_get_preview_image_data() {

		if ( empty( $_REQUEST['thumbnail_id'] ) ) {
			return;
		}

		$attachment_id = intval( $_REQUEST['thumbnail_id'] );

		check_ajax_referer( $this->get_nonce_key( $attachment_id ), 'nonce' );

		$data = array();

		$data['l10n'] = array(
			'all_l10n' => __( 'All', 'smart-thumbnails' ),
			'header'   => __( 'Preview Cropped Images', 'smart-thumbnails' ),
		);

		$data['images'] = array();

		$metadata = wp_get_attachment_metadata( $attachment_id );

		if ( ! empty( $metadata['sizes'] ) ) {

			$base_url = wp_upload_dir();
			$base_url = $base_url['baseurl'];
			$sub_dir  = dirname( $metadata['file'] );


			foreach ( $metadata['sizes'] as $id => $size ) {

				$file = $size['file'];

				array_push( $data['images'], array(
					'id'    => $id,
					'img'   => "$base_url/$sub_dir/$file",
					'label' => ucwords( str_replace( array( '-', '_' ), ' ', $id ) ),
				) );
			}
		}

		wp_send_json_success( compact( 'data' ) );
	}


	/**
	 *
	 * @param array   $form_fields An array of attachment form fields.
	 * @param WP_Post $post        The WP_Post attachment object.
	 *
	 * @since 1.0.0
	 * @return array
	 */
	public function pass_data2_media_modal( $form_fields, $post ) {

		$nonce             = sprintf( '<input value="%s" class="bt-regenerate-nonce" type="hidden">', esc_attr( $this->get_nonce( $post->ID ) ) );
		$saved_focus_point = sprintf( '<input value="%s" class="bt-focus-point-xy" type="hidden">', esc_attr( $this->get_focus_point( $post->ID ) ) );


		$form_fields['bt-regenerate-nonce'] = array(
			'show_in_edit' => FALSE,
			'tr'           => $nonce . $saved_focus_point,
		);

		return $form_fields;
	}


	/**
	 * @param null|mixed $null   Whether to preempt output of the resize dimensions.
	 * @param int        $orig_w Original width in pixels.
	 * @param int        $orig_h Original height in pixels.
	 * @param int        $dest_w New width in pixels.
	 * @param int        $dest_h New height in pixels.
	 * @param bool|array $crop   Whether to crop image to specified width and height or resize.
	 *
	 * @return array
	 */
	function resize_dimensions( $null, $orig_w, $orig_h, $dest_w, $dest_h, $crop ) {

		if ( ! $crop ) {
			return $null;
		}

		$is_portrait = ( $orig_w + ( $orig_h * 0.14 ) ) < $orig_h;

		if ( $is_portrait && empty( $this->focus_point ) ) {

			if ( Better_Smart_Thumbnails::get_option( 'portrait-default-top' ) ) {
				$this->focus_point = array( 0.5, 0 );
			}
		}

		if ( empty( $this->focus_point ) ) {
			return $null;
		}

		if ( ! self::get_option( 'enlarge-smaller' ) ) {

			$dest_w = min( $dest_w, $orig_w );
			$dest_h = min( $dest_h, $orig_h );
		}

		$dest_x     = $dest_y = 0;
		$size_ratio = max( $dest_w / $orig_w, $dest_h / $orig_h );

		$crop_w = round( $dest_w / $size_ratio );
		$crop_h = round( $dest_h / $size_ratio );

		$s_x = floor( ( $orig_w - $crop_w ) * $this->focus_point[0] );
		$s_y = floor( ( $orig_h - $crop_h ) * $this->focus_point[1] );

		// The canvas is the same as the resulting image.
		$dst_canvas_w = $dest_w;
		$dst_canvas_h = $dest_h;

		if (
			$dest_w >= $orig_w &&
			$dest_h >= $orig_h
		) {
			return $null;
		}

		return array(
			(int) $dest_x,
			(int) $dest_y,
			(int) $s_x,
			(int) $s_y,
			(int) $dest_w,
			(int) $dest_h,
			(int) $crop_w,
			(int) $crop_h,
			(int) $dst_canvas_w,
			(int) $dst_canvas_h
		);
	}


	/**
	 * @param int $thumbnail_id
	 *
	 * @since 1.0.0
	 * @return string
	 */
	public function get_nonce( $thumbnail_id ) {

		return wp_create_nonce( $this->get_nonce_key( $thumbnail_id ) );
	}


	/**
	 * @param int $thumbnail_id
	 *
	 * @since 1.0.0
	 * @return string
	 */
	public function get_nonce_key( $thumbnail_id ) {

		return sprintf( 'ajax-protect-%d', $thumbnail_id );
	}


	/**
	 * Used for registering scripts in admin area
	 *
	 * @hooked admin_enqueue_scripts
	 *
	 * @since  1.0.0
	 */
	public function enqueue_scripts_admin() {

		bf_enqueue_script(
			'smart-thumbnails',
			bf_append_suffix( self::dir_url( '/assets/js/better-smart-thumbnails' ), '.js' ),
			array(),
			bf_append_suffix( self::dir_path( '/assets/js/better-smart-thumbnails' ), '.js' ),
			self::$version
		);

		bf_enqueue_style(
			'smart-thumbnails',
			bf_append_suffix( self::dir_url( '/assets/css/better-smart-thumbnails' ), '.css' ),
			array(),
			bf_append_suffix( self::dir_path( '/assets/css/better-smart-thumbnails' ), '.css' ),
			self::$version
		);

		$this->localize_script();
	}


	/**
	 * Print localization vars.
	 *
	 * @hooked wp_enqueue_scripts
	 *
	 * @since  1.0.0
	 */
	public function localize_script() {

		bf_localize_script( 'smart-thumbnails', 'st_loc', array(

			'translate' => array(
				'preview' => __( 'Preview Images', 'smart-thumbnails' ),
			),

			'grid'                 => (bool) self::get_option( 'grid' ),
			'default_fp'           => $this->default_focus_point(),
			'portrait_default_top' => (booL) Better_Smart_Thumbnails::get_option( 'portrait-default-top' ),
		) );
	}


	/**
	 * Enable Oculus error logging system for plugin
	 *
	 * @hooked better-framework/oculus/logger/filter
	 *
	 * @access private
	 *
	 * @param boolean $bool previous value
	 * @param string  $product_dir
	 * @param string  $type_dir
	 *
	 * @return bool true if error belongs to plugin, previous value otherwise.
	 */
	public function oculus_logger( $bool, $product_dir, $type_dir ) {

		if ( $type_dir === 'plugins' && $product_dir === 'smart-thumbnails' ) {
			return FALSE;
		}

		return $bool;
	}


	/**
	 * @hooked wp_get_attachment_metadata
	 *
	 * @param array|bool $data    Array of meta data for the given attachment, or false
	 *                            if the object does not exist.
	 *
	 * @since  1.0.0
	 * @return array|bool
	 */
	public function append_time2images( $data ) {

		if ( ! $data || empty( $data['bt-time'] ) ) {

			return $data;
		}

		$time         = $data['bt-time'];
		$data['file'] .= '?' . $time;

		if ( ! empty( $data['sizes'] ) ) {

			$sizes = array();

			foreach ( $data['sizes'] as $size => $info ) {

				$info['file'] .= '?' . $time;

				$sizes[ $size ] = $info;
			}

			$data['sizes'] = $sizes;
		}

		return $data;
	}


	/**
	 * Save attachment image focus point
	 *
	 * @param int $attachment_id
	 * @param int $focus_x
	 * @param int $focus_y
	 *
	 * @since 1.0.0
	 * @return bool
	 */
	public function set_focus_point( $attachment_id, $focus_x, $focus_y ) {

		return (bool) update_post_meta( $attachment_id, 'bt-focus-point', "$focus_x-$focus_y" );
	}


	/**
	 * Save attachment image focus point
	 *
	 * @param int $attachment_id
	 *
	 * @since 1.0.0
	 * @return string "x-y" on success
	 */
	public function get_focus_point( $attachment_id ) {

		return get_post_meta( $attachment_id, 'bt-focus-point', TRUE );
	}


	/**
	 * Get default image focus point.
	 *
	 * @since 1.0.0
	 * @return array x,y in position values in 0-1 range
	 */
	public function default_focus_point() {

		list( $y_position_name, $x_position_name ) = explode( '-', self::get_option( 'default-focus-point' ), 2 );

		$location_percentage = array(

			'x' => array(
				'left'   => 0.165,
				'center' => 0.5,
				'right'  => 0.835,
			),

			'y' => array(
				'top'    => 0.165,
				'center' => 0.5,
				'bottom' => 0.835,
			),
		);

		if ( isset( $location_percentage['y'][ $y_position_name ] ) && isset( $location_percentage['x'][ $x_position_name ] ) ) {

			return array(
				$location_percentage['x'][ $x_position_name ],
				$location_percentage['y'][ $y_position_name ]
			);
		}

		return array( 50, 50 );
	}
}
var elixir = require('laravel-elixir');

elixir.config.publicDir = 'assets';
elixir.config.publicPath = 'assets';
elixir.config.assetsPath = '';
elixir.config.js.folder = '';
elixir.config.css.folder = '';
Elixir.inProduction = true;

elixir(function (mix) {

    var suffix = Elixir.inProduction ? '.min' : '';

    mix.scripts(getJsList(), 'assets/js/better-smart-thumbnails' + suffix + '.js');
    mix.styles(getCssList(), 'assets/css/better-smart-thumbnails' + suffix + '.css');
});


function getJsList() {

    return ['assets/js/.before-concat.txt'].concat(require('./assets/js/list.js')).concat('assets/js/.after-concat.txt');
}

function getCssList() {

    return require('./assets/css/list.js');
}
{
  "requires": true,
  "lockfileVersion": 1,
  "dependencies": {
    "@gulp-sourcemaps/map-sources": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz",
      "integrity": "sha1-iQrnxdjId/bThIYCFazp1+yUW9o=",
      "requires": {
        "normalize-path": "2.1.1",
        "through2": "2.0.3"
      }
    },
    "abbrev": {
      "version": "1.1.1",
      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
    },
    "accord": {
      "version": "0.28.0",
      "resolved": "https://registry.npmjs.org/accord/-/accord-0.28.0.tgz",
      "integrity": "sha512-sPF34gqHegaCSryKf5wHJ8wREK1dTZnHmC9hsB7D8xjntRdd30DXDPKf0YVIcSvnXJmcYu5SCvZRz28H++kFhQ==",
      "requires": {
        "convert-source-map": "1.5.1",
        "glob": "7.1.2",
        "indx": "0.2.3",
        "lodash.clone": "4.5.0",
        "lodash.defaults": "4.2.0",
        "lodash.flatten": "4.4.0",
        "lodash.merge": "4.6.1",
        "lodash.partialright": "4.2.1",
        "lodash.pick": "4.4.0",
        "lodash.uniq": "4.5.0",
        "resolve": "1.7.1",
        "semver": "5.5.0",
        "uglify-js": "2.8.29",
        "when": "3.7.8"
      },
      "dependencies": {
        "glob": {
          "version": "7.1.2",
          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
          "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
          "requires": {
            "fs.realpath": "1.0.0",
            "inflight": "1.0.6",
            "inherits": "2.0.3",
            "minimatch": "3.0.4",
            "once": "1.3.3",
            "path-is-absolute": "1.0.1"
          }
        },
        "minimatch": {
          "version": "3.0.4",
          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
          "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
          "requires": {
            "brace-expansion": "1.1.11"
          }
        },
        "semver": {
          "version": "5.5.0",
          "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
          "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA=="
        }
      }
    },
    "acorn": {
      "version": "4.0.13",
      "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
      "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c="
    },
    "ajv": {
      "version": "4.11.8",
      "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
      "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
      "requires": {
        "co": "4.6.0",
        "json-stable-stringify": "1.0.1"
      }
    },
    "align-text": {
      "version": "0.1.4",
      "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
      "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
      "requires": {
        "kind-of": "3.2.2",
        "longest": "1.0.1",
        "repeat-string": "1.6.1"
      },
      "dependencies": {
        "kind-of": {
          "version": "3.2.2",
          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
          "requires": {
            "is-buffer": "1.1.6"
          }
        }
      }
    },
    "amdefine": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
      "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
    },
    "ansi-cyan": {
      "version": "0.1.1",
      "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz",
      "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=",
      "requires": {
        "ansi-wrap": "0.1.0"
      }
    },
    "ansi-gray": {
      "version": "0.1.1",
      "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
      "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
      "requires": {
        "ansi-wrap": "0.1.0"
      }
    },
    "ansi-red": {
      "version": "0.1.1",
      "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz",
      "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=",
      "requires": {
        "ansi-wrap": "0.1.0"
      }
    },
    "ansi-regex": {
      "version": "2.1.1",
      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
    },
    "ansi-styles": {
      "version": "2.2.1",
      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
      "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
    },
    "ansi-wrap": {
      "version": "0.1.0",
      "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
      "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768="
    },
    "ansicolors": {
      "version": "0.2.1",
      "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.2.1.tgz",
      "integrity": "sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8="
    },
    "aproba": {
      "version": "1.2.0",
      "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
      "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
    },
    "archy": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
      "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA="
    },
    "are-we-there-yet": {
      "version": "1.1.4",
      "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz",
      "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=",
      "requires": {
        "delegates": "1.0.0",
        "readable-stream": "2.3.6"
      },
      "dependencies": {
        "isarray": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
        },
        "readable-stream": {
          "version": "2.3.6",
          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
          "requires": {
            "core-util-is": "1.0.2",
            "inherits": "2.0.3",
            "isarray": "1.0.0",
            "process-nextick-args": "2.0.0",
            "safe-buffer": "5.1.2",
            "string_decoder": "1.1.1",
            "util-deprecate": "1.0.2"
          }
        },
        "string_decoder": {
          "version": "1.1.1",
          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
          "requires": {
            "safe-buffer": "5.1.2"
          }
        }
      }
    },
    "arr-diff": {
      "version": "4.0.0",
      "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
      "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
    },
    "arr-flatten": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
      "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg=="
    },
    "arr-union": {
      "version": "3.1.0",
      "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
      "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ="
    },
    "array-differ": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz",
      "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE="
    },
    "array-each": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
      "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8="
    },
    "array-find-index": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
      "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E="
    },
    "array-slice": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
      "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w=="
    },
    "array-union": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
      "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
      "requires": {
        "array-uniq": "1.0.3"
      }
    },
    "array-uniq": {
      "version": "1.0.3",
      "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
      "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY="
    },
    "array-unique": {
      "version": "0.3.2",
      "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
      "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
    },
    "arrify": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
      "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0="
    },
    "asap": {
      "version": "2.0.6",
      "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
      "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
      "optional": true
    },
    "asn1": {
      "version": "0.2.3",
      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
      "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y="
    },
    "assert-plus": {
      "version": "0.2.0",
      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
      "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ="
    },
    "assign-symbols": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
      "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c="
    },
    "async": {
      "version": "1.5.2",
      "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
      "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo="
    },
    "async-done": {
      "version": "1.3.1",
      "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.1.tgz",
      "integrity": "sha512-R1BaUeJ4PMoLNJuk+0tLJgjmEqVsdN118+Z8O+alhnQDQgy0kmD5Mqi0DNEmMx2LM0Ed5yekKu+ZXYvIHceicg==",
      "requires": {
        "end-of-stream": "1.4.1",
        "once": "1.3.3",
        "process-nextick-args": "1.0.7",
        "stream-exhaust": "1.0.2"
      },
      "dependencies": {
        "end-of-stream": {
          "version": "1.4.1",
          "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
          "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
          "requires": {
            "once": "1.4.0"
          },
          "dependencies": {
            "once": {
              "version": "1.4.0",
              "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
              "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
              "requires": {
                "wrappy": "1.0.2"
              }
            }
          }
        },
        "process-nextick-args": {
          "version": "1.0.7",
          "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
          "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
        }
      }
    },
    "async-foreach": {
      "version": "0.1.3",
      "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
      "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI="
    },
    "asynckit": {
      "version": "0.4.0",
      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
    },
    "atob": {
      "version": "2.1.1",
      "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz",
      "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio="
    },
    "autoprefixer": {
      "version": "6.7.7",
      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz",
      "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=",
      "requires": {
        "browserslist": "1.7.7",
        "caniuse-db": "1.0.30000840",
        "normalize-range": "0.1.2",
        "num2fraction": "1.2.2",
        "postcss": "5.2.18",
        "postcss-value-parser": "3.3.0"
      }
    },
    "aws-sign2": {
      "version": "0.6.0",
      "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
      "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8="
    },
    "aws4": {
      "version": "1.7.0",
      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz",
      "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w=="
    },
    "balanced-match": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
    },
    "base": {
      "version": "0.11.2",
      "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
      "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
      "requires": {
        "cache-base": "1.0.1",
        "class-utils": "0.3.6",
        "component-emitter": "1.2.1",
        "define-property": "1.0.0",
        "isobject": "3.0.1",
        "mixin-deep": "1.3.1",
        "pascalcase": "0.1.1"
      },
      "dependencies": {
        "define-property": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
          "requires": {
            "is-descriptor": "1.0.2"
          }
        },
        "is-accessor-descriptor": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
          "requires": {
            "kind-of": "6.0.2"
          }
        },
        "is-data-descriptor": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
          "requires": {
            "kind-of": "6.0.2"
          }
        },
        "is-descriptor": {
          "version": "1.0.2",
          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
          "requires": {
            "is-accessor-descriptor": "1.0.0",
            "is-data-descriptor": "1.0.0",
            "kind-of": "6.0.2"
          }
        }
      }
    },
    "bcrypt-pbkdf": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
      "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
      "optional": true,
      "requires": {
        "tweetnacl": "0.14.5"
      }
    },
    "beeper": {
      "version": "1.1.1",
      "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz",
      "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak="
    },
    "bl": {
      "version": "1.2.2",
      "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz",
      "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==",
      "requires": {
        "readable-stream": "2.3.6",
        "safe-buffer": "5.1.2"
      },
      "dependencies": {
        "isarray": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
        },
        "readable-stream": {
          "version": "2.3.6",
          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
          "requires": {
            "core-util-is": "1.0.2",
            "inherits": "2.0.3",
            "isarray": "1.0.0",
            "process-nextick-args": "2.0.0",
            "safe-buffer": "5.1.2",
            "string_decoder": "1.1.1",
            "util-deprecate": "1.0.2"
          }
        },
        "string_decoder": {
          "version": "1.1.1",
          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
          "requires": {
            "safe-buffer": "5.1.2"
          }
        }
      }
    },
    "block-stream": {
      "version": "0.0.9",
      "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
      "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
      "requires": {
        "inherits": "2.0.3"
      }
    },
    "boom": {
      "version": "2.10.1",
      "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
      "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
      "requires": {
        "hoek": "2.16.3"
      }
    },
    "brace-expansion": {
      "version": "1.1.11",
      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
      "requires": {
        "balanced-match": "1.0.0",
        "concat-map": "0.0.1"
      }
    },
    "braces": {
      "version": "2.3.2",
      "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
      "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
      "requires": {
        "arr-flatten": "1.1.0",
        "array-unique": "0.3.2",
        "extend-shallow": "2.0.1",
        "fill-range": "4.0.0",
        "isobject": "3.0.1",
        "repeat-element": "1.1.2",
        "snapdragon": "0.8.2",
        "snapdragon-node": "2.1.1",
        "split-string": "3.1.0",
        "to-regex": "3.0.2"
      },
      "dependencies": {
        "extend-shallow": {
          "version": "2.0.1",
          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
          "requires": {
            "is-extendable": "0.1.1"
          }
        }
      }
    },
    "browserslist": {
      "version": "1.7.7",
      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
      "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
      "requires": {
        "caniuse-db": "1.0.30000840",
        "electron-to-chromium": "1.3.45"
      }
    },
    "buffer-shims": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz",
      "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E="
    },
    "builtin-modules": {
      "version": "1.1.1",
      "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
      "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8="
    },
    "cache-base": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
      "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
      "requires": {
        "collection-visit": "1.0.0",
        "component-emitter": "1.2.1",
        "get-value": "2.0.6",
        "has-value": "1.0.0",
        "isobject": "3.0.1",
        "set-value": "2.0.0",
        "to-object-path": "0.3.0",
        "union-value": "1.0.0",
        "unset-value": "1.0.0"
      }
    },
    "camelcase": {
      "version": "1.2.1",
      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
      "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk="
    },
    "camelcase-keys": {
      "version": "2.1.0",
      "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
      "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
      "requires": {
        "camelcase": "2.1.1",
        "map-obj": "1.0.1"
      },
      "dependencies": {
        "camelcase": {
          "version": "2.1.1",
          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
          "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8="
        }
      }
    },
    "caniuse-db": {
      "version": "1.0.30000840",
      "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000840.tgz",
      "integrity": "sha1-aNWg8GlMkhgLDYLnINcPjmE2ZgQ="
    },
    "cardinal": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-1.0.0.tgz",
      "integrity": "sha1-UOIcGwqjdyn5N33vGWtanOyTLuk=",
      "requires": {
        "ansicolors": "0.2.1",
        "redeyed": "1.0.1"
      }
    },
    "caseless": {
      "version": "0.12.0",
      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
    },
    "center-align": {
      "version": "0.1.3",
      "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
      "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
      "requires": {
        "align-text": "0.1.4",
        "lazy-cache": "1.0.4"
      }
    },
    "chalk": {
      "version": "1.1.3",
      "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
      "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
      "requires": {
        "ansi-styles": "2.2.1",
        "escape-string-regexp": "1.0.5",
        "has-ansi": "2.0.0",
        "strip-ansi": "3.0.1",
        "supports-color": "2.0.0"
      }
    },
    "class-utils": {
      "version": "0.3.6",
      "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
      "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
      "requires": {
        "arr-union": "3.1.0",
        "define-property": "0.2.5",
        "isobject": "3.0.1",
        "static-extend": "0.1.2"
      },
      "dependencies": {
        "define-property": {
          "version": "0.2.5",
          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
          "requires": {
            "is-descriptor": "0.1.6"
          }
        }
      }
    },
    "clean-css": {
      "version": "3.4.28",
      "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz",
      "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=",
      "requires": {
        "commander": "2.8.1",
        "source-map": "0.4.4"
      },
      "dependencies": {
        "source-map": {
          "version": "0.4.4",
          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
          "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
          "requires": {
            "amdefine": "1.0.1"
          }
        }
      }
    },
    "cli-table": {
      "version": "0.3.1",
      "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz",
      "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=",
      "requires": {
        "colors": "1.0.3"
      }
    },
    "cli-usage": {
      "version": "0.1.7",
      "resolved": "https://registry.npmjs.org/cli-usage/-/cli-usage-0.1.7.tgz",
      "integrity": "sha512-x/Q52iLSZsRrRb2ePmTsVYXrGcrPQ8G4yRAY7QpMlumxAfPVrnDOH2X6Z5s8qsAX7AA7YuIi8AXFrvH0wWEesA==",
      "requires": {
        "marked": "0.3.19",
        "marked-terminal": "2.0.0"
      }
    },
    "cliui": {
      "version": "2.1.0",
      "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
      "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
      "requires": {
        "center-align": "0.1.3",
        "right-align": "0.1.3",
        "wordwrap": "0.0.2"
      }
    },
    "clone": {
      "version": "1.0.4",
      "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
      "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4="
    },
    "clone-buffer": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz",
      "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg="
    },
    "clone-stats": {
      "version": "0.0.1",
      "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz",
      "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE="
    },
    "cloneable-readable": {
      "version": "1.1.2",
      "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz",
      "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==",
      "requires": {
        "inherits": "2.0.3",
        "process-nextick-args": "2.0.0",
        "readable-stream": "2.3.6"
      },
      "dependencies": {
        "isarray": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
        },
        "readable-stream": {
          "version": "2.3.6",
          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
          "requires": {
            "core-util-is": "1.0.2",
            "inherits": "2.0.3",
            "isarray": "1.0.0",
            "process-nextick-args": "2.0.0",
            "safe-buffer": "5.1.2",
            "string_decoder": "1.1.1",
            "util-deprecate": "1.0.2"
          }
        },
        "string_decoder": {
          "version": "1.1.1",
          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
          "requires": {
            "safe-buffer": "5.1.2"
          }
        }
      }
    },
    "co": {
      "version": "4.6.0",
      "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
      "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
    },
    "code-point-at": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
    },
    "collection-visit": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
      "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
      "requires": {
        "map-visit": "1.0.0",
        "object-visit": "1.0.1"
      }
    },
    "color-convert": {
      "version": "1.9.1",
      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
      "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
      "requires": {
        "color-name": "1.1.3"
      }
    },
    "color-name": {
      "version": "1.1.3",
      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
    },
    "color-support": {
      "version": "1.1.3",
      "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
      "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg=="
    },
    "colors": {
      "version": "1.0.3",
      "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
      "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs="
    },
    "combined-stream": {
      "version": "1.0.6",
      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
      "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
      "requires": {
        "delayed-stream": "1.0.0"
      }
    },
    "commander": {
      "version": "2.8.1",
      "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz",
      "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=",
      "requires": {
        "graceful-readlink": "1.0.1"
      }
    },
    "component-emitter": {
      "version": "1.2.1",
      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
      "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY="
    },
    "concat-map": {
      "version": "0.0.1",
      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
    },
    "concat-with-sourcemaps": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz",
      "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==",
      "requires": {
        "source-map": "0.6.1"
      },
      "dependencies": {
        "source-map": {
          "version": "0.6.1",
          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
        }
      }
    },
    "console-control-strings": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
      "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
    },
    "convert-source-map": {
      "version": "1.5.1",
      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz",
      "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU="
    },
    "copy-descriptor": {
      "version": "0.1.1",
      "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
      "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
    },
    "core-util-is": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
    },
    "cross-spawn": {
      "version": "3.0.1",
      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
      "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
      "requires": {
        "lru-cache": "4.1.3",
        "which": "1.3.0"
      },
      "dependencies": {
        "lru-cache": {
          "version": "4.1.3",
          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz",
          "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==",
          "requires": {
            "pseudomap": "1.0.2",
            "yallist": "2.1.2"
          }
        }
      }
    },
    "cryptiles": {
      "version": "2.0.5",
      "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
      "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
      "requires": {
        "boom": "2.10.1"
      }
    },
    "css": {
      "version": "2.2.3",
      "resolved": "https://registry.npmjs.org/css/-/css-2.2.3.tgz",
      "integrity": "sha512-0W171WccAjQGGTKLhw4m2nnl0zPHUlTO/I8td4XzJgIB8Hg3ZZx71qT4G4eX8OVsSiaAKiUMy73E3nsbPlg2DQ==",
      "requires": {
        "inherits": "2.0.3",
        "source-map": "0.1.43",
        "source-map-resolve": "0.5.2",
        "urix": "0.1.0"
      },
      "dependencies": {
        "source-map": {
          "version": "0.1.43",
          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
          "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
          "requires": {
            "amdefine": "1.0.1"
          }
        }
      }
    },
    "currently-unhandled": {
      "version": "0.4.1",
      "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
      "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
      "requires": {
        "array-find-index": "1.0.2"
      }
    },
    "dashdash": {
      "version": "1.14.1",
      "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
      "requires": {
        "assert-plus": "1.0.0"
      },
      "dependencies": {
        "assert-plus": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
        }
      }
    },
    "dateformat": {
      "version": "2.2.0",
      "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz",
      "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI="
    },
    "deap": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/deap/-/deap-1.0.1.tgz",
      "integrity": "sha512-k75KYNZMvwAwes2xIPry/QTffXIchjD8QfABvvfTr80P85jv5ZcKqcoDo+vMe71nNnVnXYe8MA28weyqcf/DKw=="
    },
    "debug": {
      "version": "2.6.9",
      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
      "requires": {
        "ms": "2.0.0"
      }
    },
    "debug-fabulous": {
      "version": "0.0.4",
      "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-0.0.4.tgz",
      "integrity": "sha1-+gccXYdIRoVCSAdCHKSxawsaB2M=",
      "requires": {
        "debug": "2.6.9",
        "lazy-debug-legacy": "0.0.1",
        "object-assign": "4.1.0"
      },
      "dependencies": {
        "object-assign": {
          "version": "4.1.0",
          "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz",
          "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A="
        }
      }
    },
    "decamelize": {
      "version": "1.2.0",
      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
    },
    "decode-uri-component": {
      "version": "0.2.0",
      "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
      "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU="
    },
    "defaults": {
      "version": "1.0.3",
      "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
      "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
      "requires": {
        "clone": "1.0.4"
      }
    },
    "define-property": {
      "version": "2.0.2",
      "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
      "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
      "requires": {
        "is-descriptor": "1.0.2",
        "isobject": "3.0.1"
      },
      "dependencies": {
        "is-accessor-descriptor": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
          "requires": {
            "kind-of": "6.0.2"
          }
        },
        "is-data-descriptor": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
          "requires": {
            "kind-of": "6.0.2"
          }
        },
        "is-descriptor": {
          "version": "1.0.2",
          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
          "requires": {
            "is-accessor-descriptor": "1.0.0",
            "is-data-descriptor": "1.0.0",
            "kind-of": "6.0.2"
          }
        }
      }
    },
    "del": {
      "version": "2.2.2",
      "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
      "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
      "requires": {
        "globby": "5.0.0",
        "is-path-cwd": "1.0.0",
        "is-path-in-cwd": "1.0.1",
        "object-assign": "4.1.1",
        "pify": "2.3.0",
        "pinkie-promise": "2.0.1",
        "rimraf": "2.6.2"
      },
      "dependencies": {
        "object-assign": {
          "version": "4.1.1",
          "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
          "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
        }
      }
    },
    "delayed-stream": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
    },
    "delegates": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
      "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
    },
    "deprecated": {
      "version": "0.0.1",
      "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz",
      "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk="
    },
    "detect-file": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
      "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc="
    },
    "detect-newline": {
      "version": "2.1.0",
      "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz",
      "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I="
    },
    "duplexer2": {
      "version": "0.0.2",
      "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
      "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=",
      "requires": {
        "readable-stream": "1.1.14"
      }
    },
    "duplexify": {
      "version": "3.6.0",
      "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz",
      "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==",
      "requires": {
        "end-of-stream": "1.4.1",
        "inherits": "2.0.3",
        "readable-stream": "2.3.6",
        "stream-shift": "1.0.0"
      },
      "dependencies": {
        "end-of-stream": {
          "version": "1.4.1",
          "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
          "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
          "requires": {
            "once": "1.4.0"
          }
        },
        "isarray": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
        },
        "once": {
          "version": "1.4.0",
          "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
          "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
          "requires": {
            "wrappy": "1.0.2"
          }
        },
        "readable-stream": {
          "version": "2.3.6",
          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
          "requires": {
            "core-util-is": "1.0.2",
            "inherits": "2.0.3",
            "isarray": "1.0.0",
            "process-nextick-args": "2.0.0",
            "safe-buffer": "5.1.2",
            "string_decoder": "1.1.1",
            "util-deprecate": "1.0.2"
          }
        },
        "string_decoder": {
          "version": "1.1.1",
          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
          "requires": {
            "safe-buffer": "5.1.2"
          }
        }
      }
    },
    "ecc-jsbn": {
      "version": "0.1.1",
      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
      "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
      "optional": true,
      "requires": {
        "jsbn": "0.1.1"
      }
    },
    "electron-to-chromium": {
      "version": "1.3.45",
      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.45.tgz",
      "integrity": "sha1-RYrBscXHYM6IEaFtK/vZfsMLr7g="
    },
    "end-of-stream": {
      "version": "0.1.5",
      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz",
      "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=",
      "requires": {
        "once": "1.3.3"
      }
    },
    "errno": {
      "version": "0.1.7",
      "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
      "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
      "optional": true,
      "requires": {
        "prr": "1.0.1"
      }
    },
    "error-ex": {
      "version": "1.3.1",
      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
      "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
      "requires": {
        "is-arrayish": "0.2.1"
      }
    },
    "escape-string-regexp": {
      "version": "1.0.5",
      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
    },
    "esprima": {
      "version": "3.0.0",
      "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.0.0.tgz",
      "integrity": "sha1-U88kes2ncxPlUcOqLnM0LT+099k="
    },
    "expand-brackets": {
      "version": "2.1.4",
      "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
      "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
      "requires": {
        "debug": "2.6.9",
        "define-property": "0.2.5",
        "extend-shallow": "2.0.1",
        "posix-character-classes": "0.1.1",
        "regex-not": "1.0.2",
        "snapdragon": "0.8.2",
        "to-regex": "3.0.2"
      },
      "dependencies": {
        "define-property": {
          "version": "0.2.5",
          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
          "requires": {
            "is-descriptor": "0.1.6"
          }
        },
        "extend-shallow": {
          "version": "2.0.1",
          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
          "requires": {
            "is-extendable": "0.1.1"
          }
        }
      }
    },
    "expand-range": {
      "version": "1.8.2",
      "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
      "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
      "requires": {
        "fill-range": "2.2.4"
      },
      "dependencies": {
        "fill-range": {
          "version": "2.2.4",
          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
          "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
          "requires": {
            "is-number": "2.1.0",
            "isobject": "2.1.0",
            "randomatic": "3.0.0",
            "repeat-element": "1.1.2",
            "repeat-string": "1.6.1"
          }
        },
        "is-number": {
          "version": "2.1.0",
          "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
          "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
          "requires": {
            "kind-of": "3.2.2"
          }
        },
        "isarray": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
        },
        "isobject": {
          "version": "2.1.0",
          "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
          "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
          "requires": {
            "isarray": "1.0.0"
          }
        },
        "kind-of": {
          "version": "3.2.2",
          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
          "requires": {
            "is-buffer": "1.1.6"
          }
        }
      }
    },
    "expand-tilde": {
      "version": "2.0.2",
      "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
      "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
      "requires": {
        "homedir-polyfill": "1.0.1"
      }
    },
    "extend": {
      "version": "3.0.1",
      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
      "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ="
    },
    "extend-shallow": {
      "version": "3.0.2",
      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
      "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
      "requires": {
        "assign-symbols": "1.0.0",
        "is-extendable": "1.0.1"
      },
      "dependencies": {
        "is-extendable": {
          "version": "1.0.1",
          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
          "requires": {
            "is-plain-object": "2.0.4"
          }
        }
      }
    },
    "extglob": {
      "version": "2.0.4",
      "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
      "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
      "requires": {
        "array-unique": "0.3.2",
        "define-property": "1.0.0",
        "expand-brackets": "2.1.4",
        "extend-shallow": "2.0.1",
        "fragment-cache": "0.2.1",
        "regex-not": "1.0.2",
        "snapdragon": "0.8.2",
        "to-regex": "3.0.2"
      },
      "dependencies": {
        "define-property": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
          "requires": {
            "is-descriptor": "1.0.2"
          }
        },
        "extend-shallow": {
          "version": "2.0.1",
          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
          "requires": {
            "is-extendable": "0.1.1"
          }
        },
        "is-accessor-descriptor": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
          "requires": {
            "kind-of": "6.0.2"
          }
        },
        "is-data-descriptor": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
          "requires": {
            "kind-of": "6.0.2"
          }
        },
        "is-descriptor": {
          "version": "1.0.2",
          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
          "requires": {
            "is-accessor-descriptor": "1.0.0",
            "is-data-descriptor": "1.0.0",
            "kind-of": "6.0.2"
          }
        }
      }
    },
    "extsprintf": {
      "version": "1.3.0",
      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
    },
    "fancy-log": {
      "version": "1.3.2",
      "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz",
      "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=",
      "requires": {
        "ansi-gray": "0.1.1",
        "color-support": "1.1.3",
        "time-stamp": "1.1.0"
      }
    },
    "filename-regex": {
      "version": "2.0.1",
      "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
      "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY="
    },
    "fill-range": {
      "version": "4.0.0",
      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
      "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
      "requires": {
        "extend-shallow": "2.0.1",
        "is-number": "3.0.0",
        "repeat-string": "1.6.1",
        "to-regex-range": "2.1.1"
      },
      "dependencies": {
        "extend-shallow": {
          "version": "2.0.1",
          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
          "requires": {
            "is-extendable": "0.1.1"
          }
        }
      }
    },
    "find-index": {
      "version": "0.1.1",
      "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz",
      "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ="
    },
    "find-up": {
      "version": "1.1.2",
      "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
      "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
      "requires": {
        "path-exists": "2.1.0",
        "pinkie-promise": "2.0.1"
      }
    },
    "findup-sync": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
      "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
      "requires": {
        "detect-file": "1.0.0",
        "is-glob": "3.1.0",
        "micromatch": "3.1.10",
        "resolve-dir": "1.0.1"
      }
    },
    "fined": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz",
      "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=",
      "requires": {
        "expand-tilde": "2.0.2",
        "is-plain-object": "2.0.4",
        "object.defaults": "1.1.0",
        "object.pick": "1.3.0",
        "parse-filepath": "1.0.2"
      }
    },
    "first-chunk-stream": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz",
      "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04="
    },
    "flagged-respawn": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.0.tgz",
      "integrity": "sha1-Tnmumy6zi/hrO7Vr8+ClaqX8q9c="
    },
    "for-in": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA="
    },
    "for-own": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
      "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
      "requires": {
        "for-in": "1.0.2"
      }
    },
    "forever-agent": {
      "version": "0.6.1",
      "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
    },
    "fork-stream": {
      "version": "0.0.4",
      "resolved": "https://registry.npmjs.org/fork-stream/-/fork-stream-0.0.4.tgz",
      "integrity": "sha1-24Sfznf2cIpfjzhq5TOgkHtUrnA="
    },
    "form-data": {
      "version": "2.1.4",
      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
      "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
      "requires": {
        "asynckit": "0.4.0",
        "combined-stream": "1.0.6",
        "mime-types": "2.1.18"
      }
    },
    "fragment-cache": {
      "version": "0.2.1",
      "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
      "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
      "requires": {
        "map-cache": "0.2.2"
      }
    },
    "fs-exists-sync": {
      "version": "0.1.0",
      "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz",
      "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0="
    },
    "fs.realpath": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
    },
    "fstream": {
      "version": "1.0.11",
      "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
      "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
      "requires": {
        "graceful-fs": "4.1.11",
        "inherits": "2.0.3",
        "mkdirp": "0.5.1",
        "rimraf": "2.6.2"
      },
      "dependencies": {
        "graceful-fs": {
          "version": "4.1.11",
          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
          "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
        }
      }
    },
    "gauge": {
      "version": "2.7.4",
      "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
      "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
      "requires": {
        "aproba": "1.2.0",
        "console-control-strings": "1.1.0",
        "has-unicode": "2.0.1",
        "object-assign": "4.1.1",
        "signal-exit": "3.0.2",
        "string-width": "1.0.2",
        "strip-ansi": "3.0.1",
        "wide-align": "1.1.2"
      },
      "dependencies": {
        "object-assign": {
          "version": "4.1.1",
          "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
          "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
        }
      }
    },
    "gaze": {
      "version": "0.5.2",
      "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz",
      "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=",
      "requires": {
        "globule": "0.1.0"
      }
    },
    "generate-function": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz",
      "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ="
    },
    "generate-object-property": {
      "version": "1.2.0",
      "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
      "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
      "requires": {
        "is-property": "1.0.2"
      }
    },
    "get-caller-file": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
      "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U="
    },
    "get-stdin": {
      "version": "4.0.1",
      "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
      "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4="
    },
    "get-value": {
      "version": "2.0.6",
      "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
      "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg="
    },
    "getpass": {
      "version": "0.1.7",
      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
      "requires": {
        "assert-plus": "1.0.0"
      },
      "dependencies": {
        "assert-plus": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
        }
      }
    },
    "glob": {
      "version": "4.5.3",
      "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz",
      "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=",
      "requires": {
        "inflight": "1.0.6",
        "inherits": "2.0.3",
        "minimatch": "2.0.10",
        "once": "1.3.3"
      }
    },
    "glob-base": {
      "version": "0.3.0",
      "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
      "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
      "requires": {
        "glob-parent": "2.0.0",
        "is-glob": "2.0.1"
      },
      "dependencies": {
        "is-extglob": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
          "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA="
        },
        "is-glob": {
          "version": "2.0.1",
          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
          "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
          "requires": {
            "is-extglob": "1.0.0"
          }
        }
      }
    },
    "glob-parent": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
      "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
      "requires": {
        "is-glob": "2.0.1"
      },
      "dependencies": {
        "is-extglob": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
          "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA="
        },
        "is-glob": {
          "version": "2.0.1",
          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
          "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
          "requires": {
            "is-extglob": "1.0.0"
          }
        }
      }
    },
    "glob-stream": {
      "version": "3.1.18",
      "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz",
      "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=",
      "requires": {
        "glob": "4.5.3",
        "glob2base": "0.0.12",
        "minimatch": "2.0.10",
        "ordered-read-streams": "0.1.0",
        "through2": "0.6.5",
        "unique-stream": "1.0.0"
      },
      "dependencies": {
        "readable-stream": {
          "version": "1.0.34",
          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
          "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
          "requires": {
            "core-util-is": "1.0.2",
            "inherits": "2.0.3",
            "isarray": "0.0.1",
            "string_decoder": "0.10.31"
          }
        },
        "through2": {
          "version": "0.6.5",
          "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
          "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
          "requires": {
            "readable-stream": "1.0.34",
            "xtend": "4.0.1"
          }
        }
      }
    },
    "glob-watcher": {
      "version": "0.0.6",
      "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz",
      "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=",
      "requires": {
        "gaze": "0.5.2"
      }
    },
    "glob2base": {
      "version": "0.0.12",
      "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz",
      "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=",
      "requires": {
        "find-index": "0.1.1"
      }
    },
    "global-modules": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
      "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
      "requires": {
        "global-prefix": "1.0.2",
        "is-windows": "1.0.2",
        "resolve-dir": "1.0.1"
      }
    },
    "global-prefix": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
      "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
      "requires": {
        "expand-tilde": "2.0.2",
        "homedir-polyfill": "1.0.1",
        "ini": "1.3.5",
        "is-windows": "1.0.2",
        "which": "1.3.0"
      }
    },
    "globby": {
      "version": "5.0.0",
      "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
      "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
      "requires": {
        "array-union": "1.0.2",
        "arrify": "1.0.1",
        "glob": "7.1.2",
        "object-assign": "4.1.1",
        "pify": "2.3.0",
        "pinkie-promise": "2.0.1"
      },
      "dependencies": {
        "glob": {
          "version": "7.1.2",
          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
          "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
          "requires": {
            "fs.realpath": "1.0.0",
            "inflight": "1.0.6",
            "inherits": "2.0.3",
            "minimatch": "3.0.4",
            "once": "1.3.3",
            "path-is-absolute": "1.0.1"
          }
        },
        "minimatch": {
          "version": "3.0.4",
          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
          "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
          "requires": {
            "brace-expansion": "1.1.11"
          }
        },
        "object-assign": {
          "version": "4.1.1",
          "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
          "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
        }
      }
    },
    "globule": {
      "version": "0.1.0",
      "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz",
      "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=",
      "requires": {
        "glob": "3.1.21",
        "lodash": "1.0.2",
        "minimatch": "0.2.14"
      },
      "dependencies": {
        "glob": {
          "version": "3.1.21",
          "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz",
          "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=",
          "requires": {
            "graceful-fs": "1.2.3",
            "inherits": "1.0.2",
            "minimatch": "0.2.14"
          }
        },
        "graceful-fs": {
          "version": "1.2.3",
          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz",
          "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q="
        },
        "inherits": {
          "version": "1.0.2",
          "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz",
          "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js="
        },
        "minimatch": {
          "version": "0.2.14",
          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
          "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=",
          "requires": {
            "lru-cache": "2.7.3",
            "sigmund": "1.0.1"
          }
        }
      }
    },
    "glogg": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz",
      "integrity": "sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw==",
      "requires": {
        "sparkles": "1.0.1"
      }
    },
    "graceful-fs": {
      "version": "3.0.11",
      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz",
      "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=",
      "requires": {
        "natives": "1.1.3"
      }
    },
    "graceful-readlink": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
      "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU="
    },
    "growly": {
      "version": "1.3.0",
      "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
      "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE="
    },
    "gulp": {
      "version": "3.9.1",
      "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz",
      "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=",
      "requires": {
        "archy": "1.0.0",
        "chalk": "1.1.3",
        "deprecated": "0.0.1",
        "gulp-util": "3.0.8",
        "interpret": "1.1.0",
        "liftoff": "2.5.0",
        "minimist": "1.2.0",
        "orchestrator": "0.3.8",
        "pretty-hrtime": "1.0.3",
        "semver": "4.3.6",
        "tildify": "1.2.0",
        "v8flags": "2.1.1",
        "vinyl-fs": "0.3.14"
      }
    },
    "gulp-autoprefixer": {
      "version": "3.1.1",
      "resolved": "https://registry.npmjs.org/gulp-autoprefixer/-/gulp-autoprefixer-3.1.1.tgz",
      "integrity": "sha1-dSMAUc0NFxND14O36bXREg7u+bA=",
      "requires": {
        "autoprefixer": "6.7.7",
        "gulp-util": "3.0.8",
        "postcss": "5.2.18",
        "through2": "2.0.3",
        "vinyl-sourcemaps-apply": "0.2.1"
      }
    },
    "gulp-batch": {
      "version": "1.0.5",
      "resolved": "https://registry.npmjs.org/gulp-batch/-/gulp-batch-1.0.5.tgz",
      "integrity": "sha1-xA/JsjA2dIl7EhbYLhUYtzIX2lk=",
      "requires": {
        "async-done": "1.3.1",
        "stream-array": "1.1.2"
      }
    },
    "gulp-concat": {
      "version": "2.6.1",
      "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz",
      "integrity": "sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M=",
      "requires": {
        "concat-with-sourcemaps": "1.1.0",
        "through2": "2.0.3",
        "vinyl": "2.1.0"
      },
      "dependencies": {
        "clone": {
          "version": "2.1.1",
          "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz",
          "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs="
        },
        "clone-stats": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
          "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA="
        },
        "replace-ext": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
          "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs="
        },
        "vinyl": {
          "version": "2.1.0",
          "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz",
          "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=",
          "requires": {
            "clone": "2.1.1",
            "clone-buffer": "1.0.0",
            "clone-stats": "1.0.0",
            "cloneable-readable": "1.1.2",
            "remove-trailing-separator": "1.1.0",
            "replace-ext": "1.0.0"
          }
        }
      }
    },
    "gulp-if": {
      "version": "2.0.2",
      "resolved": "https://registry.npmjs.org/gulp-if/-/gulp-if-2.0.2.tgz",
      "integrity": "sha1-pJe351cwBQQcqivIt92jyARE1ik=",
      "requires": {
        "gulp-match": "1.0.3",
        "ternary-stream": "2.0.1",
        "through2": "2.0.3"
      }
    },
    "gulp-less": {
      "version": "3.5.0",
      "resolved": "https://registry.npmjs.org/gulp-less/-/gulp-less-3.5.0.tgz",
      "integrity": "sha512-FQLY7unaHdTOXG0jlwxeBQcWoPPrTMQZRA7HfYwSNi9IPVx5l7GJEN72mG4ri2yigp/f/VNGUAJnFMJHBmH3iw==",
      "requires": {
        "accord": "0.28.0",
        "less": "2.7.3",
        "object-assign": "4.1.1",
        "plugin-error": "0.1.2",
        "replace-ext": "1.0.0",
        "through2": "2.0.3",
        "vinyl-sourcemaps-apply": "0.2.1"
      },
      "dependencies": {
        "object-assign": {
          "version": "4.1.1",
          "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
          "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
        },
        "replace-ext": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
          "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs="
        }
      }
    },
    "gulp-load-plugins": {
      "version": "1.5.0",
      "resolved": "https://registry.npmjs.org/gulp-load-plugins/-/gulp-load-plugins-1.5.0.tgz",
      "integrity": "sha1-TEGffldk2aDjMGG6uWGPgbc9QXE=",
      "requires": {
        "array-unique": "0.2.1",
        "fancy-log": "1.3.2",
        "findup-sync": "0.4.3",
        "gulplog": "1.0.0",
        "has-gulplog": "0.1.0",
        "micromatch": "2.3.11",
        "resolve": "1.7.1"
      },
      "dependencies": {
        "arr-diff": {
          "version": "2.0.0",
          "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
          "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
          "requires": {
            "arr-flatten": "1.1.0"
          }
        },
        "array-unique": {
          "version": "0.2.1",
          "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
          "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM="
        },
        "braces": {
          "version": "1.8.5",
          "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
          "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
          "requires": {
            "expand-range": "1.8.2",
            "preserve": "0.2.0",
            "repeat-element": "1.1.2"
          }
        },
        "detect-file": {
          "version": "0.1.0",
          "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz",
          "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=",
          "requires": {
            "fs-exists-sync": "0.1.0"
          }
        },
        "expand-brackets": {
          "version": "0.1.5",
          "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
          "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
          "requires": {
            "is-posix-bracket": "0.1.1"
          }
        },
        "expand-tilde": {
          "version": "1.2.2",
          "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz",
          "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=",
          "requires": {
            "os-homedir": "1.0.2"
          }
        },
        "extglob": {
          "version": "0.3.2",
          "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
          "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
          "requires": {
            "is-extglob": "1.0.0"
          }
        },
        "findup-sync": {
          "version": "0.4.3",
          "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz",
          "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=",
          "requires": {
            "detect-file": "0.1.0",
            "is-glob": "2.0.1",
            "micromatch": "2.3.11",
            "resolve-dir": "0.1.1"
          }
        },
        "global-modules": {
          "version": "0.2.3",
          "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz",
          "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=",
          "requires": {
            "global-prefix": "0.1.5",
            "is-windows": "0.2.0"
          }
        },
        "global-prefix": {
          "version": "0.1.5",
          "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz",
          "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=",
          "requires": {
            "homedir-polyfill": "1.0.1",
            "ini": "1.3.5",
            "is-windows": "0.2.0",
            "which": "1.3.0"
          }
        },
        "is-extglob": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
          "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA="
        },
        "is-glob": {
          "version": "2.0.1",
          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
          "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
          "requires": {
            "is-extglob": "1.0.0"
          }
        },
        "is-windows": {
          "version": "0.2.0",
          "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz",
          "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw="
        },
        "kind-of": {
          "version": "3.2.2",
          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
          "requires": {
            "is-buffer": "1.1.6"
          }
        },
        "micromatch": {
          "version": "2.3.11",
          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
          "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
          "requires": {
            "arr-diff": "2.0.0",
            "array-unique": "0.2.1",
            "braces": "1.8.5",
            "expand-brackets": "0.1.5",
            "extglob": "0.3.2",
            "filename-regex": "2.0.1",
            "is-extglob": "1.0.0",
            "is-glob": "2.0.1",
            "kind-of": "3.2.2",
            "normalize-path": "2.1.1",
            "object.omit": "2.0.1",
            "parse-glob": "3.0.4",
            "regex-cache": "0.4.4"
          }
        },
        "resolve-dir": {
          "version": "0.1.1",
          "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz",
          "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=",
          "requires": {
            "expand-tilde": "1.2.2",
            "global-modules": "0.2.3"
          }
        }
      }
    },
    "gulp-match": {
      "version": "1.0.3",
      "resolved": "https://registry.npmjs.org/gulp-match/-/gulp-match-1.0.3.tgz",
      "integrity": "sha1-kcfA1/Kb7NZgbVfYCn+Hdqh6uo4=",
      "requires": {
        "minimatch": "3.0.4"
      },
      "dependencies": {
        "minimatch": {
          "version": "3.0.4",
          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
          "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
          "requires": {
            "brace-expansion": "1.1.11"
          }
        }
      }
    },
    "gulp-notify": {
      "version": "2.2.0",
      "resolved": "https://registry.npmjs.org/gulp-notify/-/gulp-notify-2.2.0.tgz",
      "integrity": "sha1-BGyChcKS6X7tThWgCcJsu+XO8TU=",
      "requires": {
        "gulp-util": "3.0.8",
        "lodash.template": "3.6.2",
        "node-notifier": "4.6.1",
        "node.extend": "1.1.6",
        "through2": "0.6.5"
      },
      "dependencies": {
        "readable-stream": {
          "version": "1.0.34",
          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
          "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
          "requires": {
            "core-util-is": "1.0.2",
            "inherits": "2.0.3",
            "isarray": "0.0.1",
            "string_decoder": "0.10.31"
          }
        },
        "through2": {
          "version": "0.6.5",
          "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
          "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
          "requires": {
            "readable-stream": "1.0.34",
            "xtend": "4.0.1"
          }
        }
      }
    },
    "gulp-rename": {
      "version": "1.2.2",
      "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.2.2.tgz",
      "integrity": "sha1-OtRCh2PwXidk3sHGfYaNsnVoeBc="
    },
    "gulp-rev": {
      "version": "7.1.2",
      "resolved": "https://registry.npmjs.org/gulp-rev/-/gulp-rev-7.1.2.tgz",
      "integrity": "sha1-XhfMIp9rRcdCVviK0/LT6aMwWCk=",
      "requires": {
        "gulp-util": "3.0.8",
        "modify-filename": "1.1.0",
        "object-assign": "4.1.1",
        "rev-hash": "1.0.0",
        "rev-path": "1.0.0",
        "sort-keys": "1.1.2",
        "through2": "2.0.3",
        "vinyl-file": "1.3.0"
      },
      "dependencies": {
        "object-assign": {
          "version": "4.1.1",
          "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
          "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
        }
      }
    },
    "gulp-rev-replace": {
      "version": "0.4.4",
      "resolved": "https://registry.npmjs.org/gulp-rev-replace/-/gulp-rev-replace-0.4.4.tgz",
      "integrity": "sha512-2yiDel/TGamn/HgHyo8H1rYEEL2zLsOYODerItoX8batOo0gPAe7uX7t6NlaqB7FEHpS5tGzUr5CKUEmrgdHyQ==",
      "requires": {
        "plugin-error": "0.1.2",
        "through2": "2.0.3"
      }
    },
    "gulp-sass": {
      "version": "3.2.1",
      "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-3.2.1.tgz",
      "integrity": "sha512-UATbRpSDsyXCnpYSPBUEvdvtSEzksJs7/oQ0CujIpzKqKrO6vlnYwhX2UTsGrf4rNLwqlSSaM271It0uHYvJ3Q==",
      "requires": {
        "gulp-util": "3.0.8",
        "lodash.clonedeep": "4.5.0",
        "node-sass": "4.9.0",
        "through2": "2.0.3",
        "vinyl-sourcemaps-apply": "0.2.1"
      },
      "dependencies": {
        "lodash.clonedeep": {
          "version": "4.5.0",
          "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
          "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8="
        }
      }
    },
    "gulp-shell": {
      "version": "0.5.2",
      "resolved": "https://registry.npmjs.org/gulp-shell/-/gulp-shell-0.5.2.tgz",
      "integrity": "sha1-pJWcoGUa0ce7/nCy0K27tOGuqY0=",
      "requires": {
        "async": "1.5.2",
        "gulp-util": "3.0.8",
        "lodash": "4.17.10",
        "through2": "2.0.3"
      },
      "dependencies": {
        "lodash": {
          "version": "4.17.10",
          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
          "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg=="
        }
      }
    },
    "gulp-sourcemaps": {
      "version": "1.12.1",
      "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.12.1.tgz",
      "integrity": "sha1-tDfR89mAzyboEYSCNxjOFa5ll7Y=",
      "requires": {
        "@gulp-sourcemaps/map-sources": "1.0.0",
        "acorn": "4.0.13",
        "convert-source-map": "1.5.1",
        "css": "2.2.3",
        "debug-fabulous": "0.0.4",
        "detect-newline": "2.1.0",
        "graceful-fs": "4.1.11",
        "source-map": "0.6.1",
        "strip-bom": "2.0.0",
        "through2": "2.0.3",
        "vinyl": "1.2.0"
      },
      "dependencies": {
        "graceful-fs": {
          "version": "4.1.11",
          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
          "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
        },
        "source-map": {
          "version": "0.6.1",
          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
        },
        "strip-bom": {
          "version": "2.0.0",
          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
          "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
          "requires": {
            "is-utf8": "0.2.1"
          }
        },
        "vinyl": {
          "version": "1.2.0",
          "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
          "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
          "requires": {
            "clone": "1.0.4",
            "clone-stats": "0.0.1",
            "replace-ext": "0.0.1"
          }
        }
      }
    },
    "gulp-uglify": {
      "version": "1.5.4",
      "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-1.5.4.tgz",
      "integrity": "sha1-UkeI2HZm0J+dDCH7IXf5ADmmWMk=",
      "requires": {
        "deap": "1.0.1",
        "fancy-log": "1.3.2",
        "gulp-util": "3.0.8",
        "isobject": "2.1.0",
        "through2": "2.0.3",
        "uglify-js": "2.6.4",
        "uglify-save-license": "0.4.1",
        "vinyl-sourcemaps-apply": "0.2.1"
      },
      "dependencies": {
        "async": {
          "version": "0.2.10",
          "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
          "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E="
        },
        "isarray": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
        },
        "isobject": {
          "version": "2.1.0",
          "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
          "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
          "requires": {
            "isarray": "1.0.0"
          }
        },
        "uglify-js": {
          "version": "2.6.4",
          "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.4.tgz",
          "integrity": "sha1-ZeovswWck5RpLxX+2HwrNsFrmt8=",
          "requires": {
            "async": "0.2.10",
            "source-map": "0.5.7",
            "uglify-to-browserify": "1.0.2",
            "yargs": "3.10.0"
          }
        }
      }
    },
    "gulp-util": {
      "version": "3.0.8",
      "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz",
      "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=",
      "requires": {
        "array-differ": "1.0.0",
        "array-uniq": "1.0.3",
        "beeper": "1.1.1",
        "chalk": "1.1.3",
        "dateformat": "2.2.0",
        "fancy-log": "1.3.2",
        "gulplog": "1.0.0",
        "has-gulplog": "0.1.0",
        "lodash._reescape": "3.0.0",
        "lodash._reevaluate": "3.0.0",
        "lodash._reinterpolate": "3.0.0",
        "lodash.template": "3.6.2",
        "minimist": "1.2.0",
        "multipipe": "0.1.2",
        "object-assign": "3.0.0",
        "replace-ext": "0.0.1",
        "through2": "2.0.3",
        "vinyl": "0.5.3"
      }
    },
    "gulplog": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
      "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=",
      "requires": {
        "glogg": "1.0.1"
      }
    },
    "har-schema": {
      "version": "1.0.5",
      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
      "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4="
    },
    "har-validator": {
      "version": "4.2.1",
      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
      "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=",
      "requires": {
        "ajv": "4.11.8",
        "har-schema": "1.0.5"
      }
    },
    "has-ansi": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
      "requires": {
        "ansi-regex": "2.1.1"
      }
    },
    "has-flag": {
      "version": "3.0.0",
      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
    },
    "has-gulplog": {
      "version": "0.1.0",
      "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz",
      "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=",
      "requires": {
        "sparkles": "1.0.1"
      }
    },
    "has-unicode": {
      "version": "2.0.1",
      "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
      "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
    },
    "has-value": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
      "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
      "requires": {
        "get-value": "2.0.6",
        "has-values": "1.0.0",
        "isobject": "3.0.1"
      }
    },
    "has-values": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
      "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
      "requires": {
        "is-number": "3.0.0",
        "kind-of": "4.0.0"
      },
      "dependencies": {
        "kind-of": {
          "version": "4.0.0",
          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
          "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
          "requires": {
            "is-buffer": "1.1.6"
          }
        }
      }
    },
    "hawk": {
      "version": "3.1.3",
      "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
      "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
      "requires": {
        "boom": "2.10.1",
        "cryptiles": "2.0.5",
        "hoek": "2.16.3",
        "sntp": "1.0.9"
      }
    },
    "hoek": {
      "version": "2.16.3",
      "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
      "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
    },
    "homedir-polyfill": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz",
      "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=",
      "requires": {
        "parse-passwd": "1.0.0"
      }
    },
    "hosted-git-info": {
      "version": "2.6.0",
      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz",
      "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw=="
    },
    "http-signature": {
      "version": "1.1.1",
      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
      "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
      "requires": {
        "assert-plus": "0.2.0",
        "jsprim": "1.4.1",
        "sshpk": "1.14.1"
      }
    },
    "image-size": {
      "version": "0.5.5",
      "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
      "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
      "optional": true
    },
    "in-publish": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz",
      "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E="
    },
    "indent-string": {
      "version": "2.1.0",
      "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
      "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
      "requires": {
        "repeating": "2.0.1"
      }
    },
    "indx": {
      "version": "0.2.3",
      "resolved": "https://registry.npmjs.org/indx/-/indx-0.2.3.tgz",
      "integrity": "sha1-Fdz1bunPZcAjTFE8J/vVgOcPvFA="
    },
    "inflight": {
      "version": "1.0.6",
      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
      "requires": {
        "once": "1.3.3",
        "wrappy": "1.0.2"
      }
    },
    "inherits": {
      "version": "2.0.3",
      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
    },
    "ini": {
      "version": "1.3.5",
      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
      "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
    },
    "interpret": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
      "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ="
    },
    "invert-kv": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
      "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
    },
    "is": {
      "version": "3.2.1",
      "resolved": "https://registry.npmjs.org/is/-/is-3.2.1.tgz",
      "integrity": "sha1-0Kwq1V63sL7JJqUmb2xmKqqD3KU="
    },
    "is-absolute": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
      "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
      "requires": {
        "is-relative": "1.0.0",
        "is-windows": "1.0.2"
      }
    },
    "is-accessor-descriptor": {
      "version": "0.1.6",
      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
      "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
      "requires": {
        "kind-of": "3.2.2"
      },
      "dependencies": {
        "kind-of": {
          "version": "3.2.2",
          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
          "requires": {
            "is-buffer": "1.1.6"
          }
        }
      }
    },
    "is-arrayish": {
      "version": "0.2.1",
      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
    },
    "is-buffer": {
      "version": "1.1.6",
      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
      "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
    },
    "is-builtin-module": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
      "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
      "requires": {
        "builtin-modules": "1.1.1"
      }
    },
    "is-data-descriptor": {
      "version": "0.1.4",
      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
      "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
      "requires": {
        "kind-of": "3.2.2"
      },
      "dependencies": {
        "kind-of": {
          "version": "3.2.2",
          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
          "requires": {
            "is-buffer": "1.1.6"
          }
        }
      }
    },
    "is-descriptor": {
      "version": "0.1.6",
      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
      "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
      "requires": {
        "is-accessor-descriptor": "0.1.6",
        "is-data-descriptor": "0.1.4",
        "kind-of": "5.1.0"
      },
      "dependencies": {
        "kind-of": {
          "version": "5.1.0",
          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
          "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
        }
      }
    },
    "is-dotfile": {
      "version": "1.0.3",
      "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
      "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE="
    },
    "is-equal-shallow": {
      "version": "0.1.3",
      "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
      "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
      "requires": {
        "is-primitive": "2.0.0"
      }
    },
    "is-extendable": {
      "version": "0.1.1",
      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
    },
    "is-extglob": {
      "version": "2.1.1",
      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
    },
    "is-finite": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
      "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
      "requires": {
        "number-is-nan": "1.0.1"
      }
    },
    "is-fullwidth-code-point": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
      "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
      "requires": {
        "number-is-nan": "1.0.1"
      }
    },
    "is-glob": {
      "version": "3.1.0",
      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
      "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
      "requires": {
        "is-extglob": "2.1.1"
      }
    },
    "is-my-ip-valid": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz",
      "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ=="
    },
    "is-my-json-valid": {
      "version": "2.17.2",
      "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz",
      "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==",
      "requires": {
        "generate-function": "2.0.0",
        "generate-object-property": "1.2.0",
        "is-my-ip-valid": "1.0.0",
        "jsonpointer": "4.0.1",
        "xtend": "4.0.1"
      }
    },
    "is-number": {
      "version": "3.0.0",
      "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
      "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
      "requires": {
        "kind-of": "3.2.2"
      },
      "dependencies": {
        "kind-of": {
          "version": "3.2.2",
          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
          "requires": {
            "is-buffer": "1.1.6"
          }
        }
      }
    },
    "is-odd": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz",
      "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==",
      "requires": {
        "is-number": "4.0.0"
      },
      "dependencies": {
        "is-number": {
          "version": "4.0.0",
          "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
          "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ=="
        }
      }
    },
    "is-path-cwd": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
      "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0="
    },
    "is-path-in-cwd": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz",
      "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==",
      "requires": {
        "is-path-inside": "1.0.1"
      }
    },
    "is-path-inside": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
      "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
      "requires": {
        "path-is-inside": "1.0.2"
      }
    },
    "is-plain-obj": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
      "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4="
    },
    "is-plain-object": {
      "version": "2.0.4",
      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
      "requires": {
        "isobject": "3.0.1"
      }
    },
    "is-posix-bracket": {
      "version": "0.1.1",
      "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
      "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q="
    },
    "is-primitive": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
      "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU="
    },
    "is-property": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
      "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ="
    },
    "is-relative": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
      "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
      "requires": {
        "is-unc-path": "1.0.0"
      }
    },
    "is-typedarray": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
    },
    "is-unc-path": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
      "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
      "requires": {
        "unc-path-regex": "0.1.2"
      }
    },
    "is-utf8": {
      "version": "0.2.1",
      "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
      "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI="
    },
    "is-windows": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
      "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA=="
    },
    "isarray": {
      "version": "0.0.1",
      "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
      "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
    },
    "isexe": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
    },
    "isobject": {
      "version": "3.0.1",
      "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
    },
    "isstream": {
      "version": "0.1.2",
      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
    },
    "js-base64": {
      "version": "2.4.3",
      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.3.tgz",
      "integrity": "sha512-H7ErYLM34CvDMto3GbD6xD0JLUGYXR3QTcH6B/tr4Hi/QpSThnCsIp+Sy5FRTw3B0d6py4HcNkW7nO/wdtGWEw=="
    },
    "jsbn": {
      "version": "0.1.1",
      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
      "optional": true
    },
    "json-schema": {
      "version": "0.2.3",
      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
    },
    "json-stable-stringify": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
      "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
      "requires": {
        "jsonify": "0.0.0"
      }
    },
    "json-stringify-safe": {
      "version": "5.0.1",
      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
    },
    "jsonify": {
      "version": "0.0.0",
      "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
      "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM="
    },
    "jsonpointer": {
      "version": "4.0.1",
      "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz",
      "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk="
    },
    "jsprim": {
      "version": "1.4.1",
      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
      "requires": {
        "assert-plus": "1.0.0",
        "extsprintf": "1.3.0",
        "json-schema": "0.2.3",
        "verror": "1.10.0"
      },
      "dependencies": {
        "assert-plus": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
        }
      }
    },
    "kind-of": {
      "version": "6.0.2",
      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
      "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
    },
    "laravel-elixir": {
      "version": "6.0.0-18",
      "resolved": "https://registry.npmjs.org/laravel-elixir/-/laravel-elixir-6.0.0-18.tgz",
      "integrity": "sha512-nvXR9MSneWX+S84zJllzqMFpLoNVNm8CRtJ73ROIR7gYmMPVA1lDUFyKjpa05qKZUvdK0pCMTJAanggsa2twZg==",
      "requires": {
        "chalk": "2.4.1",
        "clean-css": "3.4.28",
        "cli-table": "0.3.1",
        "del": "2.2.2",
        "glob": "7.1.2",
        "gulp-autoprefixer": "3.1.1",
        "gulp-batch": "1.0.5",
        "gulp-concat": "2.6.1",
        "gulp-if": "2.0.2",
        "gulp-less": "3.5.0",
        "gulp-load-plugins": "1.5.0",
        "gulp-notify": "2.2.0",
        "gulp-rename": "1.2.2",
        "gulp-rev": "7.1.2",
        "gulp-rev-replace": "0.4.4",
        "gulp-sass": "3.2.1",
        "gulp-shell": "0.5.2",
        "gulp-sourcemaps": "1.12.1",
        "gulp-uglify": "1.5.4",
        "minimist": "1.2.0",
        "parse-filepath": "1.0.2",
        "path": "0.12.7",
        "q": "1.5.1",
        "replace-ext": "1.0.0",
        "require-dir": "0.3.2",
        "run-sequence": "1.2.2",
        "underscore": "1.9.0",
        "vinyl-map2": "1.2.1"
      },
      "dependencies": {
        "ansi-styles": {
          "version": "3.2.1",
          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
          "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
          "requires": {
            "color-convert": "1.9.1"
          }
        },
        "chalk": {
          "version": "2.4.1",
          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
          "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
          "requires": {
            "ansi-styles": "3.2.1",
            "escape-string-regexp": "1.0.5",
            "supports-color": "5.4.0"
          }
        },
        "glob": {
          "version": "7.1.2",
          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
          "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
          "requires": {
            "fs.realpath": "1.0.0",
            "inflight": "1.0.6",
            "inherits": "2.0.3",
            "minimatch": "3.0.4",
            "once": "1.3.3",
            "path-is-absolute": "1.0.1"
          }
        },
        "minimatch": {
          "version": "3.0.4",
          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
          "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
          "requires": {
            "brace-expansion": "1.1.11"
          }
        },
        "replace-ext": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
          "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs="
        },
        "supports-color": {
          "version": "5.4.0",
          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
          "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
          "requires": {
            "has-flag": "3.0.0"
          }
        }
      }
    },
    "lazy-cache": {
      "version": "1.0.4",
      "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
      "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4="
    },
    "lazy-debug-legacy": {
      "version": "0.0.1",
      "resolved": "https://registry.npmjs.org/lazy-debug-legacy/-/lazy-debug-legacy-0.0.1.tgz",
      "integrity": "sha1-U3cWwHduTPeePtG2IfdljCkRsbE="
    },
    "lcid": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
      "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
      "requires": {
        "invert-kv": "1.0.0"
      }
    },
    "less": {
      "version": "2.7.3",
      "resolved": "https://registry.npmjs.org/less/-/less-2.7.3.tgz",
      "integrity": "sha512-KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ==",
      "requires": {
        "errno": "0.1.7",
        "graceful-fs": "4.1.11",
        "image-size": "0.5.5",
        "mime": "1.6.0",
        "mkdirp": "0.5.1",
        "promise": "7.3.1",
        "request": "2.81.0",
        "source-map": "0.5.7"
      },
      "dependencies": {
        "graceful-fs": {
          "version": "4.1.11",
          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
          "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
          "optional": true
        }
      }
    },
    "liftoff": {
      "version": "2.5.0",
      "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz",
      "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=",
      "requires": {
        "extend": "3.0.1",
        "findup-sync": "2.0.0",
        "fined": "1.1.0",
        "flagged-respawn": "1.0.0",
        "is-plain-object": "2.0.4",
        "object.map": "1.0.1",
        "rechoir": "0.6.2",
        "resolve": "1.7.1"
      }
    },
    "load-json-file": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
      "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
      "requires": {
        "graceful-fs": "4.1.11",
        "parse-json": "2.2.0",
        "pify": "2.3.0",
        "pinkie-promise": "2.0.1",
        "strip-bom": "2.0.0"
      },
      "dependencies": {
        "graceful-fs": {
          "version": "4.1.11",
          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
          "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
        },
        "strip-bom": {
          "version": "2.0.0",
          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
          "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
          "requires": {
            "is-utf8": "0.2.1"
          }
        }
      }
    },
    "lodash": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz",
      "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE="
    },
    "lodash._arraycopy": {
      "version": "3.0.0",
      "resolved": "https://registry.npmjs.org/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz",
      "integrity": "sha1-due3wfH7klRzdIeKVi7Qaj5Q9uE="
    },
    "lodash._arrayeach": {
      "version": "3.0.0",
      "resolved": "https://registry.npmjs.org/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz",
      "integrity": "sha1-urFWsqkNPxu9XGU0AzSeXlkz754="
    },
    "lodash._baseassign": {
      "version": "3.2.0",
      "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz",
      "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=",
      "requires": {
        "lodash._basecopy": "3.0.1",
        "lodash.keys": "3.1.2"
      }
    },
    "lodash._baseclone": {
      "version": "3.3.0",
      "resolved": "https://registry.npmjs.org/lodash._baseclone/-/lodash._baseclone-3.3.0.tgz",
      "integrity": "sha1-MDUZv2OT/n5C802LYw73eU41Qrc=",
      "requires": {
        "lodash._arraycopy": "3.0.0",
        "lodash._arrayeach": "3.0.0",
        "lodash._baseassign": "3.2.0",
        "lodash._basefor": "3.0.3",
        "lodash.isarray": "3.0.4",
        "lodash.keys": "3.1.2"
      }
    },
    "lodash._basecopy": {
      "version": "3.0.1",
      "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz",
      "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY="
    },
    "lodash._basefor": {
      "version": "3.0.3",
      "resolved": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.3.tgz",
      "integrity": "sha1-dVC06SGO8J+tJDQ7YSAhx5tMIMI="
    },
    "lodash._basetostring": {
      "version": "3.0.1",
      "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz",
      "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U="
    },
    "lodash._basevalues": {
      "version": "3.0.0",
      "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz",
      "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc="
    },
    "lodash._bindcallback": {
      "version": "3.0.1",
      "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz",
      "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4="
    },
    "lodash._getnative": {
      "version": "3.9.1",
      "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz",
      "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U="
    },
    "lodash._isiterateecall": {
      "version": "3.0.9",
      "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz",
      "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw="
    },
    "lodash._reescape": {
      "version": "3.0.0",
      "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz",
      "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo="
    },
    "lodash._reevaluate": {
      "version": "3.0.0",
      "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz",
      "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0="
    },
    "lodash._reinterpolate": {
      "version": "3.0.0",
      "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
      "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0="
    },
    "lodash._root": {
      "version": "3.0.1",
      "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz",
      "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI="
    },
    "lodash.assign": {
      "version": "4.2.0",
      "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
      "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc="
    },
    "lodash.clone": {
      "version": "4.5.0",
      "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz",
      "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y="
    },
    "lodash.clonedeep": {
      "version": "3.0.2",
      "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-3.0.2.tgz",
      "integrity": "sha1-oKHkDYKl6on/WxR7hETtY9koJ9s=",
      "requires": {
        "lodash._baseclone": "3.3.0",
        "lodash._bindcallback": "3.0.1"
      }
    },
    "lodash.defaults": {
      "version": "4.2.0",
      "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
      "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw="
    },
    "lodash.escape": {
      "version": "3.2.0",
      "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz",
      "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=",
      "requires": {
        "lodash._root": "3.0.1"
      }
    },
    "lodash.flatten": {
      "version": "4.4.0",
      "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
      "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8="
    },
    "lodash.isarguments": {
      "version": "3.1.0",
      "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
      "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo="
    },
    "lodash.isarray": {
      "version": "3.0.4",
      "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz",
      "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U="
    },
    "lodash.keys": {
      "version": "3.1.2",
      "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz",
      "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
      "requires": {
        "lodash._getnative": "3.9.1",
        "lodash.isarguments": "3.1.0",
        "lodash.isarray": "3.0.4"
      }
    },
    "lodash.merge": {
      "version": "4.6.1",
      "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz",
      "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ=="
    },
    "lodash.mergewith": {
      "version": "4.6.1",
      "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz",
      "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ=="
    },
    "lodash.partialright": {
      "version": "4.2.1",
      "resolved": "https://registry.npmjs.org/lodash.partialright/-/lodash.partialright-4.2.1.tgz",
      "integrity": "sha1-ATDYDoM2MmTUAHTzKbij56ihzEs="
    },
    "lodash.pick": {
      "version": "4.4.0",
      "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
      "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM="
    },
    "lodash.restparam": {
      "version": "3.6.1",
      "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz",
      "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU="
    },
    "lodash.template": {
      "version": "3.6.2",
      "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz",
      "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=",
      "requires": {
        "lodash._basecopy": "3.0.1",
        "lodash._basetostring": "3.0.1",
        "lodash._basevalues": "3.0.0",
        "lodash._isiterateecall": "3.0.9",
        "lodash._reinterpolate": "3.0.0",
        "lodash.escape": "3.2.0",
        "lodash.keys": "3.1.2",
        "lodash.restparam": "3.6.1",
        "lodash.templatesettings": "3.1.1"
      }
    },
    "lodash.templatesettings": {
      "version": "3.1.1",
      "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz",
      "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=",
      "requires": {
        "lodash._reinterpolate": "3.0.0",
        "lodash.escape": "3.2.0"
      }
    },
    "lodash.toarray": {
      "version": "4.4.0",
      "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
      "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE="
    },
    "lodash.uniq": {
      "version": "4.5.0",
      "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
      "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M="
    },
    "longest": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
      "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc="
    },
    "loud-rejection": {
      "version": "1.6.0",
      "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
      "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
      "requires": {
        "currently-unhandled": "0.4.1",
        "signal-exit": "3.0.2"
      }
    },
    "lru-cache": {
      "version": "2.7.3",
      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
      "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI="
    },
    "make-iterator": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
      "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
      "requires": {
        "kind-of": "6.0.2"
      }
    },
    "map-cache": {
      "version": "0.2.2",
      "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
      "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8="
    },
    "map-obj": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
      "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0="
    },
    "map-visit": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
      "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
      "requires": {
        "object-visit": "1.0.1"
      }
    },
    "marked": {
      "version": "0.3.19",
      "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz",
      "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg=="
    },
    "marked-terminal": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-2.0.0.tgz",
      "integrity": "sha1-Xq9Wi+ZvaGVBr6UqVYKAMQox3i0=",
      "requires": {
        "cardinal": "1.0.0",
        "chalk": "1.1.3",
        "cli-table": "0.3.1",
        "lodash.assign": "4.2.0",
        "node-emoji": "1.8.1"
      }
    },
    "math-random": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz",
      "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w="
    },
    "meow": {
      "version": "3.7.0",
      "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
      "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
      "requires": {
        "camelcase-keys": "2.1.0",
        "decamelize": "1.2.0",
        "loud-rejection": "1.6.0",
        "map-obj": "1.0.1",
        "minimist": "1.2.0",
        "normalize-package-data": "2.4.0",
        "object-assign": "4.1.1",
        "read-pkg-up": "1.0.1",
        "redent": "1.0.0",
        "trim-newlines": "1.0.0"
      },
      "dependencies": {
        "object-assign": {
          "version": "4.1.1",
          "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
          "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
        }
      }
    },
    "merge-stream": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz",
      "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
      "requires": {
        "readable-stream": "2.3.6"
      },
      "dependencies": {
        "isarray": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
        },
        "readable-stream": {
          "version": "2.3.6",
          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
          "requires": {
            "core-util-is": "1.0.2",
            "inherits": "2.0.3",
            "isarray": "1.0.0",
            "process-nextick-args": "2.0.0",
            "safe-buffer": "5.1.2",
            "string_decoder": "1.1.1",
            "util-deprecate": "1.0.2"
          }
        },
        "string_decoder": {
          "version": "1.1.1",
          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
          "requires": {
            "safe-buffer": "5.1.2"
          }
        }
      }
    },
    "micromatch": {
      "version": "3.1.10",
      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
      "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
      "requires": {
        "arr-diff": "4.0.0",
        "array-unique": "0.3.2",
        "braces": "2.3.2",
        "define-property": "2.0.2",
        "extend-shallow": "3.0.2",
        "extglob": "2.0.4",
        "fragment-cache": "0.2.1",
        "kind-of": "6.0.2",
        "nanomatch": "1.2.9",
        "object.pick": "1.3.0",
        "regex-not": "1.0.2",
        "snapdragon": "0.8.2",
        "to-regex": "3.0.2"
      }
    },
    "mime": {
      "version": "1.6.0",
      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
      "optional": true
    },
    "mime-db": {
      "version": "1.33.0",
      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
      "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ=="
    },
    "mime-types": {
      "version": "2.1.18",
      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
      "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
      "requires": {
        "mime-db": "1.33.0"
      }
    },
    "minimatch": {
      "version": "2.0.10",
      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz",
      "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=",
      "requires": {
        "brace-expansion": "1.1.11"
      }
    },
    "minimist": {
      "version": "1.2.0",
      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
      "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
    },
    "mixin-deep": {
      "version": "1.3.1",
      "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
      "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
      "requires": {
        "for-in": "1.0.2",
        "is-extendable": "1.0.1"
      },
      "dependencies": {
        "is-extendable": {
          "version": "1.0.1",
          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
          "requires": {
            "is-plain-object": "2.0.4"
          }
        }
      }
    },
    "mkdirp": {
      "version": "0.5.1",
      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
      "requires": {
        "minimist": "0.0.8"
      },
      "dependencies": {
        "minimist": {
          "version": "0.0.8",
          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
          "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
        }
      }
    },
    "modify-filename": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/modify-filename/-/modify-filename-1.1.0.tgz",
      "integrity": "sha1-mi3sg4Bvuy2XXyK+7IWcoms5OqE="
    },
    "ms": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
    },
    "multipipe": {
      "version": "0.1.2",
      "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz",
      "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=",
      "requires": {
        "duplexer2": "0.0.2"
      }
    },
    "nan": {
      "version": "2.10.0",
      "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
      "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA=="
    },
    "nanomatch": {
      "version": "1.2.9",
      "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz",
      "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==",
      "requires": {
        "arr-diff": "4.0.0",
        "array-unique": "0.3.2",
        "define-property": "2.0.2",
        "extend-shallow": "3.0.2",
        "fragment-cache": "0.2.1",
        "is-odd": "2.0.0",
        "is-windows": "1.0.2",
        "kind-of": "6.0.2",
        "object.pick": "1.3.0",
        "regex-not": "1.0.2",
        "snapdragon": "0.8.2",
        "to-regex": "3.0.2"
      }
    },
    "natives": {
      "version": "1.1.3",
      "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.3.tgz",
      "integrity": "sha512-BZGSYV4YOLxzoTK73l0/s/0sH9l8SHs2ocReMH1f8JYSh5FUWu4ZrKCpJdRkWXV6HFR/pZDz7bwWOVAY07q77g=="
    },
    "new-from": {
      "version": "0.0.3",
      "resolved": "https://registry.npmjs.org/new-from/-/new-from-0.0.3.tgz",
      "integrity": "sha1-HErRNhPePhXWMhtw7Vwjk36iXmc=",
      "requires": {
        "readable-stream": "1.1.14"
      }
    },
    "node-emoji": {
      "version": "1.8.1",
      "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.8.1.tgz",
      "integrity": "sha512-+ktMAh1Jwas+TnGodfCfjUbJKoANqPaJFN0z0iqh41eqD8dvguNzcitVSBSVK1pidz0AqGbLKcoVuVLRVZ/aVg==",
      "requires": {
        "lodash.toarray": "4.4.0"
      }
    },
    "node-gyp": {
      "version": "3.6.2",
      "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz",
      "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=",
      "requires": {
        "fstream": "1.0.11",
        "glob": "7.1.2",
        "graceful-fs": "4.1.11",
        "minimatch": "3.0.4",
        "mkdirp": "0.5.1",
        "nopt": "3.0.6",
        "npmlog": "4.1.2",
        "osenv": "0.1.5",
        "request": "2.81.0",
        "rimraf": "2.6.2",
        "semver": "5.3.0",
        "tar": "2.2.1",
        "which": "1.3.0"
      },
      "dependencies": {
        "glob": {
          "version": "7.1.2",
          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
          "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
          "requires": {
            "fs.realpath": "1.0.0",
            "inflight": "1.0.6",
            "inherits": "2.0.3",
            "minimatch": "3.0.4",
            "once": "1.3.3",
            "path-is-absolute": "1.0.1"
          }
        },
        "graceful-fs": {
          "version": "4.1.11",
          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
          "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
        },
        "minimatch": {
          "version": "3.0.4",
          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
          "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
          "requires": {
            "brace-expansion": "1.1.11"
          }
        },
        "semver": {
          "version": "5.3.0",
          "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
          "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8="
        }
      }
    },
    "node-notifier": {
      "version": "4.6.1",
      "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-4.6.1.tgz",
      "integrity": "sha1-BW0UJE89zBzq3+aK+c/wxUc6M/M=",
      "requires": {
        "cli-usage": "0.1.7",
        "growly": "1.3.0",
        "lodash.clonedeep": "3.0.2",
        "minimist": "1.2.0",
        "semver": "5.5.0",
        "shellwords": "0.1.1",
        "which": "1.3.0"
      },
      "dependencies": {
        "semver": {
          "version": "5.5.0",
          "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
          "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA=="
        }
      }
    },
    "node-sass": {
      "version": "4.9.0",
      "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.0.tgz",
      "integrity": "sha512-QFHfrZl6lqRU3csypwviz2XLgGNOoWQbo2GOvtsfQqOfL4cy1BtWnhx/XUeAO9LT3ahBzSRXcEO6DdvAH9DzSg==",
      "requires": {
        "async-foreach": "0.1.3",
        "chalk": "1.1.3",
        "cross-spawn": "3.0.1",
        "gaze": "1.1.2",
        "get-stdin": "4.0.1",
        "glob": "7.1.2",
        "in-publish": "2.0.0",
        "lodash.assign": "4.2.0",
        "lodash.clonedeep": "4.5.0",
        "lodash.mergewith": "4.6.1",
        "meow": "3.7.0",
        "mkdirp": "0.5.1",
        "nan": "2.10.0",
        "node-gyp": "3.6.2",
        "npmlog": "4.1.2",
        "request": "2.79.0",
        "sass-graph": "2.2.4",
        "stdout-stream": "1.4.0",
        "true-case-path": "1.0.2"
      },
      "dependencies": {
        "caseless": {
          "version": "0.11.0",
          "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz",
          "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c="
        },
        "commander": {
          "version": "2.15.1",
          "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
          "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag=="
        },
        "gaze": {
          "version": "1.1.2",
          "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz",
          "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=",
          "requires": {
            "globule": "1.2.0"
          }
        },
        "glob": {
          "version": "7.1.2",
          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
          "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
          "requires": {
            "fs.realpath": "1.0.0",
            "inflight": "1.0.6",
            "inherits": "2.0.3",
            "minimatch": "3.0.4",
            "once": "1.3.3",
            "path-is-absolute": "1.0.1"
          }
        },
        "globule": {
          "version": "1.2.0",
          "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz",
          "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=",
          "requires": {
            "glob": "7.1.2",
            "lodash": "4.17.10",
            "minimatch": "3.0.4"
          }
        },
        "har-validator": {
          "version": "2.0.6",
          "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
          "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=",
          "requires": {
            "chalk": "1.1.3",
            "commander": "2.15.1",
            "is-my-json-valid": "2.17.2",
            "pinkie-promise": "2.0.1"
          }
        },
        "lodash": {
          "version": "4.17.10",
          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
          "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg=="
        },
        "lodash.clonedeep": {
          "version": "4.5.0",
          "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
          "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8="
        },
        "minimatch": {
          "version": "3.0.4",
          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
          "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
          "requires": {
            "brace-expansion": "1.1.11"
          }
        },
        "qs": {
          "version": "6.3.2",
          "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz",
          "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw="
        },
        "request": {
          "version": "2.79.0",
          "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz",
          "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=",
          "requires": {
            "aws-sign2": "0.6.0",
            "aws4": "1.7.0",
            "caseless": "0.11.0",
            "combined-stream": "1.0.6",
            "extend": "3.0.1",
            "forever-agent": "0.6.1",
            "form-data": "2.1.4",
            "har-validator": "2.0.6",
            "hawk": "3.1.3",
            "http-signature": "1.1.1",
            "is-typedarray": "1.0.0",
            "isstream": "0.1.2",
            "json-stringify-safe": "5.0.1",
            "mime-types": "2.1.18",
            "oauth-sign": "0.8.2",
            "qs": "6.3.2",
            "stringstream": "0.0.5",
            "tough-cookie": "2.3.4",
            "tunnel-agent": "0.4.3",
            "uuid": "3.2.1"
          }
        },
        "tunnel-agent": {
          "version": "0.4.3",
          "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
          "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us="
        }
      }
    },
    "node.extend": {
      "version": "1.1.6",
      "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.1.6.tgz",
      "integrity": "sha1-p7iCyC1sk6SGOlUEvV3o7IYli5Y=",
      "requires": {
        "is": "3.2.1"
      }
    },
    "nopt": {
      "version": "3.0.6",
      "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
      "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
      "requires": {
        "abbrev": "1.1.1"
      }
    },
    "normalize-package-data": {
      "version": "2.4.0",
      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
      "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
      "requires": {
        "hosted-git-info": "2.6.0",
        "is-builtin-module": "1.0.0",
        "semver": "4.3.6",
        "validate-npm-package-license": "3.0.3"
      }
    },
    "normalize-path": {
      "version": "2.1.1",
      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
      "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
      "requires": {
        "remove-trailing-separator": "1.1.0"
      }
    },
    "normalize-range": {
      "version": "0.1.2",
      "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
      "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI="
    },
    "npmlog": {
      "version": "4.1.2",
      "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
      "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
      "requires": {
        "are-we-there-yet": "1.1.4",
        "console-control-strings": "1.1.0",
        "gauge": "2.7.4",
        "set-blocking": "2.0.0"
      }
    },
    "num2fraction": {
      "version": "1.2.2",
      "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
      "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4="
    },
    "number-is-nan": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
    },
    "oauth-sign": {
      "version": "0.8.2",
      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
      "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
    },
    "object-assign": {
      "version": "3.0.0",
      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
      "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I="
    },
    "object-copy": {
      "version": "0.1.0",
      "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
      "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
      "requires": {
        "copy-descriptor": "0.1.1",
        "define-property": "0.2.5",
        "kind-of": "3.2.2"
      },
      "dependencies": {
        "define-property": {
          "version": "0.2.5",
          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
          "requires": {
            "is-descriptor": "0.1.6"
          }
        },
        "kind-of": {
          "version": "3.2.2",
          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
          "requires": {
            "is-buffer": "1.1.6"
          }
        }
      }
    },
    "object-visit": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
      "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
      "requires": {
        "isobject": "3.0.1"
      }
    },
    "object.defaults": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
      "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
      "requires": {
        "array-each": "1.0.1",
        "array-slice": "1.1.0",
        "for-own": "1.0.0",
        "isobject": "3.0.1"
      }
    },
    "object.map": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
      "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=",
      "requires": {
        "for-own": "1.0.0",
        "make-iterator": "1.0.1"
      }
    },
    "object.omit": {
      "version": "2.0.1",
      "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
      "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
      "requires": {
        "for-own": "0.1.5",
        "is-extendable": "0.1.1"
      },
      "dependencies": {
        "for-own": {
          "version": "0.1.5",
          "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
          "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
          "requires": {
            "for-in": "1.0.2"
          }
        }
      }
    },
    "object.pick": {
      "version": "1.3.0",
      "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
      "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
      "requires": {
        "isobject": "3.0.1"
      }
    },
    "once": {
      "version": "1.3.3",
      "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
      "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=",
      "requires": {
        "wrappy": "1.0.2"
      }
    },
    "orchestrator": {
      "version": "0.3.8",
      "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz",
      "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=",
      "requires": {
        "end-of-stream": "0.1.5",
        "sequencify": "0.0.7",
        "stream-consume": "0.1.1"
      }
    },
    "ordered-read-streams": {
      "version": "0.1.0",
      "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz",
      "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY="
    },
    "os-homedir": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
      "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
    },
    "os-locale": {
      "version": "1.4.0",
      "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
      "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
      "requires": {
        "lcid": "1.0.0"
      }
    },
    "os-tmpdir": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
      "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
    },
    "osenv": {
      "version": "0.1.5",
      "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
      "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
      "requires": {
        "os-homedir": "1.0.2",
        "os-tmpdir": "1.0.2"
      }
    },
    "parse-filepath": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
      "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=",
      "requires": {
        "is-absolute": "1.0.0",
        "map-cache": "0.2.2",
        "path-root": "0.1.1"
      }
    },
    "parse-glob": {
      "version": "3.0.4",
      "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
      "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
      "requires": {
        "glob-base": "0.3.0",
        "is-dotfile": "1.0.3",
        "is-extglob": "1.0.0",
        "is-glob": "2.0.1"
      },
      "dependencies": {
        "is-extglob": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
          "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA="
        },
        "is-glob": {
          "version": "2.0.1",
          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
          "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
          "requires": {
            "is-extglob": "1.0.0"
          }
        }
      }
    },
    "parse-json": {
      "version": "2.2.0",
      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
      "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
      "requires": {
        "error-ex": "1.3.1"
      }
    },
    "parse-passwd": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
      "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY="
    },
    "pascalcase": {
      "version": "0.1.1",
      "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
      "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ="
    },
    "path": {
      "version": "0.12.7",
      "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz",
      "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=",
      "requires": {
        "process": "0.11.10",
        "util": "0.10.3"
      }
    },
    "path-exists": {
      "version": "2.1.0",
      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
      "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
      "requires": {
        "pinkie-promise": "2.0.1"
      }
    },
    "path-is-absolute": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
    },
    "path-is-inside": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
      "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM="
    },
    "path-parse": {
      "version": "1.0.5",
      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
      "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME="
    },
    "path-root": {
      "version": "0.1.1",
      "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
      "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=",
      "requires": {
        "path-root-regex": "0.1.2"
      }
    },
    "path-root-regex": {
      "version": "0.1.2",
      "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
      "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0="
    },
    "path-type": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
      "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
      "requires": {
        "graceful-fs": "4.1.11",
        "pify": "2.3.0",
        "pinkie-promise": "2.0.1"
      },
      "dependencies": {
        "graceful-fs": {
          "version": "4.1.11",
          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
          "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
        }
      }
    },
    "performance-now": {
      "version": "0.2.0",
      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
      "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU="
    },
    "pify": {
      "version": "2.3.0",
      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
      "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
    },
    "pinkie": {
      "version": "2.0.4",
      "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA="
    },
    "pinkie-promise": {
      "version": "2.0.1",
      "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
      "requires": {
        "pinkie": "2.0.4"
      }
    },
    "plugin-error": {
      "version": "0.1.2",
      "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz",
      "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=",
      "requires": {
        "ansi-cyan": "0.1.1",
        "ansi-red": "0.1.1",
        "arr-diff": "1.1.0",
        "arr-union": "2.1.0",
        "extend-shallow": "1.1.4"
      },
      "dependencies": {
        "arr-diff": {
          "version": "1.1.0",
          "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz",
          "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=",
          "requires": {
            "arr-flatten": "1.1.0",
            "array-slice": "0.2.3"
          }
        },
        "arr-union": {
          "version": "2.1.0",
          "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz",
          "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0="
        },
        "array-slice": {
          "version": "0.2.3",
          "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
          "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU="
        },
        "extend-shallow": {
          "version": "1.1.4",
          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz",
          "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=",
          "requires": {
            "kind-of": "1.1.0"
          }
        },
        "kind-of": {
          "version": "1.1.0",
          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz",
          "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ="
        }
      }
    },
    "posix-character-classes": {
      "version": "0.1.1",
      "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
      "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs="
    },
    "postcss": {
      "version": "5.2.18",
      "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
      "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
      "requires": {
        "chalk": "1.1.3",
        "js-base64": "2.4.3",
        "source-map": "0.5.7",
        "supports-color": "3.2.3"
      },
      "dependencies": {
        "has-flag": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
          "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo="
        },
        "supports-color": {
          "version": "3.2.3",
          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
          "requires": {
            "has-flag": "1.0.0"
          }
        }
      }
    },
    "postcss-value-parser": {
      "version": "3.3.0",
      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz",
      "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU="
    },
    "preserve": {
      "version": "0.2.0",
      "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
      "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks="
    },
    "pretty-hrtime": {
      "version": "1.0.3",
      "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
      "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE="
    },
    "process": {
      "version": "0.11.10",
      "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
      "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
    },
    "process-nextick-args": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
      "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
    },
    "promise": {
      "version": "7.3.1",
      "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
      "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
      "optional": true,
      "requires": {
        "asap": "2.0.6"
      }
    },
    "prr": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
      "optional": true
    },
    "pseudomap": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
    },
    "punycode": {
      "version": "1.4.1",
      "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
      "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
    },
    "q": {
      "version": "1.5.1",
      "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc="
    },
    "qs": {
      "version": "6.4.0",
      "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
      "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM="
    },
    "randomatic": {
      "version": "3.0.0",
      "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz",
      "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==",
      "requires": {
        "is-number": "4.0.0",
        "kind-of": "6.0.2",
        "math-random": "1.0.1"
      },
      "dependencies": {
        "is-number": {
          "version": "4.0.0",
          "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
          "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ=="
        }
      }
    },
    "read-pkg": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
      "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
      "requires": {
        "load-json-file": "1.1.0",
        "normalize-package-data": "2.4.0",
        "path-type": "1.1.0"
      }
    },
    "read-pkg-up": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
      "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
      "requires": {
        "find-up": "1.1.2",
        "read-pkg": "1.1.0"
      }
    },
    "readable-stream": {
      "version": "1.1.14",
      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
      "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
      "requires": {
        "core-util-is": "1.0.2",
        "inherits": "2.0.3",
        "isarray": "0.0.1",
        "string_decoder": "0.10.31"
      }
    },
    "rechoir": {
      "version": "0.6.2",
      "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
      "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
      "requires": {
        "resolve": "1.7.1"
      }
    },
    "redent": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
      "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
      "requires": {
        "indent-string": "2.1.0",
        "strip-indent": "1.0.1"
      }
    },
    "redeyed": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-1.0.1.tgz",
      "integrity": "sha1-6WwZO0DAgWsArshCaY5hGF5VSYo=",
      "requires": {
        "esprima": "3.0.0"
      }
    },
    "regex-cache": {
      "version": "0.4.4",
      "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
      "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
      "requires": {
        "is-equal-shallow": "0.1.3"
      }
    },
    "regex-not": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
      "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
      "requires": {
        "extend-shallow": "3.0.2",
        "safe-regex": "1.1.0"
      }
    },
    "remove-trailing-separator": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
      "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8="
    },
    "repeat-element": {
      "version": "1.1.2",
      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
      "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo="
    },
    "repeat-string": {
      "version": "1.6.1",
      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
    },
    "repeating": {
      "version": "2.0.1",
      "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
      "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
      "requires": {
        "is-finite": "1.0.2"
      }
    },
    "replace-ext": {
      "version": "0.0.1",
      "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz",
      "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ="
    },
    "request": {
      "version": "2.81.0",
      "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz",
      "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=",
      "requires": {
        "aws-sign2": "0.6.0",
        "aws4": "1.7.0",
        "caseless": "0.12.0",
        "combined-stream": "1.0.6",
        "extend": "3.0.1",
        "forever-agent": "0.6.1",
        "form-data": "2.1.4",
        "har-validator": "4.2.1",
        "hawk": "3.1.3",
        "http-signature": "1.1.1",
        "is-typedarray": "1.0.0",
        "isstream": "0.1.2",
        "json-stringify-safe": "5.0.1",
        "mime-types": "2.1.18",
        "oauth-sign": "0.8.2",
        "performance-now": "0.2.0",
        "qs": "6.4.0",
        "safe-buffer": "5.1.2",
        "stringstream": "0.0.5",
        "tough-cookie": "2.3.4",
        "tunnel-agent": "0.6.0",
        "uuid": "3.2.1"
      }
    },
    "require-dir": {
      "version": "0.3.2",
      "resolved": "https://registry.npmjs.org/require-dir/-/require-dir-0.3.2.tgz",
      "integrity": "sha1-wdXHXp+//eny5rM+OD209ZS1pqk="
    },
    "require-directory": {
      "version": "2.1.1",
      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
    },
    "require-main-filename": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
      "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE="
    },
    "resolve": {
      "version": "1.7.1",
      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
      "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
      "requires": {
        "path-parse": "1.0.5"
      }
    },
    "resolve-dir": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
      "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
      "requires": {
        "expand-tilde": "2.0.2",
        "global-modules": "1.0.0"
      }
    },
    "resolve-url": {
      "version": "0.2.1",
      "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
      "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo="
    },
    "ret": {
      "version": "0.1.15",
      "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
      "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg=="
    },
    "rev-hash": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/rev-hash/-/rev-hash-1.0.0.tgz",
      "integrity": "sha1-lpk5Weqb+xxZsTrfAqwuNLs3NgM="
    },
    "rev-path": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/rev-path/-/rev-path-1.0.0.tgz",
      "integrity": "sha1-1My0NqwzcMRgcXXOiOr8XGXF1lM=",
      "requires": {
        "modify-filename": "1.1.0"
      }
    },
    "right-align": {
      "version": "0.1.3",
      "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
      "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
      "requires": {
        "align-text": "0.1.4"
      }
    },
    "rimraf": {
      "version": "2.6.2",
      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
      "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
      "requires": {
        "glob": "7.1.2"
      },
      "dependencies": {
        "glob": {
          "version": "7.1.2",
          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
          "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
          "requires": {
            "fs.realpath": "1.0.0",
            "inflight": "1.0.6",
            "inherits": "2.0.3",
            "minimatch": "3.0.4",
            "once": "1.3.3",
            "path-is-absolute": "1.0.1"
          }
        },
        "minimatch": {
          "version": "3.0.4",
          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
          "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
          "requires": {
            "brace-expansion": "1.1.11"
          }
        }
      }
    },
    "run-sequence": {
      "version": "1.2.2",
      "resolved": "https://registry.npmjs.org/run-sequence/-/run-sequence-1.2.2.tgz",
      "integrity": "sha1-UJWgvr6YczsBQL0I3YDsAw3azes=",
      "requires": {
        "chalk": "1.1.3",
        "gulp-util": "3.0.8"
      }
    },
    "safe-buffer": {
      "version": "5.1.2",
      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
    },
    "safe-regex": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
      "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
      "requires": {
        "ret": "0.1.15"
      }
    },
    "sass-graph": {
      "version": "2.2.4",
      "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz",
      "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=",
      "requires": {
        "glob": "7.1.2",
        "lodash": "4.17.10",
        "scss-tokenizer": "0.2.3",
        "yargs": "7.1.0"
      },
      "dependencies": {
        "camelcase": {
          "version": "3.0.0",
          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo="
        },
        "cliui": {
          "version": "3.2.0",
          "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
          "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
          "requires": {
            "string-width": "1.0.2",
            "strip-ansi": "3.0.1",
            "wrap-ansi": "2.1.0"
          }
        },
        "glob": {
          "version": "7.1.2",
          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
          "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
          "requires": {
            "fs.realpath": "1.0.0",
            "inflight": "1.0.6",
            "inherits": "2.0.3",
            "minimatch": "3.0.4",
            "once": "1.3.3",
            "path-is-absolute": "1.0.1"
          }
        },
        "lodash": {
          "version": "4.17.10",
          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
          "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg=="
        },
        "minimatch": {
          "version": "3.0.4",
          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
          "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
          "requires": {
            "brace-expansion": "1.1.11"
          }
        },
        "yargs": {
          "version": "7.1.0",
          "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
          "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
          "requires": {
            "camelcase": "3.0.0",
            "cliui": "3.2.0",
            "decamelize": "1.2.0",
            "get-caller-file": "1.0.2",
            "os-locale": "1.4.0",
            "read-pkg-up": "1.0.1",
            "require-directory": "2.1.1",
            "require-main-filename": "1.0.1",
            "set-blocking": "2.0.0",
            "string-width": "1.0.2",
            "which-module": "1.0.0",
            "y18n": "3.2.1",
            "yargs-parser": "5.0.0"
          }
        }
      }
    },
    "scss-tokenizer": {
      "version": "0.2.3",
      "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
      "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
      "requires": {
        "js-base64": "2.4.3",
        "source-map": "0.4.4"
      },
      "dependencies": {
        "source-map": {
          "version": "0.4.4",
          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
          "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
          "requires": {
            "amdefine": "1.0.1"
          }
        }
      }
    },
    "semver": {
      "version": "4.3.6",
      "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
      "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto="
    },
    "sequencify": {
      "version": "0.0.7",
      "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz",
      "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw="
    },
    "set-blocking": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
    },
    "set-value": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
      "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
      "requires": {
        "extend-shallow": "2.0.1",
        "is-extendable": "0.1.1",
        "is-plain-object": "2.0.4",
        "split-string": "3.1.0"
      },
      "dependencies": {
        "extend-shallow": {
          "version": "2.0.1",
          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
          "requires": {
            "is-extendable": "0.1.1"
          }
        }
      }
    },
    "shellwords": {
      "version": "0.1.1",
      "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
      "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww=="
    },
    "sigmund": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
      "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA="
    },
    "signal-exit": {
      "version": "3.0.2",
      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
      "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
    },
    "snapdragon": {
      "version": "0.8.2",
      "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
      "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
      "requires": {
        "base": "0.11.2",
        "debug": "2.6.9",
        "define-property": "0.2.5",
        "extend-shallow": "2.0.1",
        "map-cache": "0.2.2",
        "source-map": "0.5.7",
        "source-map-resolve": "0.5.2",
        "use": "3.1.0"
      },
      "dependencies": {
        "define-property": {
          "version": "0.2.5",
          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
          "requires": {
            "is-descriptor": "0.1.6"
          }
        },
        "extend-shallow": {
          "version": "2.0.1",
          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
          "requires": {
            "is-extendable": "0.1.1"
          }
        }
      }
    },
    "snapdragon-node": {
      "version": "2.1.1",
      "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
      "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
      "requires": {
        "define-property": "1.0.0",
        "isobject": "3.0.1",
        "snapdragon-util": "3.0.1"
      },
      "dependencies": {
        "define-property": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
          "requires": {
            "is-descriptor": "1.0.2"
          }
        },
        "is-accessor-descriptor": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
          "requires": {
            "kind-of": "6.0.2"
          }
        },
        "is-data-descriptor": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
          "requires": {
            "kind-of": "6.0.2"
          }
        },
        "is-descriptor": {
          "version": "1.0.2",
          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
          "requires": {
            "is-accessor-descriptor": "1.0.0",
            "is-data-descriptor": "1.0.0",
            "kind-of": "6.0.2"
          }
        }
      }
    },
    "snapdragon-util": {
      "version": "3.0.1",
      "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
      "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
      "requires": {
        "kind-of": "3.2.2"
      },
      "dependencies": {
        "kind-of": {
          "version": "3.2.2",
          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
          "requires": {
            "is-buffer": "1.1.6"
          }
        }
      }
    },
    "sntp": {
      "version": "1.0.9",
      "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
      "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
      "requires": {
        "hoek": "2.16.3"
      }
    },
    "sort-keys": {
      "version": "1.1.2",
      "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
      "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
      "requires": {
        "is-plain-obj": "1.1.0"
      }
    },
    "source-map": {
      "version": "0.5.7",
      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
    },
    "source-map-resolve": {
      "version": "0.5.2",
      "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
      "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
      "requires": {
        "atob": "2.1.1",
        "decode-uri-component": "0.2.0",
        "resolve-url": "0.2.1",
        "source-map-url": "0.4.0",
        "urix": "0.1.0"
      }
    },
    "source-map-url": {
      "version": "0.4.0",
      "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
      "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM="
    },
    "sparkles": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz",
      "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw=="
    },
    "spdx-correct": {
      "version": "3.0.0",
      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz",
      "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==",
      "requires": {
        "spdx-expression-parse": "3.0.0",
        "spdx-license-ids": "3.0.0"
      }
    },
    "spdx-exceptions": {
      "version": "2.1.0",
      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz",
      "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg=="
    },
    "spdx-expression-parse": {
      "version": "3.0.0",
      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
      "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
      "requires": {
        "spdx-exceptions": "2.1.0",
        "spdx-license-ids": "3.0.0"
      }
    },
    "spdx-license-ids": {
      "version": "3.0.0",
      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz",
      "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA=="
    },
    "split-string": {
      "version": "3.1.0",
      "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
      "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
      "requires": {
        "extend-shallow": "3.0.2"
      }
    },
    "sshpk": {
      "version": "1.14.1",
      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz",
      "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=",
      "requires": {
        "asn1": "0.2.3",
        "assert-plus": "1.0.0",
        "bcrypt-pbkdf": "1.0.1",
        "dashdash": "1.14.1",
        "ecc-jsbn": "0.1.1",
        "getpass": "0.1.7",
        "jsbn": "0.1.1",
        "tweetnacl": "0.14.5"
      },
      "dependencies": {
        "assert-plus": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
        }
      }
    },
    "static-extend": {
      "version": "0.1.2",
      "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
      "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
      "requires": {
        "define-property": "0.2.5",
        "object-copy": "0.1.0"
      },
      "dependencies": {
        "define-property": {
          "version": "0.2.5",
          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
          "requires": {
            "is-descriptor": "0.1.6"
          }
        }
      }
    },
    "stdout-stream": {
      "version": "1.4.0",
      "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz",
      "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=",
      "requires": {
        "readable-stream": "2.3.6"
      },
      "dependencies": {
        "isarray": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
        },
        "readable-stream": {
          "version": "2.3.6",
          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
          "requires": {
            "core-util-is": "1.0.2",
            "inherits": "2.0.3",
            "isarray": "1.0.0",
            "process-nextick-args": "2.0.0",
            "safe-buffer": "5.1.2",
            "string_decoder": "1.1.1",
            "util-deprecate": "1.0.2"
          }
        },
        "string_decoder": {
          "version": "1.1.1",
          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
          "requires": {
            "safe-buffer": "5.1.2"
          }
        }
      }
    },
    "stream-array": {
      "version": "1.1.2",
      "resolved": "https://registry.npmjs.org/stream-array/-/stream-array-1.1.2.tgz",
      "integrity": "sha1-nl9zRfITfDDuO0mLkRToC1K7frU=",
      "requires": {
        "readable-stream": "2.1.5"
      },
      "dependencies": {
        "isarray": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
        },
        "process-nextick-args": {
          "version": "1.0.7",
          "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
          "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
        },
        "readable-stream": {
          "version": "2.1.5",
          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz",
          "integrity": "sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=",
          "requires": {
            "buffer-shims": "1.0.0",
            "core-util-is": "1.0.2",
            "inherits": "2.0.3",
            "isarray": "1.0.0",
            "process-nextick-args": "1.0.7",
            "string_decoder": "0.10.31",
            "util-deprecate": "1.0.2"
          }
        }
      }
    },
    "stream-consume": {
      "version": "0.1.1",
      "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.1.tgz",
      "integrity": "sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg=="
    },
    "stream-exhaust": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz",
      "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw=="
    },
    "stream-shift": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
      "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI="
    },
    "string-width": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
      "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
      "requires": {
        "code-point-at": "1.1.0",
        "is-fullwidth-code-point": "1.0.0",
        "strip-ansi": "3.0.1"
      }
    },
    "string_decoder": {
      "version": "0.10.31",
      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
      "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
    },
    "stringstream": {
      "version": "0.0.5",
      "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
      "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg="
    },
    "strip-ansi": {
      "version": "3.0.1",
      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
      "requires": {
        "ansi-regex": "2.1.1"
      }
    },
    "strip-bom": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz",
      "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=",
      "requires": {
        "first-chunk-stream": "1.0.0",
        "is-utf8": "0.2.1"
      }
    },
    "strip-bom-stream": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz",
      "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=",
      "requires": {
        "first-chunk-stream": "1.0.0",
        "strip-bom": "2.0.0"
      },
      "dependencies": {
        "strip-bom": {
          "version": "2.0.0",
          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
          "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
          "requires": {
            "is-utf8": "0.2.1"
          }
        }
      }
    },
    "strip-indent": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
      "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
      "requires": {
        "get-stdin": "4.0.1"
      }
    },
    "supports-color": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
      "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
    },
    "tar": {
      "version": "2.2.1",
      "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
      "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
      "requires": {
        "block-stream": "0.0.9",
        "fstream": "1.0.11",
        "inherits": "2.0.3"
      }
    },
    "ternary-stream": {
      "version": "2.0.1",
      "resolved": "https://registry.npmjs.org/ternary-stream/-/ternary-stream-2.0.1.tgz",
      "integrity": "sha1-Bk5Im0tb9gumpre8fy9cJ07Pgmk=",
      "requires": {
        "duplexify": "3.6.0",
        "fork-stream": "0.0.4",
        "merge-stream": "1.0.1",
        "through2": "2.0.3"
      }
    },
    "through2": {
      "version": "2.0.3",
      "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
      "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
      "requires": {
        "readable-stream": "2.3.6",
        "xtend": "4.0.1"
      },
      "dependencies": {
        "isarray": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
        },
        "readable-stream": {
          "version": "2.3.6",
          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
          "requires": {
            "core-util-is": "1.0.2",
            "inherits": "2.0.3",
            "isarray": "1.0.0",
            "process-nextick-args": "2.0.0",
            "safe-buffer": "5.1.2",
            "string_decoder": "1.1.1",
            "util-deprecate": "1.0.2"
          }
        },
        "string_decoder": {
          "version": "1.1.1",
          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
          "requires": {
            "safe-buffer": "5.1.2"
          }
        }
      }
    },
    "tildify": {
      "version": "1.2.0",
      "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz",
      "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=",
      "requires": {
        "os-homedir": "1.0.2"
      }
    },
    "time-stamp": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
      "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM="
    },
    "to-object-path": {
      "version": "0.3.0",
      "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
      "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
      "requires": {
        "kind-of": "3.2.2"
      },
      "dependencies": {
        "kind-of": {
          "version": "3.2.2",
          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
          "requires": {
            "is-buffer": "1.1.6"
          }
        }
      }
    },
    "to-regex": {
      "version": "3.0.2",
      "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
      "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
      "requires": {
        "define-property": "2.0.2",
        "extend-shallow": "3.0.2",
        "regex-not": "1.0.2",
        "safe-regex": "1.1.0"
      }
    },
    "to-regex-range": {
      "version": "2.1.1",
      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
      "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
      "requires": {
        "is-number": "3.0.0",
        "repeat-string": "1.6.1"
      }
    },
    "tough-cookie": {
      "version": "2.3.4",
      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
      "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
      "requires": {
        "punycode": "1.4.1"
      }
    },
    "trim-newlines": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
      "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM="
    },
    "true-case-path": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.2.tgz",
      "integrity": "sha1-fskRMJJHZsf1c74wIMNPj9/QDWI=",
      "requires": {
        "glob": "6.0.4"
      },
      "dependencies": {
        "glob": {
          "version": "6.0.4",
          "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
          "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
          "requires": {
            "inflight": "1.0.6",
            "inherits": "2.0.3",
            "minimatch": "2.0.10",
            "once": "1.3.3",
            "path-is-absolute": "1.0.1"
          }
        }
      }
    },
    "tunnel-agent": {
      "version": "0.6.0",
      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
      "requires": {
        "safe-buffer": "5.1.2"
      }
    },
    "tweetnacl": {
      "version": "0.14.5",
      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
      "optional": true
    },
    "uglify-js": {
      "version": "2.8.29",
      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
      "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
      "requires": {
        "source-map": "0.5.7",
        "uglify-to-browserify": "1.0.2",
        "yargs": "3.10.0"
      }
    },
    "uglify-save-license": {
      "version": "0.4.1",
      "resolved": "https://registry.npmjs.org/uglify-save-license/-/uglify-save-license-0.4.1.tgz",
      "integrity": "sha1-lXJsF8xv0XHDYX479NjYKqjEzOE="
    },
    "uglify-to-browserify": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
      "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc="
    },
    "unc-path-regex": {
      "version": "0.1.2",
      "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
      "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo="
    },
    "underscore": {
      "version": "1.9.0",
      "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.0.tgz",
      "integrity": "sha512-4IV1DSSxC1QK48j9ONFK1MoIAKKkbE8i7u55w2R6IqBqbT7A/iG7aZBCR2Bi8piF0Uz+i/MG1aeqLwl/5vqF+A=="
    },
    "union-value": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
      "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
      "requires": {
        "arr-union": "3.1.0",
        "get-value": "2.0.6",
        "is-extendable": "0.1.1",
        "set-value": "0.4.3"
      },
      "dependencies": {
        "extend-shallow": {
          "version": "2.0.1",
          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
          "requires": {
            "is-extendable": "0.1.1"
          }
        },
        "set-value": {
          "version": "0.4.3",
          "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
          "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
          "requires": {
            "extend-shallow": "2.0.1",
            "is-extendable": "0.1.1",
            "is-plain-object": "2.0.4",
            "to-object-path": "0.3.0"
          }
        }
      }
    },
    "unique-stream": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz",
      "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs="
    },
    "unset-value": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
      "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
      "requires": {
        "has-value": "0.3.1",
        "isobject": "3.0.1"
      },
      "dependencies": {
        "has-value": {
          "version": "0.3.1",
          "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
          "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
          "requires": {
            "get-value": "2.0.6",
            "has-values": "0.1.4",
            "isobject": "2.1.0"
          },
          "dependencies": {
            "isobject": {
              "version": "2.1.0",
              "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
              "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
              "requires": {
                "isarray": "1.0.0"
              }
            }
          }
        },
        "has-values": {
          "version": "0.1.4",
          "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
          "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E="
        },
        "isarray": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
        }
      }
    },
    "urix": {
      "version": "0.1.0",
      "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
      "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI="
    },
    "use": {
      "version": "3.1.0",
      "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz",
      "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==",
      "requires": {
        "kind-of": "6.0.2"
      }
    },
    "user-home": {
      "version": "1.1.1",
      "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz",
      "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA="
    },
    "util": {
      "version": "0.10.3",
      "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
      "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
      "requires": {
        "inherits": "2.0.1"
      },
      "dependencies": {
        "inherits": {
          "version": "2.0.1",
          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
          "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE="
        }
      }
    },
    "util-deprecate": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
    },
    "uuid": {
      "version": "3.2.1",
      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
      "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA=="
    },
    "v8flags": {
      "version": "2.1.1",
      "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz",
      "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=",
      "requires": {
        "user-home": "1.1.1"
      }
    },
    "validate-npm-package-license": {
      "version": "3.0.3",
      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz",
      "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==",
      "requires": {
        "spdx-correct": "3.0.0",
        "spdx-expression-parse": "3.0.0"
      }
    },
    "verror": {
      "version": "1.10.0",
      "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
      "requires": {
        "assert-plus": "1.0.0",
        "core-util-is": "1.0.2",
        "extsprintf": "1.3.0"
      },
      "dependencies": {
        "assert-plus": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
        }
      }
    },
    "vinyl": {
      "version": "0.5.3",
      "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz",
      "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=",
      "requires": {
        "clone": "1.0.4",
        "clone-stats": "0.0.1",
        "replace-ext": "0.0.1"
      }
    },
    "vinyl-file": {
      "version": "1.3.0",
      "resolved": "https://registry.npmjs.org/vinyl-file/-/vinyl-file-1.3.0.tgz",
      "integrity": "sha1-qgVjTTqGe6kUR77bs0r8sm9E9uc=",
      "requires": {
        "graceful-fs": "4.1.11",
        "strip-bom": "2.0.0",
        "strip-bom-stream": "1.0.0",
        "vinyl": "1.2.0"
      },
      "dependencies": {
        "graceful-fs": {
          "version": "4.1.11",
          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
          "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
        },
        "strip-bom": {
          "version": "2.0.0",
          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
          "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
          "requires": {
            "is-utf8": "0.2.1"
          }
        },
        "vinyl": {
          "version": "1.2.0",
          "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
          "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
          "requires": {
            "clone": "1.0.4",
            "clone-stats": "0.0.1",
            "replace-ext": "0.0.1"
          }
        }
      }
    },
    "vinyl-fs": {
      "version": "0.3.14",
      "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz",
      "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=",
      "requires": {
        "defaults": "1.0.3",
        "glob-stream": "3.1.18",
        "glob-watcher": "0.0.6",
        "graceful-fs": "3.0.11",
        "mkdirp": "0.5.1",
        "strip-bom": "1.0.0",
        "through2": "0.6.5",
        "vinyl": "0.4.6"
      },
      "dependencies": {
        "clone": {
          "version": "0.2.0",
          "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
          "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8="
        },
        "readable-stream": {
          "version": "1.0.34",
          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
          "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
          "requires": {
            "core-util-is": "1.0.2",
            "inherits": "2.0.3",
            "isarray": "0.0.1",
            "string_decoder": "0.10.31"
          }
        },
        "through2": {
          "version": "0.6.5",
          "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
          "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
          "requires": {
            "readable-stream": "1.0.34",
            "xtend": "4.0.1"
          }
        },
        "vinyl": {
          "version": "0.4.6",
          "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
          "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
          "requires": {
            "clone": "0.2.0",
            "clone-stats": "0.0.1"
          }
        }
      }
    },
    "vinyl-map2": {
      "version": "1.2.1",
      "resolved": "https://registry.npmjs.org/vinyl-map2/-/vinyl-map2-1.2.1.tgz",
      "integrity": "sha1-vfcPlu+ub0cBX6p/FFMBOzqViT4=",
      "requires": {
        "bl": "1.2.2",
        "new-from": "0.0.3",
        "through2": "2.0.3"
      }
    },
    "vinyl-sourcemaps-apply": {
      "version": "0.2.1",
      "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz",
      "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=",
      "requires": {
        "source-map": "0.5.7"
      }
    },
    "when": {
      "version": "3.7.8",
      "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz",
      "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I="
    },
    "which": {
      "version": "1.3.0",
      "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
      "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
      "requires": {
        "isexe": "2.0.0"
      }
    },
    "which-module": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
      "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8="
    },
    "wide-align": {
      "version": "1.1.2",
      "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz",
      "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
      "requires": {
        "string-width": "1.0.2"
      }
    },
    "window-size": {
      "version": "0.1.0",
      "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
      "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0="
    },
    "wordwrap": {
      "version": "0.0.2",
      "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
      "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8="
    },
    "wrap-ansi": {
      "version": "2.1.0",
      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
      "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
      "requires": {
        "string-width": "1.0.2",
        "strip-ansi": "3.0.1"
      }
    },
    "wrappy": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
    },
    "xtend": {
      "version": "4.0.1",
      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
      "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
    },
    "y18n": {
      "version": "3.2.1",
      "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
      "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE="
    },
    "yallist": {
      "version": "2.1.2",
      "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
      "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
    },
    "yargs": {
      "version": "3.10.0",
      "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
      "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
      "requires": {
        "camelcase": "1.2.1",
        "cliui": "2.1.0",
        "decamelize": "1.2.0",
        "window-size": "0.1.0"
      }
    },
    "yargs-parser": {
      "version": "5.0.0",
      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz",
      "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
      "requires": {
        "camelcase": "3.0.0"
      },
      "dependencies": {
        "camelcase": {
          "version": "3.0.0",
          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo="
        }
      }
    }
  }
}
<?php
// silence is goldenvar previewModal = {

    info: {},

    setup: function (info) {

        this.info = info;

        this.open();
    },

    open: function () {

        var self = this;

        if (!self.info.images) {
            return;
        }


        $.bs_selector_modal({
            bsModal: {
                destroyHtml: true,
                show: true
            },

            noSidebar: true,

            id: 'bt-thumbnil-selector',
            modalClass: 'bt-modal',

            itemInnerHtml: '<div class="bf-item-container">\n    <figure>\n        <img src="{{img}}"\n             alt="{{label}}"\n             class="bs-style-thumbnail" data-current-image="{{current_img}}">\n    </figure>\n</div>',

            content: self.info.l10n,
            items: self.info.images.map(self.noCacheImage),

            itemsGroupSize: 9,

            events: {}
        }, {
            initialZIndex: 209901
        });
    },

    noCacheImage: function (obj) {

        obj.img += "?" + new Date().getTime();

        return obj;
    }
};var mediaLibPage = {

    initialized: false,
    $context: '',

    $img: '',

    setup: function () {

        if (!wp || !wp.media) {
            return;
        }

        var $body = $(document.body);

        this.$context = $body;

        if (!$body.hasClass('post-type-attachment') || !$body.hasClass('post-php')) {
            return
        }

        this.$img = $(".wp_attachment_image img.thumbnail", this.$context);

        this.editAttachmentPage();
    },

    editAttachmentPage: function () {

        this.initFocusPoint();

        this.appendPreviewButton($(".wp_attachment_image .button", this.$context));
    },

    initFocusPoint: function () {

        focusPoint.setup({
                $el: this.$img,
                parentSelector: "#wpbody-content",

                grid: loc.get("grid"),
                defaultPosition: this.getFocusPoint()
            }, {
                done: $.proxy(this.saveFocusPoint, this)
            }
        );
    },


    appendPreviewButton: function ($afterEl) {

        var self = this,
            link = "<input type='button' class='button preview-images-btn' value='" + loc.translate('preview') + "'>";

        var $link = $(link).insertAfter($afterEl);

        $link.on('click', function (e) {
            e.preventDefault();

            self.previewModal();
        });
    },

    previewModal: function () {

        var self = this;

        self.loading('start');

        var ajax = previewData.get(self.attachmentId(), self.securityNonce());

        ajax.done(function (res) {

            if (!helper.isUndefined(res.data))
                previewModal.setup(res.data);
        });

        ajax.always(function () {

            self.loading('stop');
        });

    },

    saveFocusPoint: function (topPercent, leftPercent) {

        this.regenerateThumbnails(topPercent, leftPercent);
        this.setFocusPoint(topPercent / 100, leftPercent / 100);
    },

    regenerateThumbnails: function (topPercent, leftPercent) {

        var self = this;

        var attachment_id = self.attachmentId();

        self.loading('start');

        var ajax = wp.ajax.post('bt-regenerate-thumbnails', {
            thumbnail_id: attachment_id,
            nonce: self.securityNonce(),
            focus_x: topPercent,
            focus_y: leftPercent,
        });

        ajax.done(function (res) {

            if (!helper.isUndefined(res.message)) {

                helper.notify($(".wp_attachment_holder", this.$context), res.message);
            }
        });

        ajax.always(function () {

            self.loading('stop');
        });
    },

    loading: function (state) {

        switch (state) {

            case 'start':

                UI.block($(".wp_attachment_holder", this.$context));

                break;

            case 'stop':
                UI.unblock($(".wp_attachment_holder", this.$context));

                break;
        }
    },

    attachmentId: function () {

        return $("#post_ID", this.$context).val();
    },


    securityNonce: function () {

        return $(".bt-regenerate-nonce", this.$context).val();
    },

    getFocusPoint: function () {

        return this.getDefaultFocusPoint();
    },

    setFocusPoint: function (top, left) {

        $(".attachment.selected", this.$context).data("focus-point", top + "-" + left);
    },

    getDefaultFocusPoint: function () {

        var point = $(".bt-focus-point-xy", this.$context).val();

        return point && point.indexOf('-') > -1 ? point.split('-') : helper.defaultFocusPoint(this.$img.width(), this.$img.height());
    }
};

mediaLibPage.setup();
{"version":3,"sources":[".before-concat.txt","utils.js","preview-data.js","preview-modal.js","focus-point.js","media-modal.js","media-lib-page.js",".after-concat.txt"],"names":[],"mappings":"AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACrKA","file":"better-smart-thumbnails.js","sourcesContent":["jQuery(document).ready(function($) {","var helper = {\n    isObject: function (obj) {\n        var type = typeof obj;\n        return type === 'function' || type === 'object' && !!obj;\n    },\n    isUndefined: function (obj) {\n\n        return obj === void 0;\n    },\n\n    notify: function ($el, message) {\n\n        $el.append(\"<div class='bt-user-message success' style='display: none;'>\" + message + \"</div>\");\n\n        $(\".bt-user-message\", $el).fadeIn().delay(5e3).queue(function (n) {\n\n            $(this).fadeOut(function () {\n                $(this).remove();\n            });\n            n();\n        });\n    },\n\n    defaultFocusPoint: function (imageWidth, imageHeight) {\n\n        if (loc.get('portrait_default_top') &&\n            this.isImagePortrait(imageWidth, imageHeight)) {\n\n            return [0.5, 0];\n        }\n\n        return loc.get('default_fp');\n    },\n\n    isImagePortrait: function (imageWidth, imageHeight) {\n\n        return ( imageWidth + ( imageHeight * 0.14 ) ) < imageHeight;\n    }\n};\nvar cache = {\n    storage: {},\n\n    add: function (name, data, group) {\n\n        if (helper.isUndefined(cache[group]))\n            cache[group] = {};\n\n        cache[group][name] = data;\n    },\n\n    get: function (name, group) {\n\n        if (this.exist(name, group)) {\n\n            return cache[group][name];\n        }\n    },\n\n    exist: function (name, group) {\n\n        return !helper.isUndefined(cache[group]) && !helper.isUndefined(cache[group][name]);\n    }\n};\n\n\nvar UI = {\n\n    is_blocked: function ($element) {\n\n        return !!$element.data('bc-el-blocked');\n    },\n\n    block: function ($element) {\n\n        if (this.is_blocked($element)) {\n            return;\n        }\n\n        $element.data('bc-el-blocked', true);\n\n        $element.prepend('<div class=\"bc-block-overlay\" style=\"z-index:10;display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0;display:none;position: absolute;background:rgba(255,255,255,0.4)\"></div>');\n\n        $(\".bc-block-overlay\").fadeIn();\n    },\n\n\n    unblock: function ($element) {\n\n        if (!this.is_blocked($element)) {\n            return;\n        }\n\n        $element.data('bc-el-blocked', false);\n\n        $(\".bc-block-overlay\").fadeOut(function () {\n            $(this).remove();\n        });\n    },\n};\n\n\nvar loc = {\n\n    get: function (loc) {\n\n        if (!loc) {\n            return;\n        }\n\n        if (loc.indexOf('.') == -1) {\n\n            return st_loc[loc];\n        }\n\n        var _v = loc.split('.');\n        var current = st_loc[_v[0]];\n        _v = _v.splice(1);\n\n        var len = _v.length - 1;\n\n        for (var i = 0; i <= len; i++) {\n\n            if (typeof current[_v[i]] !== 'object' && i !== len) {\n                return;\n            }\n\n            current = current[_v[i]];\n        }\n\n        return current;\n    },\n\n    translate: function (index) {\n\n        return this.get('translate.' + index);\n    }\n};","var previewData = {\n\n    get: function (attachmentId, securityNonce) {\n\n        return $.Deferred(function (deferred) {\n\n            if (cache.exist(attachmentId, 'selector-data')) {\n\n                deferred.resolveWith(this, [cache.get(attachmentId, 'selector-data')]);\n\n                return;\n            }\n\n            var ajax = wp.ajax.post('bt-preview-thumbnails', {\n                thumbnail_id: attachmentId,\n                nonce: securityNonce\n            });\n\n            ajax.done(function (res) {\n                cache.add(attachmentId, res, 'selector-data');\n                deferred.resolveWith(this, [res]);\n            });\n\n            ajax.fail(function () {\n\n                deferred.rejectWith(this);\n            });\n        }).promise();\n    },\n};","var previewModal = {\n\n    info: {},\n\n    setup: function (info) {\n\n        this.info = info;\n\n        this.open();\n    },\n\n    open: function () {\n\n        var self = this;\n\n        if (!self.info.images) {\n            return;\n        }\n\n\n        $.bs_selector_modal({\n            bsModal: {\n                destroyHtml: true,\n                show: true\n            },\n\n            noSidebar: true,\n\n            id: 'bt-thumbnil-selector',\n            modalClass: 'bt-modal',\n\n            itemInnerHtml: '<div class=\"bf-item-container\">\\n    <figure>\\n        <img src=\"{{img}}\"\\n             alt=\"{{label}}\"\\n             class=\"bs-style-thumbnail\" data-current-image=\"{{current_img}}\">\\n    </figure>\\n</div>',\n\n            content: self.info.l10n,\n            items: self.info.images.map(self.noCacheImage),\n\n            itemsGroupSize: 9,\n\n            events: {}\n        }, {\n            initialZIndex: 209901\n        });\n    },\n\n    noCacheImage: function (obj) {\n\n        obj.img += \"?\" + new Date().getTime();\n\n        return obj;\n    }\n};","var focusPoint = {\n\n    markerArea: 10,\n\n    isMouseDown: false,\n    $element: false,\n    $container: false,\n\n    options: {},\n\n    events: {},\n\n    setup: function (options, events) {\n\n        this.events = events || {};\n        this.options = options || {};\n\n        if (this.prepare()) {\n\n            this.bindEvents();\n\n            return true;\n        }\n\n        return false;\n    },\n\n    prepare: function () {\n\n        if (!this.options.$el || !this.options.$el.length) {\n            return false;\n        }\n\n        this.$element = this.options.$el;\n        this.$element.wrap(\"<div class='bt-focus-point'></div>\");\n        //\n        this.$container = this.$element.parent();\n        this.$container.append('<div class=\"bt-focus-point-marker\"></div>');\n\n        if (this.options.defaultPosition) {\n            this.fixMarkerPosition(this.options.defaultPosition);\n        }\n\n        if (this.options.grid) {\n            this.appendGrid();\n        }\n\n        return true;\n    },\n\n    handle_event: function (event) {\n        var args = Array.prototype.slice.call(arguments, 1);\n\n        if (typeof this.events[event] === 'function')\n            return this.events[event].apply(this, args);\n    },\n\n    appendGrid: function () {\n\n        var $grid = $(\"<div>\", {\"class\": \"grid\"}).insertAfter(this.$container.find('img'));\n\n        $grid.html('<div class=\"x1\"></div>\\n<div class=\"x2\"></div>\\n\\n<div class=\"y1\"></div>\\n<div class=\"y2\"></div>');\n    },\n\n    fixMarkerPosition: function (pos) {\n\n        var x = parseFloat(pos[0]),\n            y = parseFloat(pos[1]);\n\n        if (!(x >= 0 && x <= 1)) {\n            return;\n        }\n\n        if (!(y >= 0 && y <= 1)) {\n            return;\n        }\n\n        var $img = this.$container.find('img');\n        var markerArea = this.markerArea;\n\n        $(\".bt-focus-point-marker\", this.$container).css({\n            top: Math.floor($img.height() * y) - markerArea,\n            left: Math.floor($img.width() * x) - markerArea\n        });\n    },\n\n    bindEvents: function () {\n\n        var self = this;\n\n        var markerArea = this.markerArea,\n            $marker = $(\".bt-focus-point-marker\", this.$container);\n\n        var $markerWrapper = (function () {\n\n            var $m = self.options.parentSelector ? $(\".bt-focus-point-marker\", this.$container).closest(self.options.parentSelector) : '';\n\n            if ($m && $m.length) {\n                return $m;\n            }\n\n            return $(\".bt-focus-point-marker\", this.$container);\n\n        })();\n\n        $marker.mousedown(function () {\n\n            self.isMouseDown = true;\n        });\n\n        $(\".bt-focus-point\").mousedown(function (e) {\n\n            self.isMouseDown = true;\n\n            $(document).trigger('mousemove.bt-focus-point', [e.pageX, e.pageY]);\n        });\n\n\n        $markerWrapper.mouseup(function () {\n\n            if (!self.isMouseDown) {\n                return;\n            }\n\n            self.isMouseDown = false;\n\n\n            var top = parseInt($marker.css('top').replace('px', '')),\n                left = parseInt($marker.css('left').replace('px', ''));\n\n            var topPercent = Math.ceil((top + markerArea) / (self.$container.find('img').height() / 100)),\n                leftPercent = Math.ceil((left + markerArea) / (self.$container.find('img').width() / 100));\n\n\n            self.handle_event('done', Math.min(leftPercent, 100), Math.min(topPercent, 100));\n        });\n\n        var offset = this.$container.offset();\n\n        if (!offset) {\n            throw 'cannot initialize image focus point';\n        }\n\n        $(document).on('mousemove.bt-focus-point', function (e, pageX, pageY) {\n\n            if (!self.isMouseDown) {\n                return;\n            }\n\n            pageX = pageX || e.pageX;\n            pageY = pageY || e.pageY;\n\n            var x = pageX - offset.left - markerArea,\n                y = pageY - offset.top - markerArea;\n\n\n            var $img = self.$container.find('img'),\n                box = {\n\n                    top: $img.height() - markerArea,\n                    left: $img.width() - markerArea,\n                };\n\n            y = Math.max(-markerArea, y);\n            y = Math.min(box.top, y);\n\n            x = Math.max(-markerArea, x);\n            x = Math.min(box.left, x);\n\n            $marker.css({\n                top: Math.floor(y),\n                left: Math.floor(x),\n            });\n        });\n    }\n};","var mediaModal = {\n\n    initialized: false,\n    $context: '',\n\n    setup: function () {\n\n        if (!wp || !wp.media) {\n            return;\n        }\n\n        var self = this;\n\n        if (wp.media.featuredImage && wp.media.featuredImage.frame) {\n\n            this.initFeaturedImageModal();\n        }\n\n        if (wp.media.frames && self.isUploadPage()) {\n\n            $(document).one('click', \".media-frame-content li.attachment\", function () {\n\n                setTimeout(function () {\n                    self.initMediaLibraryModal();\n\n                    self.initFocusPoint();\n                    self.appendPreviewButton($(\".attachment-actions .button\", self.$context));\n                });\n            });\n        }\n    },\n\n    initFeaturedImageModal: function () {\n\n        var self = this;\n\n        var frame = wp.media.featuredImage.frame();\n        frame.on('ready', function () {\n\n            if (self.initialized) {\n                return;\n            }\n\n            self.$context = this.models[0].frame.$el;\n            self.initialized = true;\n\n            wp.Uploader.queue.on('reset', function () { // Upload completed\n\n                setTimeout(function () {\n                    self.initFocusPoint();\n                    self.appendPreviewLink();\n                });\n            });\n        });\n\n        frame.on('selection:toggle', function () { // Image selected\n\n            self.initFocusPoint();\n            self.appendPreviewLink();\n        });\n\n        frame.on('uploader:ready', function (a) { // Image selected\n\n            var interval = setInterval(function () {\n\n                if (self.initFocusPoint()) {\n\n                    self.appendPreviewLink();\n\n                    clearInterval(interval);\n                }\n\n            }, 200);\n        });\n\n    },\n\n    initMediaLibraryModal: function () {\n\n        var self = this;\n\n        wp.media.frames.edit.on('refresh', function (e) {\n\n            self.initFocusPoint();\n            self.appendPreviewButton($(\".attachment-actions .button\", self.$context));\n        });\n    },\n\n    initFocusPoint: function () {\n\n        return focusPoint.setup({\n                $el: $(\".thumbnail-image img\", this.$context),\n                parentSelector: \".media-frame-content\",\n                grid: loc.get(\"grid\"),\n                defaultPosition: this.getFocusPoint()\n            },\n            {\n                done: $.proxy(this.saveFocusPoint, this)\n            }\n        );\n    },\n\n    appendPreviewLink: function () {\n\n        var self = this,\n            link = \"<div class='preview-thumbnails'><a href='#'>\" + loc.translate('preview') + \"</a></div>\";\n\n        var $link = $(link).insertAfter($(\".attachment-info .edit-attachment\", this.$context));\n\n        $link.on('click', function (e) {\n            e.preventDefault();\n\n            self.previewModal();\n        });\n    },\n\n    appendPreviewButton: function ($afterEl) {\n\n        var self = this,\n            link = \"<input type='button' class='button preview-images-btn' value='\" + loc.translate('preview') + \"'>\";\n\n        var $link = $(link).insertAfter($afterEl);\n\n        $link.on('click', function (e) {\n            e.preventDefault();\n\n            self.previewModal();\n        });\n    },\n\n    previewModal: function () {\n\n        var self = this;\n\n        self.loading('start');\n\n        var ajax = previewData.get(self.attachmentId(), self.securityNonce());\n\n        ajax.done(function (res) {\n\n            if (!helper.isUndefined(res.data))\n                previewModal.setup(res.data);\n        });\n\n        ajax.always(function () {\n\n            self.loading('stop');\n        });\n\n    },\n\n    saveFocusPoint: function (topPercent, leftPercent) {\n\n        this.regenerateThumbnails(topPercent, leftPercent);\n        this.setFocusPoint(topPercent / 100, leftPercent / 100);\n    },\n\n    regenerateThumbnails: function (topPercent, leftPercent) {\n\n        var self = this;\n\n        var attachment_id = self.attachmentId();\n\n        self.loading('start');\n\n        var ajax = wp.ajax.post('bt-regenerate-thumbnails', {\n            thumbnail_id: attachment_id,\n            nonce: self.securityNonce(),\n            focus_x: topPercent,\n            focus_y: leftPercent,\n        });\n\n        ajax.done(function (res) {\n\n            if (!helper.isUndefined(res.message)) {\n\n                var $msgParent = self.isUploadPage() ? $(\".thumbnail-image\", self.$context) : $(\".attachment-info\", self.$context);\n\n                helper.notify($msgParent, res.message);\n            }\n        });\n\n        ajax.always(function () {\n\n            self.loading('stop');\n        });\n    },\n\n    loading: function (state) {\n\n        switch (state) {\n\n            case 'start':\n\n                UI.block($(\".attachment-info\", this.$context));\n\n                break;\n\n            case 'stop':\n                UI.unblock($(\".attachment-info\", this.$context));\n\n                break;\n        }\n    },\n\n    attachmentId: function () {\n\n        if (this.isUploadPage()) {\n\n            return $(\".attachment-details\", this.$context).data('id');\n\n        } else {\n\n            return $(\".attachment.selected\", this.$context).data('id');\n        }\n    },\n\n\n    isUploadPage: function () {\n        return $(document.body).hasClass('upload-php');\n    },\n\n    securityNonce: function () {\n        return $(\".bt-regenerate-nonce\", this.$context).val();\n    },\n\n    getFocusPoint: function () {\n\n        var $attachment = $(\".attachment.selected\", this.$context),\n            point = $attachment.data('focus-point');\n\n        return point ? point.split('-') : this.getDefaultFocusPoint();\n\n    },\n    setFocusPoint: function (top, left) {\n\n        $(\".attachment.selected\", this.$context).data(\"focus-point\", top + \"-\" + left);\n    },\n    getDefaultFocusPoint: function () {\n\n        var point = $(\".bt-focus-point-xy\", this.$context).val(),\n            $img = $(\".thumbnail-image img\", this.$context);\n\n        return point && point.indexOf('-') > -1 ? point.split('-') : helper.defaultFocusPoint($img.width(), $img.height());\n    }\n};\n\nmediaModal.setup();\n","var mediaLibPage = {\n\n    initialized: false,\n    $context: '',\n\n    $img: '',\n\n    setup: function () {\n\n        if (!wp || !wp.media) {\n            return;\n        }\n\n        var $body = $(document.body);\n\n        this.$context = $body;\n\n        if (!$body.hasClass('post-type-attachment') || !$body.hasClass('post-php')) {\n            return\n        }\n\n        this.$img = $(\".wp_attachment_image img.thumbnail\", this.$context);\n\n        this.editAttachmentPage();\n    },\n\n    editAttachmentPage: function () {\n\n        this.initFocusPoint();\n\n        this.appendPreviewButton($(\".wp_attachment_image .button\", this.$context));\n    },\n\n    initFocusPoint: function () {\n\n        focusPoint.setup({\n                $el: this.$img,\n                parentSelector: \"#wpbody-content\",\n\n                grid: loc.get(\"grid\"),\n                defaultPosition: this.getFocusPoint()\n            }, {\n                done: $.proxy(this.saveFocusPoint, this)\n            }\n        );\n    },\n\n\n    appendPreviewButton: function ($afterEl) {\n\n        var self = this,\n            link = \"<input type='button' class='button preview-images-btn' value='\" + loc.translate('preview') + \"'>\";\n\n        var $link = $(link).insertAfter($afterEl);\n\n        $link.on('click', function (e) {\n            e.preventDefault();\n\n            self.previewModal();\n        });\n    },\n\n    previewModal: function () {\n\n        var self = this;\n\n        self.loading('start');\n\n        var ajax = previewData.get(self.attachmentId(), self.securityNonce());\n\n        ajax.done(function (res) {\n\n            if (!helper.isUndefined(res.data))\n                previewModal.setup(res.data);\n        });\n\n        ajax.always(function () {\n\n            self.loading('stop');\n        });\n\n    },\n\n    saveFocusPoint: function (topPercent, leftPercent) {\n\n        this.regenerateThumbnails(topPercent, leftPercent);\n        this.setFocusPoint(topPercent / 100, leftPercent / 100);\n    },\n\n    regenerateThumbnails: function (topPercent, leftPercent) {\n\n        var self = this;\n\n        var attachment_id = self.attachmentId();\n\n        self.loading('start');\n\n        var ajax = wp.ajax.post('bt-regenerate-thumbnails', {\n            thumbnail_id: attachment_id,\n            nonce: self.securityNonce(),\n            focus_x: topPercent,\n            focus_y: leftPercent,\n        });\n\n        ajax.done(function (res) {\n\n            if (!helper.isUndefined(res.message)) {\n\n                helper.notify($(\".wp_attachment_holder\", this.$context), res.message);\n            }\n        });\n\n        ajax.always(function () {\n\n            self.loading('stop');\n        });\n    },\n\n    loading: function (state) {\n\n        switch (state) {\n\n            case 'start':\n\n                UI.block($(\".wp_attachment_holder\", this.$context));\n\n                break;\n\n            case 'stop':\n                UI.unblock($(\".wp_attachment_holder\", this.$context));\n\n                break;\n        }\n    },\n\n    attachmentId: function () {\n\n        return $(\"#post_ID\", this.$context).val();\n    },\n\n\n    securityNonce: function () {\n\n        return $(\".bt-regenerate-nonce\", this.$context).val();\n    },\n\n    getFocusPoint: function () {\n\n        return this.getDefaultFocusPoint();\n    },\n\n    setFocusPoint: function (top, left) {\n\n        $(\".attachment.selected\", this.$context).data(\"focus-point\", top + \"-\" + left);\n    },\n\n    getDefaultFocusPoint: function () {\n\n        var point = $(\".bt-focus-point-xy\", this.$context).val();\n\n        return point && point.indexOf('-') > -1 ? point.split('-') : helper.defaultFocusPoint(this.$img.width(), this.$img.height());\n    }\n};\n\nmediaLibPage.setup();\n","});"]}var mediaModal = {

    initialized: false,
    $context: '',

    setup: function () {

        if (!wp || !wp.media) {
            return;
        }

        var self = this;

        if (wp.media.featuredImage && wp.media.featuredImage.frame) {

            this.initFeaturedImageModal();
        }

        if (wp.media.frames && self.isUploadPage()) {

            $(document).one('click', ".media-frame-content li.attachment", function () {

                setTimeout(function () {
                    self.initMediaLibraryModal();

                    self.initFocusPoint();
                    self.appendPreviewButton($(".attachment-actions .button", self.$context));
                });
            });
        }
    },

    initFeaturedImageModal: function () {

        var self = this;

        var frame = wp.media.featuredImage.frame();
        frame.on('ready', function () {

            if (self.initialized) {
                return;
            }

            self.$context = this.models[0].frame.$el;
            self.initialized = true;

            wp.Uploader.queue.on('reset', function () { // Upload completed

                setTimeout(function () {
                    self.initFocusPoint();
                    self.appendPreviewLink();
                });
            });
        });

        frame.on('selection:toggle', function () { // Image selected

            self.initFocusPoint();
            self.appendPreviewLink();
        });

        frame.on('uploader:ready', function (a) { // Image selected

            var interval = setInterval(function () {

                if (self.initFocusPoint()) {

                    self.appendPreviewLink();

                    clearInterval(interval);
                }

            }, 200);
        });

    },

    initMediaLibraryModal: function () {

        var self = this;

        wp.media.frames.edit.on('refresh', function (e) {

            self.initFocusPoint();
            self.appendPreviewButton($(".attachment-actions .button", self.$context));
        });
    },

    initFocusPoint: function () {

        return focusPoint.setup({
                $el: $(".thumbnail-image img", this.$context),
                parentSelector: ".media-frame-content",
                grid: loc.get("grid"),
                defaultPosition: this.getFocusPoint()
            },
            {
                done: $.proxy(this.saveFocusPoint, this)
            }
        );
    },

    appendPreviewLink: function () {

        var self = this,
            link = "<div class='preview-thumbnails'><a href='#'>" + loc.translate('preview') + "</a></div>";

        var $link = $(link).insertAfter($(".attachment-info .edit-attachment", this.$context));

        $link.on('click', function (e) {
            e.preventDefault();

            self.previewModal();
        });
    },

    appendPreviewButton: function ($afterEl) {

        var self = this,
            link = "<input type='button' class='button preview-images-btn' value='" + loc.translate('preview') + "'>";

        var $link = $(link).insertAfter($afterEl);

        $link.on('click', function (e) {
            e.preventDefault();

            self.previewModal();
        });
    },

    previewModal: function () {

        var self = this;

        self.loading('start');

        var ajax = previewData.get(self.attachmentId(), self.securityNonce());

        ajax.done(function (res) {

            if (!helper.isUndefined(res.data))
                previewModal.setup(res.data);
        });

        ajax.always(function () {

            self.loading('stop');
        });

    },

    saveFocusPoint: function (topPercent, leftPercent) {

        this.regenerateThumbnails(topPercent, leftPercent);
        this.setFocusPoint(topPercent / 100, leftPercent / 100);
    },

    regenerateThumbnails: function (topPercent, leftPercent) {

        var self = this;

        var attachment_id = self.attachmentId();

        self.loading('start');

        var ajax = wp.ajax.post('bt-regenerate-thumbnails', {
            thumbnail_id: attachment_id,
            nonce: self.securityNonce(),
            focus_x: topPercent,
            focus_y: leftPercent,
        });

        ajax.done(function (res) {

            if (!helper.isUndefined(res.message)) {

                var $msgParent = self.isUploadPage() ? $(".thumbnail-image", self.$context) : $(".attachment-info", self.$context);

                helper.notify($msgParent, res.message);
            }
        });

        ajax.always(function () {

            self.loading('stop');
        });
    },

    loading: function (state) {

        switch (state) {

            case 'start':

                UI.block($(".attachment-info", this.$context));

                break;

            case 'stop':
                UI.unblock($(".attachment-info", this.$context));

                break;
        }
    },

    attachmentId: function () {

        if (this.isUploadPage()) {

            return $(".attachment-details", this.$context).data('id');

        } else {

            return $(".attachment.selected", this.$context).data('id');
        }
    },


    isUploadPage: function () {
        return $(document.body).hasClass('upload-php');
    },

    securityNonce: function () {
        return $(".bt-regenerate-nonce", this.$context).val();
    },

    getFocusPoint: function () {

        var $attachment = $(".attachment.selected", this.$context),
            point = $attachment.data('focus-point');

        return point ? point.split('-') : this.getDefaultFocusPoint();

    },
    setFocusPoint: function (top, left) {

        $(".attachment.selected", this.$context).data("focus-point", top + "-" + left);
    },
    getDefaultFocusPoint: function () {

        var point = $(".bt-focus-point-xy", this.$context).val(),
            $img = $(".thumbnail-image img", this.$context);

        return point && point.indexOf('-') > -1 ? point.split('-') : helper.defaultFocusPoint($img.width(), $img.height());
    }
};

mediaModal.setup();
jQuery(document).ready(function(t){var e={isObject:function(t){var e=typeof t;return"function"===e||"object"===e&&!!t},isUndefined:function(t){return void 0===t},notify:function(e,n){e.append("<div class='bt-user-message success' style='display: none;'>"+n+"</div>"),t(".bt-user-message",e).fadeIn().delay(5e3).queue(function(e){t(this).fadeOut(function(){t(this).remove()}),e()})},defaultFocusPoint:function(t,e){return o.get("portrait_default_top")&&this.isImagePortrait(t,e)?[.5,0]:o.get("default_fp")},isImagePortrait:function(t,e){return t+.14*e<e}},n={storage:{},add:function(t,i,o){e.isUndefined(n[o])&&(n[o]={}),n[o][t]=i},get:function(t,e){if(this.exist(t,e))return n[e][t]},exist:function(t,i){return!e.isUndefined(n[i])&&!e.isUndefined(n[i][t])}},i={is_blocked:function(t){return!!t.data("bc-el-blocked")},block:function(e){this.is_blocked(e)||(e.data("bc-el-blocked",!0),e.prepend('<div class="bc-block-overlay" style="z-index:10;display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0;display:none;position: absolute;background:rgba(255,255,255,0.4)"></div>'),t(".bc-block-overlay").fadeIn())},unblock:function(e){this.is_blocked(e)&&(e.data("bc-el-blocked",!1),t(".bc-block-overlay").fadeOut(function(){t(this).remove()}))}},o={get:function(t){if(t){if(t.indexOf(".")==-1)return st_loc[t];var e=t.split("."),n=st_loc[e[0]];e=e.splice(1);for(var i=e.length-1,o=0;o<=i;o++){if("object"!=typeof n[e[o]]&&o!==i)return;n=n[e[o]]}return n}},translate:function(t){return this.get("translate."+t)}},a={get:function(e,i){return t.Deferred(function(t){if(n.exist(e,"selector-data"))return void t.resolveWith(this,[n.get(e,"selector-data")]);var o=wp.ajax.post("bt-preview-thumbnails",{thumbnail_id:e,nonce:i});o.done(function(i){n.add(e,i,"selector-data"),t.resolveWith(this,[i])}),o.fail(function(){t.rejectWith(this)})}).promise()}},s={info:{},setup:function(t){this.info=t,this.open()},open:function(){var e=this;e.info.images&&t.bs_selector_modal({bsModal:{destroyHtml:!0,show:!0},noSidebar:!0,id:"bt-thumbnil-selector",modalClass:"bt-modal",itemInnerHtml:'<div class="bf-item-container">\n    <figure>\n        <img src="{{img}}"\n             alt="{{label}}"\n             class="bs-style-thumbnail" data-current-image="{{current_img}}">\n    </figure>\n</div>',content:e.info.l10n,items:e.info.images.map(e.noCacheImage),itemsGroupSize:9,events:{}},{initialZIndex:209901})},noCacheImage:function(t){return t.img+="?"+(new Date).getTime(),t}},c={markerArea:10,isMouseDown:!1,$element:!1,$container:!1,options:{},events:{},setup:function(t,e){return this.events=e||{},this.options=t||{},!!this.prepare()&&(this.bindEvents(),!0)},prepare:function(){return!(!this.options.$el||!this.options.$el.length)&&(this.$element=this.options.$el,this.$element.wrap("<div class='bt-focus-point'></div>"),this.$container=this.$element.parent(),this.$container.append('<div class="bt-focus-point-marker"></div>'),this.options.defaultPosition&&this.fixMarkerPosition(this.options.defaultPosition),this.options.grid&&this.appendGrid(),!0)},handle_event:function(t){var e=Array.prototype.slice.call(arguments,1);if("function"==typeof this.events[t])return this.events[t].apply(this,e)},appendGrid:function(){var e=t("<div>",{"class":"grid"}).insertAfter(this.$container.find("img"));e.html('<div class="x1"></div>\n<div class="x2"></div>\n\n<div class="y1"></div>\n<div class="y2"></div>')},fixMarkerPosition:function(e){var n=parseFloat(e[0]),i=parseFloat(e[1]);if(n>=0&&n<=1&&i>=0&&i<=1){var o=this.$container.find("img"),a=this.markerArea;t(".bt-focus-point-marker",this.$container).css({top:Math.floor(o.height()*i)-a,left:Math.floor(o.width()*n)-a})}},bindEvents:function(){var e=this,n=this.markerArea,i=t(".bt-focus-point-marker",this.$container),o=function(){var n=e.options.parentSelector?t(".bt-focus-point-marker",this.$container).closest(e.options.parentSelector):"";return n&&n.length?n:t(".bt-focus-point-marker",this.$container)}();i.mousedown(function(){e.isMouseDown=!0}),t(".bt-focus-point").mousedown(function(n){e.isMouseDown=!0,t(document).trigger("mousemove.bt-focus-point",[n.pageX,n.pageY])}),o.mouseup(function(){if(e.isMouseDown){e.isMouseDown=!1;var t=parseInt(i.css("top").replace("px","")),o=parseInt(i.css("left").replace("px","")),a=Math.ceil((t+n)/(e.$container.find("img").height()/100)),s=Math.ceil((o+n)/(e.$container.find("img").width()/100));e.handle_event("done",Math.min(s,100),Math.min(a,100))}});var a=this.$container.offset();if(!a)throw"cannot initialize image focus point";t(document).on("mousemove.bt-focus-point",function(t,o,s){if(e.isMouseDown){o=o||t.pageX,s=s||t.pageY;var c=o-a.left-n,r=s-a.top-n,u=e.$container.find("img"),d={top:u.height()-n,left:u.width()-n};r=Math.max(-n,r),r=Math.min(d.top,r),c=Math.max(-n,c),c=Math.min(d.left,c),i.css({top:Math.floor(r),left:Math.floor(c)})}})}},r={initialized:!1,$context:"",setup:function(){if(wp&&wp.media){var e=this;wp.media.featuredImage&&wp.media.featuredImage.frame&&this.initFeaturedImageModal(),wp.media.frames&&e.isUploadPage()&&t(document).one("click",".media-frame-content li.attachment",function(){setTimeout(function(){e.initMediaLibraryModal(),e.initFocusPoint(),e.appendPreviewButton(t(".attachment-actions .button",e.$context))})})}},initFeaturedImageModal:function(){var t=this,e=wp.media.featuredImage.frame();e.on("ready",function(){t.initialized||(t.$context=this.models[0].frame.$el,t.initialized=!0,wp.Uploader.queue.on("reset",function(){setTimeout(function(){t.initFocusPoint(),t.appendPreviewLink()})}))}),e.on("selection:toggle",function(){t.initFocusPoint(),t.appendPreviewLink()}),e.on("uploader:ready",function(e){var n=setInterval(function(){t.initFocusPoint()&&(t.appendPreviewLink(),clearInterval(n))},200)})},initMediaLibraryModal:function(){var e=this;wp.media.frames.edit.on("refresh",function(n){e.initFocusPoint(),e.appendPreviewButton(t(".attachment-actions .button",e.$context))})},initFocusPoint:function(){return c.setup({$el:t(".thumbnail-image img",this.$context),parentSelector:".media-frame-content",grid:o.get("grid"),defaultPosition:this.getFocusPoint()},{done:t.proxy(this.saveFocusPoint,this)})},appendPreviewLink:function(){var e=this,n="<div class='preview-thumbnails'><a href='#'>"+o.translate("preview")+"</a></div>",i=t(n).insertAfter(t(".attachment-info .edit-attachment",this.$context));i.on("click",function(t){t.preventDefault(),e.previewModal()})},appendPreviewButton:function(e){var n=this,i="<input type='button' class='button preview-images-btn' value='"+o.translate("preview")+"'>",a=t(i).insertAfter(e);a.on("click",function(t){t.preventDefault(),n.previewModal()})},previewModal:function(){var t=this;t.loading("start");var n=a.get(t.attachmentId(),t.securityNonce());n.done(function(t){e.isUndefined(t.data)||s.setup(t.data)}),n.always(function(){t.loading("stop")})},saveFocusPoint:function(t,e){this.regenerateThumbnails(t,e),this.setFocusPoint(t/100,e/100)},regenerateThumbnails:function(n,i){var o=this,a=o.attachmentId();o.loading("start");var s=wp.ajax.post("bt-regenerate-thumbnails",{thumbnail_id:a,nonce:o.securityNonce(),focus_x:n,focus_y:i});s.done(function(n){if(!e.isUndefined(n.message)){var i=o.isUploadPage()?t(".thumbnail-image",o.$context):t(".attachment-info",o.$context);e.notify(i,n.message)}}),s.always(function(){o.loading("stop")})},loading:function(e){switch(e){case"start":i.block(t(".attachment-info",this.$context));break;case"stop":i.unblock(t(".attachment-info",this.$context))}},attachmentId:function(){return this.isUploadPage()?t(".attachment-details",this.$context).data("id"):t(".attachment.selected",this.$context).data("id")},isUploadPage:function(){return t(document.body).hasClass("upload-php")},securityNonce:function(){return t(".bt-regenerate-nonce",this.$context).val()},getFocusPoint:function(){var e=t(".attachment.selected",this.$context),n=e.data("focus-point");return n?n.split("-"):this.getDefaultFocusPoint()},setFocusPoint:function(e,n){t(".attachment.selected",this.$context).data("focus-point",e+"-"+n)},getDefaultFocusPoint:function(){var n=t(".bt-focus-point-xy",this.$context).val(),i=t(".thumbnail-image img",this.$context);return n&&n.indexOf("-")>-1?n.split("-"):e.defaultFocusPoint(i.width(),i.height())}};r.setup();var u={initialized:!1,$context:"",$img:"",setup:function(){if(wp&&wp.media){var e=t(document.body);this.$context=e,e.hasClass("post-type-attachment")&&e.hasClass("post-php")&&(this.$img=t(".wp_attachment_image img.thumbnail",this.$context),this.editAttachmentPage())}},editAttachmentPage:function(){this.initFocusPoint(),this.appendPreviewButton(t(".wp_attachment_image .button",this.$context))},initFocusPoint:function(){c.setup({$el:this.$img,parentSelector:"#wpbody-content",grid:o.get("grid"),defaultPosition:this.getFocusPoint()},{done:t.proxy(this.saveFocusPoint,this)})},appendPreviewButton:function(e){var n=this,i="<input type='button' class='button preview-images-btn' value='"+o.translate("preview")+"'>",a=t(i).insertAfter(e);a.on("click",function(t){t.preventDefault(),n.previewModal()})},previewModal:function(){var t=this;t.loading("start");var n=a.get(t.attachmentId(),t.securityNonce());n.done(function(t){e.isUndefined(t.data)||s.setup(t.data)}),n.always(function(){t.loading("stop")})},saveFocusPoint:function(t,e){this.regenerateThumbnails(t,e),this.setFocusPoint(t/100,e/100)},regenerateThumbnails:function(n,i){var o=this,a=o.attachmentId();o.loading("start");var s=wp.ajax.post("bt-regenerate-thumbnails",{thumbnail_id:a,nonce:o.securityNonce(),focus_x:n,focus_y:i});s.done(function(n){e.isUndefined(n.message)||e.notify(t(".wp_attachment_holder",this.$context),n.message)}),s.always(function(){o.loading("stop")})},loading:function(e){switch(e){case"start":i.block(t(".wp_attachment_holder",this.$context));break;case"stop":i.unblock(t(".wp_attachment_holder",this.$context))}},attachmentId:function(){return t("#post_ID",this.$context).val()},securityNonce:function(){return t(".bt-regenerate-nonce",this.$context).val()},getFocusPoint:function(){return this.getDefaultFocusPoint()},setFocusPoint:function(e,n){t(".attachment.selected",this.$context).data("focus-point",e+"-"+n)},getDefaultFocusPoint:function(){var n=t(".bt-focus-point-xy",this.$context).val();return n&&n.indexOf("-")>-1?n.split("-"):e.defaultFocusPoint(this.$img.width(),this.$img.height())}};u.setup()});
//# sourceMappingURL=better-smart-thumbnails.min.js.map
{"version":3,"sources":[".before-concat.txt","utils.js","preview-data.js","preview-modal.js","focus-point.js","media-modal.js","media-lib-page.js"],"names":["jQuery","document","ready","$","helper","isObject","obj","type","isUndefined","notify","$el","message","append","fadeIn","delay","queue","n","this","fadeOut","remove","defaultFocusPoint","imageWidth","imageHeight","loc","get","isImagePortrait","cache","storage","add","name","data","group","exist","UI","is_blocked","$element","block","prepend","unblock","indexOf","st_loc","_v","split","current","splice","len","length","i","translate","index","previewData","attachmentId","securityNonce","Deferred","deferred","resolveWith","ajax","wp","post","thumbnail_id","nonce","done","res","fail","rejectWith","promise","previewModal","info","setup","open","self","images","bs_selector_modal","bsModal","destroyHtml","show","noSidebar","id","modalClass","itemInnerHtml","content","l10n","items","map","noCacheImage","itemsGroupSize","events","initialZIndex","img","Date","getTime","focusPoint","markerArea","isMouseDown","$container","options","prepare","bindEvents","wrap","parent","defaultPosition","fixMarkerPosition","grid","appendGrid","handle_event","event","args","Array","prototype","slice","call","arguments","apply","$grid","class","insertAfter","find","html","pos","x","parseFloat","y","$img","css","top","Math","floor","height","left","width","$marker","$markerWrapper","$m","parentSelector","closest","mousedown","e","trigger","pageX","pageY","mouseup","parseInt","replace","topPercent","ceil","leftPercent","min","offset","on","box","max","mediaModal","initialized","$context","media","featuredImage","frame","initFeaturedImageModal","frames","isUploadPage","one","setTimeout","initMediaLibraryModal","initFocusPoint","appendPreviewButton","models","Uploader","appendPreviewLink","a","interval","setInterval","clearInterval","edit","getFocusPoint","proxy","saveFocusPoint","link","$link","preventDefault","$afterEl","loading","always","regenerateThumbnails","setFocusPoint","attachment_id","focus_x","focus_y","$msgParent","state","body","hasClass","val","$attachment","point","getDefaultFocusPoint","mediaLibPage","$body","editAttachmentPage"],"mappings":"AAAAA,OAAAC,UAAAC,MAAA,SAAAC,GCAA,GAAAC,IACAC,SAAA,SAAAC,GACA,GAAAC,SAAAD,EACA,OAAA,aAAAC,GAAA,WAAAA,KAAAD,GAEAE,YAAA,SAAAF,GAEA,MAAA,UAAAA,GAGAG,OAAA,SAAAC,EAAAC,GAEAD,EAAAE,OAAA,+DAAAD,EAAA,UAEAR,EAAA,mBAAAO,GAAAG,SAAAC,MAAA,KAAAC,MAAA,SAAAC,GAEAb,EAAAc,MAAAC,QAAA,WACAf,EAAAc,MAAAE,WAEAH,OAIAI,kBAAA,SAAAC,EAAAC,GAEA,MAAAC,GAAAC,IAAA,yBACAP,KAAAQ,gBAAAJ,EAAAC,IAEA,GAAA,GAGAC,EAAAC,IAAA,eAGAC,gBAAA,SAAAJ,EAAAC,GAEA,MAAAD,GAAA,IAAAC,EAAAA,IAGAI,GACAC,WAEAC,IAAA,SAAAC,EAAAC,EAAAC,GAEA3B,EAAAI,YAAAkB,EAAAK,MACAL,EAAAK,OAEAL,EAAAK,GAAAF,GAAAC,GAGAN,IAAA,SAAAK,EAAAE,GAEA,GAAAd,KAAAe,MAAAH,EAAAE,GAEA,MAAAL,GAAAK,GAAAF,IAIAG,MAAA,SAAAH,EAAAE,GAEA,OAAA3B,EAAAI,YAAAkB,EAAAK,MAAA3B,EAAAI,YAAAkB,EAAAK,GAAAF,MAKAI,GAEAC,WAAA,SAAAC,GAEA,QAAAA,EAAAL,KAAA,kBAGAM,MAAA,SAAAD,GAEAlB,KAAAiB,WAAAC,KAIAA,EAAAL,KAAA,iBAAA,GAEAK,EAAAE,QAAA,4MAEAlC,EAAA,qBAAAU,WAIAyB,QAAA,SAAAH,GAEAlB,KAAAiB,WAAAC,KAIAA,EAAAL,KAAA,iBAAA,GAEA3B,EAAA,qBAAAe,QAAA,WACAf,EAAAc,MAAAE,cAMAI,GAEAC,IAAA,SAAAD,GAEA,GAAAA,EAAA,CAIA,GAAAA,EAAAgB,QAAA,SAEA,MAAAC,QAAAjB,EAGA,IAAAkB,GAAAlB,EAAAmB,MAAA,KACAC,EAAAH,OAAAC,EAAA,GACAA,GAAAA,EAAAG,OAAA,EAIA,KAAA,GAFAC,GAAAJ,EAAAK,OAAA,EAEAC,EAAA,EAAAA,GAAAF,EAAAE,IAAA,CAEA,GAAA,gBAAAJ,GAAAF,EAAAM,KAAAA,IAAAF,EACA,MAGAF,GAAAA,EAAAF,EAAAM,IAGA,MAAAJ,KAGAK,UAAA,SAAAC,GAEA,MAAAhC,MAAAO,IAAA,aAAAyB,KCtIAC,GAEA1B,IAAA,SAAA2B,EAAAC,GAEA,MAAAjD,GAAAkD,SAAA,SAAAC,GAEA,GAAA5B,EAAAM,MAAAmB,EAAA,iBAIA,WAFAG,GAAAC,YAAAtC,MAAAS,EAAAF,IAAA2B,EAAA,kBAKA,IAAAK,GAAAC,GAAAD,KAAAE,KAAA,yBACAC,aAAAR,EACAS,MAAAR,GAGAI,GAAAK,KAAA,SAAAC,GACApC,EAAAE,IAAAuB,EAAAW,EAAA,iBACAR,EAAAC,YAAAtC,MAAA6C,MAGAN,EAAAO,KAAA,WAEAT,EAAAU,WAAA/C,UAEAgD,YC3BAC,GAEAC,QAEAC,MAAA,SAAAD,GAEAlD,KAAAkD,KAAAA,EAEAlD,KAAAoD,QAGAA,KAAA,WAEA,GAAAC,GAAArD,IAEAqD,GAAAH,KAAAI,QAKApE,EAAAqE,mBACAC,SACAC,aAAA,EACAC,MAAA,GAGAC,WAAA,EAEAC,GAAA,uBACAC,WAAA,WAEAC,cAAA,gNAEAC,QAAAV,EAAAH,KAAAc,KACAC,MAAAZ,EAAAH,KAAAI,OAAAY,IAAAb,EAAAc,cAEAC,eAAA,EAEAC,YAEAC,cAAA,UAIAH,aAAA,SAAA9E,GAIA,MAFAA,GAAAkF,KAAA,KAAA,GAAAC,OAAAC,UAEApF,IChDAqF,GAEAC,WAAA,GAEAC,aAAA,EACA1D,UAAA,EACA2D,YAAA,EAEAC,WAEAT,UAEAlB,MAAA,SAAA2B,EAAAT,GAKA,MAHArE,MAAAqE,OAAAA,MACArE,KAAA8E,QAAAA,QAEA9E,KAAA+E,YAEA/E,KAAAgF,cAEA,IAMAD,QAAA,WAEA,SAAA/E,KAAA8E,QAAArF,MAAAO,KAAA8E,QAAArF,IAAAoC,UAIA7B,KAAAkB,SAAAlB,KAAA8E,QAAArF,IACAO,KAAAkB,SAAA+D,KAAA,sCAEAjF,KAAA6E,WAAA7E,KAAAkB,SAAAgE,SACAlF,KAAA6E,WAAAlF,OAAA,6CAEAK,KAAA8E,QAAAK,iBACAnF,KAAAoF,kBAAApF,KAAA8E,QAAAK,iBAGAnF,KAAA8E,QAAAO,MACArF,KAAAsF,cAGA,IAGAC,aAAA,SAAAC,GACA,GAAAC,GAAAC,MAAAC,UAAAC,MAAAC,KAAAC,UAAA,EAEA,IAAA,kBAAA9F,MAAAqE,OAAAmB,GACA,MAAAxF,MAAAqE,OAAAmB,GAAAO,MAAA/F,KAAAyF,IAGAH,WAAA,WAEA,GAAAU,GAAA9G,EAAA,SAAA+G,QAAA,SAAAC,YAAAlG,KAAA6E,WAAAsB,KAAA,OAEAH,GAAAI,KAAA,qGAGAhB,kBAAA,SAAAiB,GAEA,GAAAC,GAAAC,WAAAF,EAAA,IACAG,EAAAD,WAAAF,EAAA,GAEA,IAAAC,GAAA,GAAAA,GAAA,GAIAE,GAAA,GAAAA,GAAA,EAAA,CAIA,GAAAC,GAAAzG,KAAA6E,WAAAsB,KAAA,OACAxB,EAAA3E,KAAA2E,UAEAzF,GAAA,yBAAAc,KAAA6E,YAAA6B,KACAC,IAAAC,KAAAC,MAAAJ,EAAAK,SAAAN,GAAA7B,EACAoC,KAAAH,KAAAC,MAAAJ,EAAAO,QAAAV,GAAA3B,MAIAK,WAAA,WAEA,GAAA3B,GAAArD,KAEA2E,EAAA3E,KAAA2E,WACAsC,EAAA/H,EAAA,yBAAAc,KAAA6E,YAEAqC,EAAA,WAEA,GAAAC,GAAA9D,EAAAyB,QAAAsC,eAAAlI,EAAA,yBAAAc,KAAA6E,YAAAwC,QAAAhE,EAAAyB,QAAAsC,gBAAA,EAEA,OAAAD,IAAAA,EAAAtF,OACAsF,EAGAjI,EAAA,yBAAAc,KAAA6E,cAIAoC,GAAAK,UAAA,WAEAjE,EAAAuB,aAAA,IAGA1F,EAAA,mBAAAoI,UAAA,SAAAC,GAEAlE,EAAAuB,aAAA,EAEA1F,EAAAF,UAAAwI,QAAA,4BAAAD,EAAAE,MAAAF,EAAAG,UAIAR,EAAAS,QAAA,WAEA,GAAAtE,EAAAuB,YAAA,CAIAvB,EAAAuB,aAAA,CAGA,IAAA+B,GAAAiB,SAAAX,EAAAP,IAAA,OAAAmB,QAAA,KAAA,KACAd,EAAAa,SAAAX,EAAAP,IAAA,QAAAmB,QAAA,KAAA,KAEAC,EAAAlB,KAAAmB,MAAApB,EAAAhC,IAAAtB,EAAAwB,WAAAsB,KAAA,OAAAW,SAAA,MACAkB,EAAApB,KAAAmB,MAAAhB,EAAApC,IAAAtB,EAAAwB,WAAAsB,KAAA,OAAAa,QAAA,KAGA3D,GAAAkC,aAAA,OAAAqB,KAAAqB,IAAAD,EAAA,KAAApB,KAAAqB,IAAAH,EAAA,QAGA,IAAAI,GAAAlI,KAAA6E,WAAAqD,QAEA,KAAAA,EACA,KAAA,qCAGAhJ,GAAAF,UAAAmJ,GAAA,2BAAA,SAAAZ,EAAAE,EAAAC,GAEA,GAAArE,EAAAuB,YAAA,CAIA6C,EAAAA,GAAAF,EAAAE,MACAC,EAAAA,GAAAH,EAAAG,KAEA,IAAApB,GAAAmB,EAAAS,EAAAnB,KAAApC,EACA6B,EAAAkB,EAAAQ,EAAAvB,IAAAhC,EAGA8B,EAAApD,EAAAwB,WAAAsB,KAAA,OACAiC,GAEAzB,IAAAF,EAAAK,SAAAnC,EACAoC,KAAAN,EAAAO,QAAArC,EAGA6B,GAAAI,KAAAyB,KAAA1D,EAAA6B,GACAA,EAAAI,KAAAqB,IAAAG,EAAAzB,IAAAH,GAEAF,EAAAM,KAAAyB,KAAA1D,EAAA2B,GACAA,EAAAM,KAAAqB,IAAAG,EAAArB,KAAAT,GAEAW,EAAAP,KACAC,IAAAC,KAAAC,MAAAL,GACAO,KAAAH,KAAAC,MAAAP,UC3KAgC,GAEAC,aAAA,EACAC,SAAA,GAEArF,MAAA,WAEA,GAAAX,IAAAA,GAAAiG,MAAA,CAIA,GAAApF,GAAArD,IAEAwC,IAAAiG,MAAAC,eAAAlG,GAAAiG,MAAAC,cAAAC,OAEA3I,KAAA4I,yBAGApG,GAAAiG,MAAAI,QAAAxF,EAAAyF,gBAEA5J,EAAAF,UAAA+J,IAAA,QAAA,qCAAA,WAEAC,WAAA,WACA3F,EAAA4F,wBAEA5F,EAAA6F,iBACA7F,EAAA8F,oBAAAjK,EAAA,8BAAAmE,EAAAmF,iBAMAI,uBAAA,WAEA,GAAAvF,GAAArD,KAEA2I,EAAAnG,GAAAiG,MAAAC,cAAAC,OACAA,GAAAR,GAAA,QAAA,WAEA9E,EAAAkF,cAIAlF,EAAAmF,SAAAxI,KAAAoJ,OAAA,GAAAT,MAAAlJ,IACA4D,EAAAkF,aAAA,EAEA/F,GAAA6G,SAAAvJ,MAAAqI,GAAA,QAAA,WAEAa,WAAA,WACA3F,EAAA6F,iBACA7F,EAAAiG,2BAKAX,EAAAR,GAAA,mBAAA,WAEA9E,EAAA6F,iBACA7F,EAAAiG,sBAGAX,EAAAR,GAAA,iBAAA,SAAAoB,GAEA,GAAAC,GAAAC,YAAA,WAEApG,EAAA6F,mBAEA7F,EAAAiG,oBAEAI,cAAAF,KAGA,QAKAP,sBAAA,WAEA,GAAA5F,GAAArD,IAEAwC,IAAAiG,MAAAI,OAAAc,KAAAxB,GAAA,UAAA,SAAAZ,GAEAlE,EAAA6F,iBACA7F,EAAA8F,oBAAAjK,EAAA,8BAAAmE,EAAAmF,cAIAU,eAAA,WAEA,MAAAxE,GAAAvB,OACA1D,IAAAP,EAAA,uBAAAc,KAAAwI,UACApB,eAAA,uBACA/B,KAAA/E,EAAAC,IAAA,QACA4E,gBAAAnF,KAAA4J,kBAGAhH,KAAA1D,EAAA2K,MAAA7J,KAAA8J,eAAA9J,SAKAsJ,kBAAA,WAEA,GAAAjG,GAAArD,KACA+J,EAAA,+CAAAzJ,EAAAyB,UAAA,WAAA,aAEAiI,EAAA9K,EAAA6K,GAAA7D,YAAAhH,EAAA,oCAAAc,KAAAwI,UAEAwB,GAAA7B,GAAA,QAAA,SAAAZ,GACAA,EAAA0C,iBAEA5G,EAAAJ,kBAIAkG,oBAAA,SAAAe,GAEA,GAAA7G,GAAArD,KACA+J,EAAA,iEAAAzJ,EAAAyB,UAAA,WAAA,KAEAiI,EAAA9K,EAAA6K,GAAA7D,YAAAgE,EAEAF,GAAA7B,GAAA,QAAA,SAAAZ,GACAA,EAAA0C,iBAEA5G,EAAAJ,kBAIAA,aAAA,WAEA,GAAAI,GAAArD,IAEAqD,GAAA8G,QAAA,QAEA,IAAA5H,GAAAN,EAAA1B,IAAA8C,EAAAnB,eAAAmB,EAAAlB,gBAEAI,GAAAK,KAAA,SAAAC,GAEA1D,EAAAI,YAAAsD,EAAAhC,OACAoC,EAAAE,MAAAN,EAAAhC,QAGA0B,EAAA6H,OAAA,WAEA/G,EAAA8G,QAAA,WAKAL,eAAA,SAAAhC,EAAAE,GAEAhI,KAAAqK,qBAAAvC,EAAAE,GACAhI,KAAAsK,cAAAxC,EAAA,IAAAE,EAAA,MAGAqC,qBAAA,SAAAvC,EAAAE,GAEA,GAAA3E,GAAArD,KAEAuK,EAAAlH,EAAAnB,cAEAmB,GAAA8G,QAAA,QAEA,IAAA5H,GAAAC,GAAAD,KAAAE,KAAA,4BACAC,aAAA6H,EACA5H,MAAAU,EAAAlB,gBACAqI,QAAA1C,EACA2C,QAAAzC,GAGAzF,GAAAK,KAAA,SAAAC,GAEA,IAAA1D,EAAAI,YAAAsD,EAAAnD,SAAA,CAEA,GAAAgL,GAAArH,EAAAyF,eAAA5J,EAAA,mBAAAmE,EAAAmF,UAAAtJ,EAAA,mBAAAmE,EAAAmF,SAEArJ,GAAAK,OAAAkL,EAAA7H,EAAAnD,YAIA6C,EAAA6H,OAAA,WAEA/G,EAAA8G,QAAA,WAIAA,QAAA,SAAAQ,GAEA,OAAAA,GAEA,IAAA,QAEA3J,EAAAG,MAAAjC,EAAA,mBAAAc,KAAAwI,UAEA,MAEA,KAAA,OACAxH,EAAAK,QAAAnC,EAAA,mBAAAc,KAAAwI,aAMAtG,aAAA,WAEA,MAAAlC,MAAA8I,eAEA5J,EAAA,sBAAAc,KAAAwI,UAAA3H,KAAA,MAIA3B,EAAA,uBAAAc,KAAAwI,UAAA3H,KAAA,OAKAiI,aAAA,WACA,MAAA5J,GAAAF,SAAA4L,MAAAC,SAAA,eAGA1I,cAAA,WACA,MAAAjD,GAAA,uBAAAc,KAAAwI,UAAAsC,OAGAlB,cAAA,WAEA,GAAAmB,GAAA7L,EAAA,uBAAAc,KAAAwI,UACAwC,EAAAD,EAAAlK,KAAA,cAEA,OAAAmK,GAAAA,EAAAvJ,MAAA,KAAAzB,KAAAiL,wBAGAX,cAAA,SAAA3D,EAAAI,GAEA7H,EAAA,uBAAAc,KAAAwI,UAAA3H,KAAA,cAAA8F,EAAA,IAAAI,IAEAkE,qBAAA,WAEA,GAAAD,GAAA9L,EAAA,qBAAAc,KAAAwI,UAAAsC,MACArE,EAAAvH,EAAA,uBAAAc,KAAAwI,SAEA,OAAAwC,IAAAA,EAAA1J,QAAA,QAAA0J,EAAAvJ,MAAA,KAAAtC,EAAAgB,kBAAAsG,EAAAO,QAAAP,EAAAK,WAIAwB,GAAAnF,OCvPA,IAAA+H,IAEA3C,aAAA,EACAC,SAAA,GAEA/B,KAAA,GAEAtD,MAAA,WAEA,GAAAX,IAAAA,GAAAiG,MAAA,CAIA,GAAA0C,GAAAjM,EAAAF,SAAA4L,KAEA5K,MAAAwI,SAAA2C,EAEAA,EAAAN,SAAA,yBAAAM,EAAAN,SAAA,cAIA7K,KAAAyG,KAAAvH,EAAA,qCAAAc,KAAAwI,UAEAxI,KAAAoL,wBAGAA,mBAAA,WAEApL,KAAAkJ,iBAEAlJ,KAAAmJ,oBAAAjK,EAAA,+BAAAc,KAAAwI,YAGAU,eAAA,WAEAxE,EAAAvB,OACA1D,IAAAO,KAAAyG,KACAW,eAAA,kBAEA/B,KAAA/E,EAAAC,IAAA,QACA4E,gBAAAnF,KAAA4J,kBAEAhH,KAAA1D,EAAA2K,MAAA7J,KAAA8J,eAAA9J,SAMAmJ,oBAAA,SAAAe,GAEA,GAAA7G,GAAArD,KACA+J,EAAA,iEAAAzJ,EAAAyB,UAAA,WAAA,KAEAiI,EAAA9K,EAAA6K,GAAA7D,YAAAgE,EAEAF,GAAA7B,GAAA,QAAA,SAAAZ,GACAA,EAAA0C,iBAEA5G,EAAAJ,kBAIAA,aAAA,WAEA,GAAAI,GAAArD,IAEAqD,GAAA8G,QAAA,QAEA,IAAA5H,GAAAN,EAAA1B,IAAA8C,EAAAnB,eAAAmB,EAAAlB,gBAEAI,GAAAK,KAAA,SAAAC,GAEA1D,EAAAI,YAAAsD,EAAAhC,OACAoC,EAAAE,MAAAN,EAAAhC,QAGA0B,EAAA6H,OAAA,WAEA/G,EAAA8G,QAAA,WAKAL,eAAA,SAAAhC,EAAAE,GAEAhI,KAAAqK,qBAAAvC,EAAAE,GACAhI,KAAAsK,cAAAxC,EAAA,IAAAE,EAAA,MAGAqC,qBAAA,SAAAvC,EAAAE,GAEA,GAAA3E,GAAArD,KAEAuK,EAAAlH,EAAAnB,cAEAmB,GAAA8G,QAAA,QAEA,IAAA5H,GAAAC,GAAAD,KAAAE,KAAA,4BACAC,aAAA6H,EACA5H,MAAAU,EAAAlB,gBACAqI,QAAA1C,EACA2C,QAAAzC,GAGAzF,GAAAK,KAAA,SAAAC,GAEA1D,EAAAI,YAAAsD,EAAAnD,UAEAP,EAAAK,OAAAN,EAAA,wBAAAc,KAAAwI,UAAA3F,EAAAnD,WAIA6C,EAAA6H,OAAA,WAEA/G,EAAA8G,QAAA,WAIAA,QAAA,SAAAQ,GAEA,OAAAA,GAEA,IAAA,QAEA3J,EAAAG,MAAAjC,EAAA,wBAAAc,KAAAwI,UAEA,MAEA,KAAA,OACAxH,EAAAK,QAAAnC,EAAA,wBAAAc,KAAAwI,aAMAtG,aAAA,WAEA,MAAAhD,GAAA,WAAAc,KAAAwI,UAAAsC,OAIA3I,cAAA,WAEA,MAAAjD,GAAA,uBAAAc,KAAAwI,UAAAsC,OAGAlB,cAAA,WAEA,MAAA5J,MAAAiL,wBAGAX,cAAA,SAAA3D,EAAAI,GAEA7H,EAAA,uBAAAc,KAAAwI,UAAA3H,KAAA,cAAA8F,EAAA,IAAAI,IAGAkE,qBAAA,WAEA,GAAAD,GAAA9L,EAAA,qBAAAc,KAAAwI,UAAAsC,KAEA,OAAAE,IAAAA,EAAA1J,QAAA,QAAA0J,EAAAvJ,MAAA,KAAAtC,EAAAgB,kBAAAH,KAAAyG,KAAAO,QAAAhH,KAAAyG,KAAAK,WAIAoE,GAAA/H","file":"better-smart-thumbnails.min.js","sourcesContent":["jQuery(document).ready(function($) {","var helper = {\n    isObject: function (obj) {\n        var type = typeof obj;\n        return type === 'function' || type === 'object' && !!obj;\n    },\n    isUndefined: function (obj) {\n\n        return obj === void 0;\n    },\n\n    notify: function ($el, message) {\n\n        $el.append(\"<div class='bt-user-message success' style='display: none;'>\" + message + \"</div>\");\n\n        $(\".bt-user-message\", $el).fadeIn().delay(5e3).queue(function (n) {\n\n            $(this).fadeOut(function () {\n                $(this).remove();\n            });\n            n();\n        });\n    },\n\n    defaultFocusPoint: function (imageWidth, imageHeight) {\n\n        if (loc.get('portrait_default_top') &&\n            this.isImagePortrait(imageWidth, imageHeight)) {\n\n            return [0.5, 0];\n        }\n\n        return loc.get('default_fp');\n    },\n\n    isImagePortrait: function (imageWidth, imageHeight) {\n\n        return ( imageWidth + ( imageHeight * 0.14 ) ) < imageHeight;\n    }\n};\nvar cache = {\n    storage: {},\n\n    add: function (name, data, group) {\n\n        if (helper.isUndefined(cache[group]))\n            cache[group] = {};\n\n        cache[group][name] = data;\n    },\n\n    get: function (name, group) {\n\n        if (this.exist(name, group)) {\n\n            return cache[group][name];\n        }\n    },\n\n    exist: function (name, group) {\n\n        return !helper.isUndefined(cache[group]) && !helper.isUndefined(cache[group][name]);\n    }\n};\n\n\nvar UI = {\n\n    is_blocked: function ($element) {\n\n        return !!$element.data('bc-el-blocked');\n    },\n\n    block: function ($element) {\n\n        if (this.is_blocked($element)) {\n            return;\n        }\n\n        $element.data('bc-el-blocked', true);\n\n        $element.prepend('<div class=\"bc-block-overlay\" style=\"z-index:10;display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0;display:none;position: absolute;background:rgba(255,255,255,0.4)\"></div>');\n\n        $(\".bc-block-overlay\").fadeIn();\n    },\n\n\n    unblock: function ($element) {\n\n        if (!this.is_blocked($element)) {\n            return;\n        }\n\n        $element.data('bc-el-blocked', false);\n\n        $(\".bc-block-overlay\").fadeOut(function () {\n            $(this).remove();\n        });\n    },\n};\n\n\nvar loc = {\n\n    get: function (loc) {\n\n        if (!loc) {\n            return;\n        }\n\n        if (loc.indexOf('.') == -1) {\n\n            return st_loc[loc];\n        }\n\n        var _v = loc.split('.');\n        var current = st_loc[_v[0]];\n        _v = _v.splice(1);\n\n        var len = _v.length - 1;\n\n        for (var i = 0; i <= len; i++) {\n\n            if (typeof current[_v[i]] !== 'object' && i !== len) {\n                return;\n            }\n\n            current = current[_v[i]];\n        }\n\n        return current;\n    },\n\n    translate: function (index) {\n\n        return this.get('translate.' + index);\n    }\n};","var previewData = {\n\n    get: function (attachmentId, securityNonce) {\n\n        return $.Deferred(function (deferred) {\n\n            if (cache.exist(attachmentId, 'selector-data')) {\n\n                deferred.resolveWith(this, [cache.get(attachmentId, 'selector-data')]);\n\n                return;\n            }\n\n            var ajax = wp.ajax.post('bt-preview-thumbnails', {\n                thumbnail_id: attachmentId,\n                nonce: securityNonce\n            });\n\n            ajax.done(function (res) {\n                cache.add(attachmentId, res, 'selector-data');\n                deferred.resolveWith(this, [res]);\n            });\n\n            ajax.fail(function () {\n\n                deferred.rejectWith(this);\n            });\n        }).promise();\n    },\n};","var previewModal = {\n\n    info: {},\n\n    setup: function (info) {\n\n        this.info = info;\n\n        this.open();\n    },\n\n    open: function () {\n\n        var self = this;\n\n        if (!self.info.images) {\n            return;\n        }\n\n\n        $.bs_selector_modal({\n            bsModal: {\n                destroyHtml: true,\n                show: true\n            },\n\n            noSidebar: true,\n\n            id: 'bt-thumbnil-selector',\n            modalClass: 'bt-modal',\n\n            itemInnerHtml: '<div class=\"bf-item-container\">\\n    <figure>\\n        <img src=\"{{img}}\"\\n             alt=\"{{label}}\"\\n             class=\"bs-style-thumbnail\" data-current-image=\"{{current_img}}\">\\n    </figure>\\n</div>',\n\n            content: self.info.l10n,\n            items: self.info.images.map(self.noCacheImage),\n\n            itemsGroupSize: 9,\n\n            events: {}\n        }, {\n            initialZIndex: 209901\n        });\n    },\n\n    noCacheImage: function (obj) {\n\n        obj.img += \"?\" + new Date().getTime();\n\n        return obj;\n    }\n};","var focusPoint = {\n\n    markerArea: 10,\n\n    isMouseDown: false,\n    $element: false,\n    $container: false,\n\n    options: {},\n\n    events: {},\n\n    setup: function (options, events) {\n\n        this.events = events || {};\n        this.options = options || {};\n\n        if (this.prepare()) {\n\n            this.bindEvents();\n\n            return true;\n        }\n\n        return false;\n    },\n\n    prepare: function () {\n\n        if (!this.options.$el || !this.options.$el.length) {\n            return false;\n        }\n\n        this.$element = this.options.$el;\n        this.$element.wrap(\"<div class='bt-focus-point'></div>\");\n        //\n        this.$container = this.$element.parent();\n        this.$container.append('<div class=\"bt-focus-point-marker\"></div>');\n\n        if (this.options.defaultPosition) {\n            this.fixMarkerPosition(this.options.defaultPosition);\n        }\n\n        if (this.options.grid) {\n            this.appendGrid();\n        }\n\n        return true;\n    },\n\n    handle_event: function (event) {\n        var args = Array.prototype.slice.call(arguments, 1);\n\n        if (typeof this.events[event] === 'function')\n            return this.events[event].apply(this, args);\n    },\n\n    appendGrid: function () {\n\n        var $grid = $(\"<div>\", {\"class\": \"grid\"}).insertAfter(this.$container.find('img'));\n\n        $grid.html('<div class=\"x1\"></div>\\n<div class=\"x2\"></div>\\n\\n<div class=\"y1\"></div>\\n<div class=\"y2\"></div>');\n    },\n\n    fixMarkerPosition: function (pos) {\n\n        var x = parseFloat(pos[0]),\n            y = parseFloat(pos[1]);\n\n        if (!(x >= 0 && x <= 1)) {\n            return;\n        }\n\n        if (!(y >= 0 && y <= 1)) {\n            return;\n        }\n\n        var $img = this.$container.find('img');\n        var markerArea = this.markerArea;\n\n        $(\".bt-focus-point-marker\", this.$container).css({\n            top: Math.floor($img.height() * y) - markerArea,\n            left: Math.floor($img.width() * x) - markerArea\n        });\n    },\n\n    bindEvents: function () {\n\n        var self = this;\n\n        var markerArea = this.markerArea,\n            $marker = $(\".bt-focus-point-marker\", this.$container);\n\n        var $markerWrapper = (function () {\n\n            var $m = self.options.parentSelector ? $(\".bt-focus-point-marker\", this.$container).closest(self.options.parentSelector) : '';\n\n            if ($m && $m.length) {\n                return $m;\n            }\n\n            return $(\".bt-focus-point-marker\", this.$container);\n\n        })();\n\n        $marker.mousedown(function () {\n\n            self.isMouseDown = true;\n        });\n\n        $(\".bt-focus-point\").mousedown(function (e) {\n\n            self.isMouseDown = true;\n\n            $(document).trigger('mousemove.bt-focus-point', [e.pageX, e.pageY]);\n        });\n\n\n        $markerWrapper.mouseup(function () {\n\n            if (!self.isMouseDown) {\n                return;\n            }\n\n            self.isMouseDown = false;\n\n\n            var top = parseInt($marker.css('top').replace('px', '')),\n                left = parseInt($marker.css('left').replace('px', ''));\n\n            var topPercent = Math.ceil((top + markerArea) / (self.$container.find('img').height() / 100)),\n                leftPercent = Math.ceil((left + markerArea) / (self.$container.find('img').width() / 100));\n\n\n            self.handle_event('done', Math.min(leftPercent, 100), Math.min(topPercent, 100));\n        });\n\n        var offset = this.$container.offset();\n\n        if (!offset) {\n            throw 'cannot initialize image focus point';\n        }\n\n        $(document).on('mousemove.bt-focus-point', function (e, pageX, pageY) {\n\n            if (!self.isMouseDown) {\n                return;\n            }\n\n            pageX = pageX || e.pageX;\n            pageY = pageY || e.pageY;\n\n            var x = pageX - offset.left - markerArea,\n                y = pageY - offset.top - markerArea;\n\n\n            var $img = self.$container.find('img'),\n                box = {\n\n                    top: $img.height() - markerArea,\n                    left: $img.width() - markerArea,\n                };\n\n            y = Math.max(-markerArea, y);\n            y = Math.min(box.top, y);\n\n            x = Math.max(-markerArea, x);\n            x = Math.min(box.left, x);\n\n            $marker.css({\n                top: Math.floor(y),\n                left: Math.floor(x),\n            });\n        });\n    }\n};","var mediaModal = {\n\n    initialized: false,\n    $context: '',\n\n    setup: function () {\n\n        if (!wp || !wp.media) {\n            return;\n        }\n\n        var self = this;\n\n        if (wp.media.featuredImage && wp.media.featuredImage.frame) {\n\n            this.initFeaturedImageModal();\n        }\n\n        if (wp.media.frames && self.isUploadPage()) {\n\n            $(document).one('click', \".media-frame-content li.attachment\", function () {\n\n                setTimeout(function () {\n                    self.initMediaLibraryModal();\n\n                    self.initFocusPoint();\n                    self.appendPreviewButton($(\".attachment-actions .button\", self.$context));\n                });\n            });\n        }\n    },\n\n    initFeaturedImageModal: function () {\n\n        var self = this;\n\n        var frame = wp.media.featuredImage.frame();\n        frame.on('ready', function () {\n\n            if (self.initialized) {\n                return;\n            }\n\n            self.$context = this.models[0].frame.$el;\n            self.initialized = true;\n\n            wp.Uploader.queue.on('reset', function () { // Upload completed\n\n                setTimeout(function () {\n                    self.initFocusPoint();\n                    self.appendPreviewLink();\n                });\n            });\n        });\n\n        frame.on('selection:toggle', function () { // Image selected\n\n            self.initFocusPoint();\n            self.appendPreviewLink();\n        });\n\n        frame.on('uploader:ready', function (a) { // Image selected\n\n            var interval = setInterval(function () {\n\n                if (self.initFocusPoint()) {\n\n                    self.appendPreviewLink();\n\n                    clearInterval(interval);\n                }\n\n            }, 200);\n        });\n\n    },\n\n    initMediaLibraryModal: function () {\n\n        var self = this;\n\n        wp.media.frames.edit.on('refresh', function (e) {\n\n            self.initFocusPoint();\n            self.appendPreviewButton($(\".attachment-actions .button\", self.$context));\n        });\n    },\n\n    initFocusPoint: function () {\n\n        return focusPoint.setup({\n                $el: $(\".thumbnail-image img\", this.$context),\n                parentSelector: \".media-frame-content\",\n                grid: loc.get(\"grid\"),\n                defaultPosition: this.getFocusPoint()\n            },\n            {\n                done: $.proxy(this.saveFocusPoint, this)\n            }\n        );\n    },\n\n    appendPreviewLink: function () {\n\n        var self = this,\n            link = \"<div class='preview-thumbnails'><a href='#'>\" + loc.translate('preview') + \"</a></div>\";\n\n        var $link = $(link).insertAfter($(\".attachment-info .edit-attachment\", this.$context));\n\n        $link.on('click', function (e) {\n            e.preventDefault();\n\n            self.previewModal();\n        });\n    },\n\n    appendPreviewButton: function ($afterEl) {\n\n        var self = this,\n            link = \"<input type='button' class='button preview-images-btn' value='\" + loc.translate('preview') + \"'>\";\n\n        var $link = $(link).insertAfter($afterEl);\n\n        $link.on('click', function (e) {\n            e.preventDefault();\n\n            self.previewModal();\n        });\n    },\n\n    previewModal: function () {\n\n        var self = this;\n\n        self.loading('start');\n\n        var ajax = previewData.get(self.attachmentId(), self.securityNonce());\n\n        ajax.done(function (res) {\n\n            if (!helper.isUndefined(res.data))\n                previewModal.setup(res.data);\n        });\n\n        ajax.always(function () {\n\n            self.loading('stop');\n        });\n\n    },\n\n    saveFocusPoint: function (topPercent, leftPercent) {\n\n        this.regenerateThumbnails(topPercent, leftPercent);\n        this.setFocusPoint(topPercent / 100, leftPercent / 100);\n    },\n\n    regenerateThumbnails: function (topPercent, leftPercent) {\n\n        var self = this;\n\n        var attachment_id = self.attachmentId();\n\n        self.loading('start');\n\n        var ajax = wp.ajax.post('bt-regenerate-thumbnails', {\n            thumbnail_id: attachment_id,\n            nonce: self.securityNonce(),\n            focus_x: topPercent,\n            focus_y: leftPercent,\n        });\n\n        ajax.done(function (res) {\n\n            if (!helper.isUndefined(res.message)) {\n\n                var $msgParent = self.isUploadPage() ? $(\".thumbnail-image\", self.$context) : $(\".attachment-info\", self.$context);\n\n                helper.notify($msgParent, res.message);\n            }\n        });\n\n        ajax.always(function () {\n\n            self.loading('stop');\n        });\n    },\n\n    loading: function (state) {\n\n        switch (state) {\n\n            case 'start':\n\n                UI.block($(\".attachment-info\", this.$context));\n\n                break;\n\n            case 'stop':\n                UI.unblock($(\".attachment-info\", this.$context));\n\n                break;\n        }\n    },\n\n    attachmentId: function () {\n\n        if (this.isUploadPage()) {\n\n            return $(\".attachment-details\", this.$context).data('id');\n\n        } else {\n\n            return $(\".attachment.selected\", this.$context).data('id');\n        }\n    },\n\n\n    isUploadPage: function () {\n        return $(document.body).hasClass('upload-php');\n    },\n\n    securityNonce: function () {\n        return $(\".bt-regenerate-nonce\", this.$context).val();\n    },\n\n    getFocusPoint: function () {\n\n        var $attachment = $(\".attachment.selected\", this.$context),\n            point = $attachment.data('focus-point');\n\n        return point ? point.split('-') : this.getDefaultFocusPoint();\n\n    },\n    setFocusPoint: function (top, left) {\n\n        $(\".attachment.selected\", this.$context).data(\"focus-point\", top + \"-\" + left);\n    },\n    getDefaultFocusPoint: function () {\n\n        var point = $(\".bt-focus-point-xy\", this.$context).val(),\n            $img = $(\".thumbnail-image img\", this.$context);\n\n        return point && point.indexOf('-') > -1 ? point.split('-') : helper.defaultFocusPoint($img.width(), $img.height());\n    }\n};\n\nmediaModal.setup();\n","var mediaLibPage = {\n\n    initialized: false,\n    $context: '',\n\n    $img: '',\n\n    setup: function () {\n\n        if (!wp || !wp.media) {\n            return;\n        }\n\n        var $body = $(document.body);\n\n        this.$context = $body;\n\n        if (!$body.hasClass('post-type-attachment') || !$body.hasClass('post-php')) {\n            return\n        }\n\n        this.$img = $(\".wp_attachment_image img.thumbnail\", this.$context);\n\n        this.editAttachmentPage();\n    },\n\n    editAttachmentPage: function () {\n\n        this.initFocusPoint();\n\n        this.appendPreviewButton($(\".wp_attachment_image .button\", this.$context));\n    },\n\n    initFocusPoint: function () {\n\n        focusPoint.setup({\n                $el: this.$img,\n                parentSelector: \"#wpbody-content\",\n\n                grid: loc.get(\"grid\"),\n                defaultPosition: this.getFocusPoint()\n            }, {\n                done: $.proxy(this.saveFocusPoint, this)\n            }\n        );\n    },\n\n\n    appendPreviewButton: function ($afterEl) {\n\n        var self = this,\n            link = \"<input type='button' class='button preview-images-btn' value='\" + loc.translate('preview') + \"'>\";\n\n        var $link = $(link).insertAfter($afterEl);\n\n        $link.on('click', function (e) {\n            e.preventDefault();\n\n            self.previewModal();\n        });\n    },\n\n    previewModal: function () {\n\n        var self = this;\n\n        self.loading('start');\n\n        var ajax = previewData.get(self.attachmentId(), self.securityNonce());\n\n        ajax.done(function (res) {\n\n            if (!helper.isUndefined(res.data))\n                previewModal.setup(res.data);\n        });\n\n        ajax.always(function () {\n\n            self.loading('stop');\n        });\n\n    },\n\n    saveFocusPoint: function (topPercent, leftPercent) {\n\n        this.regenerateThumbnails(topPercent, leftPercent);\n        this.setFocusPoint(topPercent / 100, leftPercent / 100);\n    },\n\n    regenerateThumbnails: function (topPercent, leftPercent) {\n\n        var self = this;\n\n        var attachment_id = self.attachmentId();\n\n        self.loading('start');\n\n        var ajax = wp.ajax.post('bt-regenerate-thumbnails', {\n            thumbnail_id: attachment_id,\n            nonce: self.securityNonce(),\n            focus_x: topPercent,\n            focus_y: leftPercent,\n        });\n\n        ajax.done(function (res) {\n\n            if (!helper.isUndefined(res.message)) {\n\n                helper.notify($(\".wp_attachment_holder\", this.$context), res.message);\n            }\n        });\n\n        ajax.always(function () {\n\n            self.loading('stop');\n        });\n    },\n\n    loading: function (state) {\n\n        switch (state) {\n\n            case 'start':\n\n                UI.block($(\".wp_attachment_holder\", this.$context));\n\n                break;\n\n            case 'stop':\n                UI.unblock($(\".wp_attachment_holder\", this.$context));\n\n                break;\n        }\n    },\n\n    attachmentId: function () {\n\n        return $(\"#post_ID\", this.$context).val();\n    },\n\n\n    securityNonce: function () {\n\n        return $(\".bt-regenerate-nonce\", this.$context).val();\n    },\n\n    getFocusPoint: function () {\n\n        return this.getDefaultFocusPoint();\n    },\n\n    setFocusPoint: function (top, left) {\n\n        $(\".attachment.selected\", this.$context).data(\"focus-point\", top + \"-\" + left);\n    },\n\n    getDefaultFocusPoint: function () {\n\n        var point = $(\".bt-focus-point-xy\", this.$context).val();\n\n        return point && point.indexOf('-') > -1 ? point.split('-') : helper.defaultFocusPoint(this.$img.width(), this.$img.height());\n    }\n};\n\nmediaLibPage.setup();\n"]}{"version":3,"sources":[".before-concat.txt","utils.js","preview-data.js","preview-modal.js","focus-point.js","media-modal.js","media-lib-page.js",".after-concat.txt"],"names":[],"mappings":"AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACrKA","file":"smart-thumbnails.js","sourcesContent":["jQuery(document).ready(function($) {","var helper = {\n    isObject: function (obj) {\n        var type = typeof obj;\n        return type === 'function' || type === 'object' && !!obj;\n    },\n    isUndefined: function (obj) {\n\n        return obj === void 0;\n    },\n\n    notify: function ($el, message) {\n\n        $el.append(\"<div class='bt-user-message success' style='display: none;'>\" + message + \"</div>\");\n\n        $(\".bt-user-message\", $el).fadeIn().delay(5e3).queue(function (n) {\n\n            $(this).fadeOut(function () {\n                $(this).remove();\n            });\n            n();\n        });\n    },\n\n    defaultFocusPoint: function (imageWidth, imageHeight) {\n\n        if (loc.get('portrait_default_top') &&\n            this.isImagePortrait(imageWidth, imageHeight)) {\n\n            return [0.5, 0];\n        }\n\n        return loc.get('default_fp');\n    },\n\n    isImagePortrait: function (imageWidth, imageHeight) {\n\n        return ( imageWidth + ( imageHeight * 0.14 ) ) < imageHeight;\n    }\n};\nvar cache = {\n    storage: {},\n\n    add: function (name, data, group) {\n\n        if (helper.isUndefined(cache[group]))\n            cache[group] = {};\n\n        cache[group][name] = data;\n    },\n\n    get: function (name, group) {\n\n        if (this.exist(name, group)) {\n\n            return cache[group][name];\n        }\n    },\n\n    exist: function (name, group) {\n\n        return !helper.isUndefined(cache[group]) && !helper.isUndefined(cache[group][name]);\n    }\n};\n\n\nvar UI = {\n\n    is_blocked: function ($element) {\n\n        return !!$element.data('bc-el-blocked');\n    },\n\n    block: function ($element) {\n\n        if (this.is_blocked($element)) {\n            return;\n        }\n\n        $element.data('bc-el-blocked', true);\n\n        $element.prepend('<div class=\"bc-block-overlay\" style=\"z-index:10;display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0;display:none;position: absolute;background:rgba(255,255,255,0.4)\"></div>');\n\n        $(\".bc-block-overlay\").fadeIn();\n    },\n\n\n    unblock: function ($element) {\n\n        if (!this.is_blocked($element)) {\n            return;\n        }\n\n        $element.data('bc-el-blocked', false);\n\n        $(\".bc-block-overlay\").fadeOut(function () {\n            $(this).remove();\n        });\n    },\n};\n\n\nvar loc = {\n\n    get: function (loc) {\n\n        if (!loc) {\n            return;\n        }\n\n        if (loc.indexOf('.') == -1) {\n\n            return st_loc[loc];\n        }\n\n        var _v = loc.split('.');\n        var current = st_loc[_v[0]];\n        _v = _v.splice(1);\n\n        var len = _v.length - 1;\n\n        for (var i = 0; i <= len; i++) {\n\n            if (typeof current[_v[i]] !== 'object' && i !== len) {\n                return;\n            }\n\n            current = current[_v[i]];\n        }\n\n        return current;\n    },\n\n    translate: function (index) {\n\n        return this.get('translate.' + index);\n    }\n};","var previewData = {\n\n    get: function (attachmentId, securityNonce) {\n\n        return $.Deferred(function (deferred) {\n\n            if (cache.exist(attachmentId, 'selector-data')) {\n\n                deferred.resolveWith(this, [cache.get(attachmentId, 'selector-data')]);\n\n                return;\n            }\n\n            var ajax = wp.ajax.post('bt-preview-thumbnails', {\n                thumbnail_id: attachmentId,\n                nonce: securityNonce\n            });\n\n            ajax.done(function (res) {\n                cache.add(attachmentId, res, 'selector-data');\n                deferred.resolveWith(this, [res]);\n            });\n\n            ajax.fail(function () {\n\n                deferred.rejectWith(this);\n            });\n        }).promise();\n    },\n};","var previewModal = {\n\n    info: {},\n\n    setup: function (info) {\n\n        this.info = info;\n\n        this.open();\n    },\n\n    open: function () {\n\n        var self = this;\n\n        if (!self.info.images) {\n            return;\n        }\n\n\n        $.bs_selector_modal({\n            bsModal: {\n                destroyHtml: true,\n                show: true\n            },\n\n            noSidebar: true,\n\n            id: 'bt-thumbnil-selector',\n            modalClass: 'bt-modal',\n\n            itemInnerHtml: '<div class=\"bf-item-container\">\\n    <figure>\\n        <img src=\"{{img}}\"\\n             alt=\"{{label}}\"\\n             class=\"bs-style-thumbnail\" data-current-image=\"{{current_img}}\">\\n    </figure>\\n</div>',\n\n            content: self.info.l10n,\n            items: self.info.images.map(self.noCacheImage),\n\n            itemsGroupSize: 9,\n\n            events: {}\n        }, {\n            initialZIndex: 209901\n        });\n    },\n\n    noCacheImage: function (obj) {\n\n        obj.img += \"?\" + new Date().getTime();\n\n        return obj;\n    }\n};","var focusPoint = {\n\n    markerArea: 10,\n\n    isMouseDown: false,\n    $element: false,\n    $container: false,\n\n    options: {},\n\n    events: {},\n\n    setup: function (options, events) {\n\n        this.events = events || {};\n        this.options = options || {};\n\n        this.prepare();\n        this.bindEvents();\n    },\n\n    prepare: function () {\n\n        this.$element = this.options.$el;\n        this.$element.wrap(\"<div class='bt-focus-point'></div>\");\n        //\n        this.$container = this.$element.parent();\n        this.$container.append('<div class=\"bt-focus-point-marker\"></div>');\n\n        if (this.options.defaultPosition) {\n            this.fixMarkerPosition(this.options.defaultPosition);\n        }\n\n        if (this.options.grid) {\n            this.appendGrid();\n        }\n\n    },\n\n    handle_event: function (event) {\n        var args = Array.prototype.slice.call(arguments, 1);\n\n        if (typeof this.events[event] === 'function')\n            return this.events[event].apply(this, args);\n    },\n\n    appendGrid: function () {\n\n        var $grid = $(\"<div>\", {\"class\": \"grid\"}).insertAfter(this.$container.find('img'));\n\n        $grid.html('<div class=\"x1\"></div>\\n<div class=\"x2\"></div>\\n\\n<div class=\"y1\"></div>\\n<div class=\"y2\"></div>');\n    },\n\n    fixMarkerPosition: function (pos) {\n\n        var x = parseFloat(pos[0]),\n            y = parseFloat(pos[1]);\n\n        if (!(x >= 0 && x <= 1)) {\n            return;\n        }\n\n        if (!(y >= 0 && y <= 1)) {\n            return;\n        }\n\n        var $img = this.$container.find('img');\n        var markerArea = this.markerArea;\n\n        $(\".bt-focus-point-marker\", this.$container).css({\n            top: Math.floor($img.height() * y) - markerArea,\n            left: Math.floor($img.width() * x) - markerArea\n        });\n    },\n\n    bindEvents: function () {\n\n        var self = this;\n\n        var markerArea = this.markerArea,\n            $marker = $(\".bt-focus-point-marker\", this.$container);\n\n        var $markerWrapper = (function () {\n\n            var $m = self.options.parentSelector ? $(\".bt-focus-point-marker\", this.$container).closest(self.options.parentSelector) : '';\n\n            if ($m && $m.length) {\n                return $m;\n            }\n\n            return $(\".bt-focus-point-marker\", this.$container);\n\n        })();\n\n        $marker.mousedown(function () {\n\n            self.isMouseDown = true;\n        });\n\n        $(\".bt-focus-point\").mousedown(function (e) {\n\n            self.isMouseDown = true;\n\n            $(document).trigger('mousemove.bt-focus-point', [e.pageX, e.pageY]);\n        });\n\n\n        $markerWrapper.mouseup(function () {\n\n            if (!self.isMouseDown) {\n                return;\n            }\n\n            self.isMouseDown = false;\n\n\n            var top = parseInt($marker.css('top').replace('px', '')),\n                left = parseInt($marker.css('left').replace('px', ''));\n\n            var topPercent = Math.ceil((top + markerArea) / (self.$container.find('img').height() / 100)),\n                leftPercent = Math.ceil((left + markerArea) / (self.$container.find('img').width() / 100));\n\n\n            self.handle_event('done', Math.min(leftPercent, 100), Math.min(topPercent, 100));\n        });\n\n        var offset = this.$container.offset();\n\n        if (!offset) {\n            throw 'cannot initialize image focus point';\n        }\n\n        $(document).on('mousemove.bt-focus-point', function (e, pageX, pageY) {\n\n            if (!self.isMouseDown) {\n                return;\n            }\n\n            pageX = pageX || e.pageX;\n            pageY = pageY || e.pageY;\n\n            var x = pageX - offset.left - markerArea,\n                y = pageY - offset.top - markerArea;\n\n\n            var $img = self.$container.find('img'),\n                box = {\n\n                    top: $img.height() - markerArea,\n                    left: $img.width() - markerArea,\n                };\n\n            y = Math.max(-markerArea, y);\n            y = Math.min(box.top, y);\n\n            x = Math.max(-markerArea, x);\n            x = Math.min(box.left, x);\n\n            $marker.css({\n                top: Math.floor(y),\n                left: Math.floor(x),\n            });\n        });\n    }\n};","var mediaModal = {\n\n    initialized: false,\n    $context: '',\n\n    setup: function () {\n\n        if (!wp || !wp.media) {\n            return;\n        }\n\n        var self = this;\n\n        if (wp.media.featuredImage && wp.media.featuredImage.frame) {\n\n            this.initFeaturedImageModal();\n        }\n\n        if (wp.media.frames && self.isUploadPage()) {\n\n            $(document).one('click', \".media-frame-content li.attachment\", function () {\n\n                setTimeout(function () {\n                    self.initMediaLibraryModal();\n\n                    self.initFocusPoint();\n                    self.appendPreviewButton($(\".attachment-actions .button\", self.$context));\n                });\n            });\n        }\n    },\n\n    initFeaturedImageModal: function () {\n\n        var self = this;\n\n        var frame = wp.media.featuredImage.frame();\n        frame.on('ready', function () {\n\n            if (self.initialized) {\n                return;\n            }\n\n            self.$context = this.models[0].frame.$el;\n            self.initialized = true;\n\n            wp.Uploader.queue.on('reset', function () { // Upload completed\n\n                setTimeout(function () {\n                    self.initFocusPoint();\n                    self.appendPreviewLink();\n                })\n            });\n        });\n\n        frame.on('selection:toggle', function () { // Image selected\n\n            self.initFocusPoint();\n            self.appendPreviewLink();\n        });\n    },\n\n    initMediaLibraryModal: function () {\n\n        var self = this;\n\n        wp.media.frames.edit.on('refresh', function (e) {\n\n            self.initFocusPoint();\n            self.appendPreviewButton($(\".attachment-actions .button\", self.$context));\n        });\n    },\n\n    initFocusPoint: function () {\n\n        focusPoint.setup({\n                $el: $(\".thumbnail-image img\", this.$context),\n                parentSelector: \".media-frame-content\",\n                grid: loc.get(\"grid\"),\n                defaultPosition: this.getFocusPoint()\n            },\n            {\n                done: $.proxy(this.saveFocusPoint, this)\n            }\n        );\n    },\n\n    appendPreviewLink: function () {\n\n        var self = this,\n            link = \"<div class='preview-thumbnails'><a href='#'>\" + loc.translate('preview') + \"</a></div>\";\n\n        var $link = $(link).insertAfter($(\".attachment-info .edit-attachment\", this.$context));\n\n        $link.on('click', function (e) {\n            e.preventDefault();\n\n            self.previewModal();\n        });\n    },\n\n    appendPreviewButton: function ($afterEl) {\n\n        var self = this,\n            link = \"<input type='button' class='button preview-images-btn' value='\" + loc.translate('preview') + \"'>\";\n\n        var $link = $(link).insertAfter($afterEl);\n\n        $link.on('click', function (e) {\n            e.preventDefault();\n\n            self.previewModal();\n        });\n    },\n\n    previewModal: function () {\n\n        var self = this;\n\n        self.loading('start');\n\n        var ajax = previewData.get(self.attachmentId(), self.securityNonce());\n\n        ajax.done(function (res) {\n\n            if (!helper.isUndefined(res.data))\n                previewModal.setup(res.data);\n        });\n\n        ajax.always(function () {\n\n            self.loading('stop');\n        });\n\n    },\n\n    saveFocusPoint: function (topPercent, leftPercent) {\n\n        this.regenerateThumbnails(topPercent, leftPercent);\n        this.setFocusPoint(topPercent / 100, leftPercent / 100);\n    },\n\n    regenerateThumbnails: function (topPercent, leftPercent) {\n\n        var self = this;\n\n        var attachment_id = self.attachmentId();\n\n        self.loading('start');\n\n        var ajax = wp.ajax.post('bt-regenerate-thumbnails', {\n            thumbnail_id: attachment_id,\n            nonce: self.securityNonce(),\n            focus_x: topPercent,\n            focus_y: leftPercent,\n        });\n\n        ajax.done(function (res) {\n\n            if (!helper.isUndefined(res.message)) {\n\n                var $msgParent = self.isUploadPage() ? $(\".thumbnail-image\", self.$context) : $(\".attachment-info\", self.$context);\n\n                helper.notify($msgParent, res.message);\n            }\n        });\n\n        ajax.always(function () {\n\n            self.loading('stop');\n        });\n    },\n\n    loading: function (state) {\n\n        switch (state) {\n\n            case 'start':\n\n                UI.block($(\".attachment-info\", this.$context));\n\n                break;\n\n            case 'stop':\n                UI.unblock($(\".attachment-info\", this.$context));\n\n                break;\n        }\n    },\n\n    attachmentId: function () {\n\n        if (this.isUploadPage()) {\n\n            return $(\".attachment-details\", this.$context).data('id');\n\n        } else {\n\n            return $(\".attachment.selected\", this.$context).data('id');\n        }\n    },\n\n\n    isUploadPage: function () {\n        return $(document.body).hasClass('upload-php');\n    },\n\n    securityNonce: function () {\n        return $(\".bt-regenerate-nonce\", this.$context).val();\n    },\n\n    getFocusPoint: function () {\n\n        var $attachment = $(\".attachment.selected\", this.$context),\n            point = $attachment.data('focus-point');\n\n        return point ? point.split('-') : this.getDefaultFocusPoint();\n\n    },\n    setFocusPoint: function (top, left) {\n\n        $(\".attachment.selected\", this.$context).data(\"focus-point\", top + \"-\" + left);\n    },\n    getDefaultFocusPoint: function () {\n\n        var point = $(\".bt-focus-point-xy\", this.$context).val(),\n            $img = $(\".thumbnail-image img\", this.$context);\n\n        return point && point.indexOf('-') > -1 ? point.split('-') : helper.defaultFocusPoint($img.width(), $img.height());\n    }\n};\n\nmediaModal.setup();\n","var mediaLibPage = {\n\n    initialized: false,\n    $context: '',\n\n    $img: '',\n\n    setup: function () {\n\n        if (!wp || !wp.media) {\n            return;\n        }\n\n        var $body = $(document.body);\n\n        this.$context = $body;\n\n        if (!$body.hasClass('post-type-attachment') || !$body.hasClass('post-php')) {\n            return\n        }\n\n        this.$img = $(\".wp_attachment_image img.thumbnail\", this.$context);\n\n        this.editAttachmentPage();\n    },\n\n    editAttachmentPage: function () {\n\n        this.initFocusPoint();\n\n        this.appendPreviewButton($(\".wp_attachment_image .button\", this.$context));\n    },\n\n    initFocusPoint: function () {\n\n        focusPoint.setup({\n                $el: this.$img,\n                parentSelector: \"#wpbody-content\",\n\n                grid: loc.get(\"grid\"),\n                defaultPosition: this.getFocusPoint()\n            }, {\n                done: $.proxy(this.saveFocusPoint, this)\n            }\n        );\n    },\n\n\n    appendPreviewButton: function ($afterEl) {\n\n        var self = this,\n            link = \"<input type='button' class='button preview-images-btn' value='\" + loc.translate('preview') + \"'>\";\n\n        var $link = $(link).insertAfter($afterEl);\n\n        $link.on('click', function (e) {\n            e.preventDefault();\n\n            self.previewModal();\n        });\n    },\n\n    previewModal: function () {\n\n        var self = this;\n\n        self.loading('start');\n\n        var ajax = previewData.get(self.attachmentId(), self.securityNonce());\n\n        ajax.done(function (res) {\n\n            if (!helper.isUndefined(res.data))\n                previewModal.setup(res.data);\n        });\n\n        ajax.always(function () {\n\n            self.loading('stop');\n        });\n\n    },\n\n    saveFocusPoint: function (topPercent, leftPercent) {\n\n        this.regenerateThumbnails(topPercent, leftPercent);\n        this.setFocusPoint(topPercent / 100, leftPercent / 100);\n    },\n\n    regenerateThumbnails: function (topPercent, leftPercent) {\n\n        var self = this;\n\n        var attachment_id = self.attachmentId();\n\n        self.loading('start');\n\n        var ajax = wp.ajax.post('bt-regenerate-thumbnails', {\n            thumbnail_id: attachment_id,\n            nonce: self.securityNonce(),\n            focus_x: topPercent,\n            focus_y: leftPercent,\n        });\n\n        ajax.done(function (res) {\n\n            if (!helper.isUndefined(res.message)) {\n\n                helper.notify($(\".wp_attachment_holder\", this.$context), res.message);\n            }\n        });\n\n        ajax.always(function () {\n\n            self.loading('stop');\n        });\n    },\n\n    loading: function (state) {\n\n        switch (state) {\n\n            case 'start':\n\n                UI.block($(\".wp_attachment_holder\", this.$context));\n\n                break;\n\n            case 'stop':\n                UI.unblock($(\".wp_attachment_holder\", this.$context));\n\n                break;\n        }\n    },\n\n    attachmentId: function () {\n\n        return $(\"#post_ID\", this.$context).val();\n    },\n\n\n    securityNonce: function () {\n\n        return $(\".bt-regenerate-nonce\", this.$context).val();\n    },\n\n    getFocusPoint: function () {\n\n        return this.getDefaultFocusPoint();\n    },\n\n    setFocusPoint: function (top, left) {\n\n        $(\".attachment.selected\", this.$context).data(\"focus-point\", top + \"-\" + left);\n    },\n\n    getDefaultFocusPoint: function () {\n\n        var point = $(\".bt-focus-point-xy\", this.$context).val();\n\n        return point && point.indexOf('-') > -1 ? point.split('-') : helper.defaultFocusPoint(this.$img.width(), this.$img.height());\n    }\n};\n\nmediaLibPage.setup();\n","});"]}var helper = {
    isObject: function (obj) {
        var type = typeof obj;
        return type === 'function' || type === 'object' && !!obj;
    },
    isUndefined: function (obj) {

        return obj === void 0;
    },

    notify: function ($el, message) {

        $el.append("<div class='bt-user-message success' style='display: none;'>" + message + "</div>");

        $(".bt-user-message", $el).fadeIn().delay(5e3).queue(function (n) {

            $(this).fadeOut(function () {
                $(this).remove();
            });
            n();
        });
    },

    defaultFocusPoint: function (imageWidth, imageHeight) {

        if (loc.get('portrait_default_top') &&
            this.isImagePortrait(imageWidth, imageHeight)) {

            return [0.5, 0];
        }

        return loc.get('default_fp');
    },

    isImagePortrait: function (imageWidth, imageHeight) {

        return ( imageWidth + ( imageHeight * 0.14 ) ) < imageHeight;
    }
};
var cache = {
    storage: {},

    add: function (name, data, group) {

        if (helper.isUndefined(cache[group]))
            cache[group] = {};

        cache[group][name] = data;
    },

    get: function (name, group) {

        if (this.exist(name, group)) {

            return cache[group][name];
        }
    },

    exist: function (name, group) {

        return !helper.isUndefined(cache[group]) && !helper.isUndefined(cache[group][name]);
    }
};


var UI = {

    is_blocked: function ($element) {

        return !!$element.data('bc-el-blocked');
    },

    block: function ($element) {

        if (this.is_blocked($element)) {
            return;
        }

        $element.data('bc-el-blocked', true);

        $element.prepend('<div class="bc-block-overlay" style="z-index:10;display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0;display:none;position: absolute;background:rgba(255,255,255,0.4)"></div>');

        $(".bc-block-overlay").fadeIn();
    },


    unblock: function ($element) {

        if (!this.is_blocked($element)) {
            return;
        }

        $element.data('bc-el-blocked', false);

        $(".bc-block-overlay").fadeOut(function () {
            $(this).remove();
        });
    },
};


var loc = {

    get: function (loc) {

        if (!loc) {
            return;
        }

        if (loc.indexOf('.') == -1) {

            return st_loc[loc];
        }

        var _v = loc.split('.');
        var current = st_loc[_v[0]];
        _v = _v.splice(1);

        var len = _v.length - 1;

        for (var i = 0; i <= len; i++) {

            if (typeof current[_v[i]] !== 'object' && i !== len) {
                return;
            }

            current = current[_v[i]];
        }

        return current;
    },

    translate: function (index) {

        return this.get('translate.' + index);
    }
};jQuery(document).ready(function($) {<?php
module.exports = [

    'assets/js/utils.js',
    'assets/js/preview-data.js',
    'assets/js/preview-modal.js',
    'assets/js/focus-point.js',
    'assets/js/media-modal.js',
    'assets/js/media-lib-page.js',
];
});var focusPoint = {

    markerArea: 10,

    isMouseDown: false,
    $element: false,
    $container: false,

    options: {},

    events: {},

    setup: function (options, events) {

        this.events = events || {};
        this.options = options || {};

        if (this.prepare()) {

            this.bindEvents();

            return true;
        }

        return false;
    },

    prepare: function () {

        if (!this.options.$el || !this.options.$el.length) {
            return false;
        }

        this.$element = this.options.$el;
        this.$element.wrap("<div class='bt-focus-point'></div>");
        //
        this.$container = this.$element.parent();
        this.$container.append('<div class="bt-focus-point-marker"></div>');

        if (this.options.defaultPosition) {
            this.fixMarkerPosition(this.options.defaultPosition);
        }

        if (this.options.grid) {
            this.appendGrid();
        }

        return true;
    },

    handle_event: function (event) {
        var args = Array.prototype.slice.call(arguments, 1);

        if (typeof this.events[event] === 'function')
            return this.events[event].apply(this, args);
    },

    appendGrid: function () {

        var $grid = $("<div>", {"class": "grid"}).insertAfter(this.$container.find('img'));

        $grid.html('<div class="x1"></div>\n<div class="x2"></div>\n\n<div class="y1"></div>\n<div class="y2"></div>');
    },

    fixMarkerPosition: function (pos) {

        var x = parseFloat(pos[0]),
            y = parseFloat(pos[1]);

        if (!(x >= 0 && x <= 1)) {
            return;
        }

        if (!(y >= 0 && y <= 1)) {
            return;
        }

        var $img = this.$container.find('img');
        var markerArea = this.markerArea;

        $(".bt-focus-point-marker", this.$container).css({
            top: Math.floor($img.height() * y) - markerArea,
            left: Math.floor($img.width() * x) - markerArea
        });
    },

    bindEvents: function () {

        var self = this;

        var markerArea = this.markerArea,
            $marker = $(".bt-focus-point-marker", this.$container);

        var $markerWrapper = (function () {

            var $m = self.options.parentSelector ? $(".bt-focus-point-marker", this.$container).closest(self.options.parentSelector) : '';

            if ($m && $m.length) {
                return $m;
            }

            return $(".bt-focus-point-marker", this.$container);

        })();

        $marker.mousedown(function () {

            self.isMouseDown = true;
        });

        $(".bt-focus-point").mousedown(function (e) {

            self.isMouseDown = true;

            $(document).trigger('mousemove.bt-focus-point', [e.pageX, e.pageY]);
        });


        $markerWrapper.mouseup(function () {

            if (!self.isMouseDown) {
                return;
            }

            self.isMouseDown = false;


            var top = parseInt($marker.css('top').replace('px', '')),
                left = parseInt($marker.css('left').replace('px', ''));

            var topPercent = Math.ceil((top + markerArea) / (self.$container.find('img').height() / 100)),
                leftPercent = Math.ceil((left + markerArea) / (self.$container.find('img').width() / 100));


            self.handle_event('done', Math.min(leftPercent, 100), Math.min(topPercent, 100));
        });

        var offset = this.$container.offset();

        if (!offset) {
            throw 'cannot initialize image focus point';
        }

        $(document).on('mousemove.bt-focus-point', function (e, pageX, pageY) {

            if (!self.isMouseDown) {
                return;
            }

            pageX = pageX || e.pageX;
            pageY = pageY || e.pageY;

            var x = pageX - offset.left - markerArea,
                y = pageY - offset.top - markerArea;


            var $img = self.$container.find('img'),
                box = {

                    top: $img.height() - markerArea,
                    left: $img.width() - markerArea,
                };

            y = Math.max(-markerArea, y);
            y = Math.min(box.top, y);

            x = Math.max(-markerArea, x);
            x = Math.min(box.left, x);

            $marker.css({
                top: Math.floor(y),
                left: Math.floor(x),
            });
        });
    }
};jQuery(document).ready(function($) {
var helper = {
    isObject: function (obj) {
        var type = typeof obj;
        return type === 'function' || type === 'object' && !!obj;
    },
    isUndefined: function (obj) {

        return obj === void 0;
    },

    notify: function ($el, message) {

        $el.append("<div class='bt-user-message success' style='display: none;'>" + message + "</div>");

        $(".bt-user-message", $el).fadeIn().delay(5e3).queue(function (n) {

            $(this).fadeOut(function () {
                $(this).remove();
            });
            n();
        });
    },

    defaultFocusPoint: function (imageWidth, imageHeight) {

        if (loc.get('portrait_default_top') &&
            this.isImagePortrait(imageWidth, imageHeight)) {

            return [0.5, 0];
        }

        return loc.get('default_fp');
    },

    isImagePortrait: function (imageWidth, imageHeight) {

        return ( imageWidth + ( imageHeight * 0.14 ) ) < imageHeight;
    }
};
var cache = {
    storage: {},

    add: function (name, data, group) {

        if (helper.isUndefined(cache[group]))
            cache[group] = {};

        cache[group][name] = data;
    },

    get: function (name, group) {

        if (this.exist(name, group)) {

            return cache[group][name];
        }
    },

    exist: function (name, group) {

        return !helper.isUndefined(cache[group]) && !helper.isUndefined(cache[group][name]);
    }
};


var UI = {

    is_blocked: function ($element) {

        return !!$element.data('bc-el-blocked');
    },

    block: function ($element) {

        if (this.is_blocked($element)) {
            return;
        }

        $element.data('bc-el-blocked', true);

        $element.prepend('<div class="bc-block-overlay" style="z-index:10;display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0;display:none;position: absolute;background:rgba(255,255,255,0.4)"></div>');

        $(".bc-block-overlay").fadeIn();
    },


    unblock: function ($element) {

        if (!this.is_blocked($element)) {
            return;
        }

        $element.data('bc-el-blocked', false);

        $(".bc-block-overlay").fadeOut(function () {
            $(this).remove();
        });
    },
};


var loc = {

    get: function (loc) {

        if (!loc) {
            return;
        }

        if (loc.indexOf('.') == -1) {

            return st_loc[loc];
        }

        var _v = loc.split('.');
        var current = st_loc[_v[0]];
        _v = _v.splice(1);

        var len = _v.length - 1;

        for (var i = 0; i <= len; i++) {

            if (typeof current[_v[i]] !== 'object' && i !== len) {
                return;
            }

            current = current[_v[i]];
        }

        return current;
    },

    translate: function (index) {

        return this.get('translate.' + index);
    }
};
var previewData = {

    get: function (attachmentId, securityNonce) {

        return $.Deferred(function (deferred) {

            if (cache.exist(attachmentId, 'selector-data')) {

                deferred.resolveWith(this, [cache.get(attachmentId, 'selector-data')]);

                return;
            }

            var ajax = wp.ajax.post('bt-preview-thumbnails', {
                thumbnail_id: attachmentId,
                nonce: securityNonce
            });

            ajax.done(function (res) {
                cache.add(attachmentId, res, 'selector-data');
                deferred.resolveWith(this, [res]);
            });

            ajax.fail(function () {

                deferred.rejectWith(this);
            });
        }).promise();
    },
};
var previewModal = {

    info: {},

    setup: function (info) {

        this.info = info;

        this.open();
    },

    open: function () {

        var self = this;

        if (!self.info.images) {
            return;
        }


        $.bs_selector_modal({
            bsModal: {
                destroyHtml: true,
                show: true
            },

            noSidebar: true,

            id: 'bt-thumbnil-selector',
            modalClass: 'bt-modal',

            itemInnerHtml: '<div class="bf-item-container">\n    <figure>\n        <img src="{{img}}"\n             alt="{{label}}"\n             class="bs-style-thumbnail" data-current-image="{{current_img}}">\n    </figure>\n</div>',

            content: self.info.l10n,
            items: self.info.images.map(self.noCacheImage),

            itemsGroupSize: 9,

            events: {}
        }, {
            initialZIndex: 209901
        });
    },

    noCacheImage: function (obj) {

        obj.img += "?" + new Date().getTime();

        return obj;
    }
};
var focusPoint = {

    markerArea: 10,

    isMouseDown: false,
    $element: false,
    $container: false,

    options: {},

    events: {},

    setup: function (options, events) {

        this.events = events || {};
        this.options = options || {};

        if (this.prepare()) {

            this.bindEvents();

            return true;
        }

        return false;
    },

    prepare: function () {

        if (!this.options.$el || !this.options.$el.length) {
            return false;
        }

        this.$element = this.options.$el;
        this.$element.wrap("<div class='bt-focus-point'></div>");
        //
        this.$container = this.$element.parent();
        this.$container.append('<div class="bt-focus-point-marker"></div>');

        if (this.options.defaultPosition) {
            this.fixMarkerPosition(this.options.defaultPosition);
        }

        if (this.options.grid) {
            this.appendGrid();
        }

        return true;
    },

    handle_event: function (event) {
        var args = Array.prototype.slice.call(arguments, 1);

        if (typeof this.events[event] === 'function')
            return this.events[event].apply(this, args);
    },

    appendGrid: function () {

        var $grid = $("<div>", {"class": "grid"}).insertAfter(this.$container.find('img'));

        $grid.html('<div class="x1"></div>\n<div class="x2"></div>\n\n<div class="y1"></div>\n<div class="y2"></div>');
    },

    fixMarkerPosition: function (pos) {

        var x = parseFloat(pos[0]),
            y = parseFloat(pos[1]);

        if (!(x >= 0 && x <= 1)) {
            return;
        }

        if (!(y >= 0 && y <= 1)) {
            return;
        }

        var $img = this.$container.find('img');
        var markerArea = this.markerArea;

        $(".bt-focus-point-marker", this.$container).css({
            top: Math.floor($img.height() * y) - markerArea,
            left: Math.floor($img.width() * x) - markerArea
        });
    },

    bindEvents: function () {

        var self = this;

        var markerArea = this.markerArea,
            $marker = $(".bt-focus-point-marker", this.$container);

        var $markerWrapper = (function () {

            var $m = self.options.parentSelector ? $(".bt-focus-point-marker", this.$container).closest(self.options.parentSelector) : '';

            if ($m && $m.length) {
                return $m;
            }

            return $(".bt-focus-point-marker", this.$container);

        })();

        $marker.mousedown(function () {

            self.isMouseDown = true;
        });

        $(".bt-focus-point").mousedown(function (e) {

            self.isMouseDown = true;

            $(document).trigger('mousemove.bt-focus-point', [e.pageX, e.pageY]);
        });


        $markerWrapper.mouseup(function () {

            if (!self.isMouseDown) {
                return;
            }

            self.isMouseDown = false;


            var top = parseInt($marker.css('top').replace('px', '')),
                left = parseInt($marker.css('left').replace('px', ''));

            var topPercent = Math.ceil((top + markerArea) / (self.$container.find('img').height() / 100)),
                leftPercent = Math.ceil((left + markerArea) / (self.$container.find('img').width() / 100));


            self.handle_event('done', Math.min(leftPercent, 100), Math.min(topPercent, 100));
        });

        var offset = this.$container.offset();

        if (!offset) {
            throw 'cannot initialize image focus point';
        }

        $(document).on('mousemove.bt-focus-point', function (e, pageX, pageY) {

            if (!self.isMouseDown) {
                return;
            }

            pageX = pageX || e.pageX;
            pageY = pageY || e.pageY;

            var x = pageX - offset.left - markerArea,
                y = pageY - offset.top - markerArea;


            var $img = self.$container.find('img'),
                box = {

                    top: $img.height() - markerArea,
                    left: $img.width() - markerArea,
                };

            y = Math.max(-markerArea, y);
            y = Math.min(box.top, y);

            x = Math.max(-markerArea, x);
            x = Math.min(box.left, x);

            $marker.css({
                top: Math.floor(y),
                left: Math.floor(x),
            });
        });
    }
};
var mediaModal = {

    initialized: false,
    $context: '',

    setup: function () {

        if (!wp || !wp.media) {
            return;
        }

        var self = this;

        if (wp.media.featuredImage && wp.media.featuredImage.frame) {

            this.initFeaturedImageModal();
        }

        if (wp.media.frames && self.isUploadPage()) {

            $(document).one('click', ".media-frame-content li.attachment", function () {

                setTimeout(function () {
                    self.initMediaLibraryModal();

                    self.initFocusPoint();
                    self.appendPreviewButton($(".attachment-actions .button", self.$context));
                });
            });
        }
    },

    initFeaturedImageModal: function () {

        var self = this;

        var frame = wp.media.featuredImage.frame();
        frame.on('ready', function () {

            if (self.initialized) {
                return;
            }

            self.$context = this.models[0].frame.$el;
            self.initialized = true;

            wp.Uploader.queue.on('reset', function () { // Upload completed

                setTimeout(function () {
                    self.initFocusPoint();
                    self.appendPreviewLink();
                });
            });
        });

        frame.on('selection:toggle', function () { // Image selected

            self.initFocusPoint();
            self.appendPreviewLink();
        });

        frame.on('uploader:ready', function (a) { // Image selected

            var interval = setInterval(function () {

                if (self.initFocusPoint()) {

                    self.appendPreviewLink();

                    clearInterval(interval);
                }

            }, 200);
        });

    },

    initMediaLibraryModal: function () {

        var self = this;

        wp.media.frames.edit.on('refresh', function (e) {

            self.initFocusPoint();
            self.appendPreviewButton($(".attachment-actions .button", self.$context));
        });
    },

    initFocusPoint: function () {

        return focusPoint.setup({
                $el: $(".thumbnail-image img", this.$context),
                parentSelector: ".media-frame-content",
                grid: loc.get("grid"),
                defaultPosition: this.getFocusPoint()
            },
            {
                done: $.proxy(this.saveFocusPoint, this)
            }
        );
    },

    appendPreviewLink: function () {

        var self = this,
            link = "<div class='preview-thumbnails'><a href='#'>" + loc.translate('preview') + "</a></div>";

        var $link = $(link).insertAfter($(".attachment-info .edit-attachment", this.$context));

        $link.on('click', function (e) {
            e.preventDefault();

            self.previewModal();
        });
    },

    appendPreviewButton: function ($afterEl) {

        var self = this,
            link = "<input type='button' class='button preview-images-btn' value='" + loc.translate('preview') + "'>";

        var $link = $(link).insertAfter($afterEl);

        $link.on('click', function (e) {
            e.preventDefault();

            self.previewModal();
        });
    },

    previewModal: function () {

        var self = this;

        self.loading('start');

        var ajax = previewData.get(self.attachmentId(), self.securityNonce());

        ajax.done(function (res) {

            if (!helper.isUndefined(res.data))
                previewModal.setup(res.data);
        });

        ajax.always(function () {

            self.loading('stop');
        });

    },

    saveFocusPoint: function (topPercent, leftPercent) {

        this.regenerateThumbnails(topPercent, leftPercent);
        this.setFocusPoint(topPercent / 100, leftPercent / 100);
    },

    regenerateThumbnails: function (topPercent, leftPercent) {

        var self = this;

        var attachment_id = self.attachmentId();

        self.loading('start');

        var ajax = wp.ajax.post('bt-regenerate-thumbnails', {
            thumbnail_id: attachment_id,
            nonce: self.securityNonce(),
            focus_x: topPercent,
            focus_y: leftPercent,
        });

        ajax.done(function (res) {

            if (!helper.isUndefined(res.message)) {

                var $msgParent = self.isUploadPage() ? $(".thumbnail-image", self.$context) : $(".attachment-info", self.$context);

                helper.notify($msgParent, res.message);
            }
        });

        ajax.always(function () {

            self.loading('stop');
        });
    },

    loading: function (state) {

        switch (state) {

            case 'start':

                UI.block($(".attachment-info", this.$context));

                break;

            case 'stop':
                UI.unblock($(".attachment-info", this.$context));

                break;
        }
    },

    attachmentId: function () {

        if (this.isUploadPage()) {

            return $(".attachment-details", this.$context).data('id');

        } else {

            return $(".attachment.selected", this.$context).data('id');
        }
    },


    isUploadPage: function () {
        return $(document.body).hasClass('upload-php');
    },

    securityNonce: function () {
        return $(".bt-regenerate-nonce", this.$context).val();
    },

    getFocusPoint: function () {

        var $attachment = $(".attachment.selected", this.$context),
            point = $attachment.data('focus-point');

        return point ? point.split('-') : this.getDefaultFocusPoint();

    },
    setFocusPoint: function (top, left) {

        $(".attachment.selected", this.$context).data("focus-point", top + "-" + left);
    },
    getDefaultFocusPoint: function () {

        var point = $(".bt-focus-point-xy", this.$context).val(),
            $img = $(".thumbnail-image img", this.$context);

        return point && point.indexOf('-') > -1 ? point.split('-') : helper.defaultFocusPoint($img.width(), $img.height());
    }
};

mediaModal.setup();

var mediaLibPage = {

    initialized: false,
    $context: '',

    $img: '',

    setup: function () {

        if (!wp || !wp.media) {
            return;
        }

        var $body = $(document.body);

        this.$context = $body;

        if (!$body.hasClass('post-type-attachment') || !$body.hasClass('post-php')) {
            return
        }

        this.$img = $(".wp_attachment_image img.thumbnail", this.$context);

        this.editAttachmentPage();
    },

    editAttachmentPage: function () {

        this.initFocusPoint();

        this.appendPreviewButton($(".wp_attachment_image .button", this.$context));
    },

    initFocusPoint: function () {

        focusPoint.setup({
                $el: this.$img,
                parentSelector: "#wpbody-content",

                grid: loc.get("grid"),
                defaultPosition: this.getFocusPoint()
            }, {
                done: $.proxy(this.saveFocusPoint, this)
            }
        );
    },


    appendPreviewButton: function ($afterEl) {

        var self = this,
            link = "<input type='button' class='button preview-images-btn' value='" + loc.translate('preview') + "'>";

        var $link = $(link).insertAfter($afterEl);

        $link.on('click', function (e) {
            e.preventDefault();

            self.previewModal();
        });
    },

    previewModal: function () {

        var self = this;

        self.loading('start');

        var ajax = previewData.get(self.attachmentId(), self.securityNonce());

        ajax.done(function (res) {

            if (!helper.isUndefined(res.data))
                previewModal.setup(res.data);
        });

        ajax.always(function () {

            self.loading('stop');
        });

    },

    saveFocusPoint: function (topPercent, leftPercent) {

        this.regenerateThumbnails(topPercent, leftPercent);
        this.setFocusPoint(topPercent / 100, leftPercent / 100);
    },

    regenerateThumbnails: function (topPercent, leftPercent) {

        var self = this;

        var attachment_id = self.attachmentId();

        self.loading('start');

        var ajax = wp.ajax.post('bt-regenerate-thumbnails', {
            thumbnail_id: attachment_id,
            nonce: self.securityNonce(),
            focus_x: topPercent,
            focus_y: leftPercent,
        });

        ajax.done(function (res) {

            if (!helper.isUndefined(res.message)) {

                helper.notify($(".wp_attachment_holder", this.$context), res.message);
            }
        });

        ajax.always(function () {

            self.loading('stop');
        });
    },

    loading: function (state) {

        switch (state) {

            case 'start':

                UI.block($(".wp_attachment_holder", this.$context));

                break;

            case 'stop':
                UI.unblock($(".wp_attachment_holder", this.$context));

                break;
        }
    },

    attachmentId: function () {

        return $("#post_ID", this.$context).val();
    },


    securityNonce: function () {

        return $(".bt-regenerate-nonce", this.$context).val();
    },

    getFocusPoint: function () {

        return this.getDefaultFocusPoint();
    },

    setFocusPoint: function (top, left) {

        $(".attachment.selected", this.$context).data("focus-point", top + "-" + left);
    },

    getDefaultFocusPoint: function () {

        var point = $(".bt-focus-point-xy", this.$context).val();

        return point && point.indexOf('-') > -1 ? point.split('-') : helper.defaultFocusPoint(this.$img.width(), this.$img.height());
    }
};

mediaLibPage.setup();

});
//# sourceMappingURL=better-smart-thumbnails.js.map
var previewData = {

    get: function (attachmentId, securityNonce) {

        return $.Deferred(function (deferred) {

            if (cache.exist(attachmentId, 'selector-data')) {

                deferred.resolveWith(this, [cache.get(attachmentId, 'selector-data')]);

                return;
            }

            var ajax = wp.ajax.post('bt-preview-thumbnails', {
                thumbnail_id: attachmentId,
                nonce: securityNonce
            });

            ajax.done(function (res) {
                cache.add(attachmentId, res, 'selector-data');
                deferred.resolveWith(this, [res]);
            });

            ajax.fail(function () {

                deferred.rejectWith(this);
            });
        }).promise();
    },
};/***
*** Focus Point Styles
**/
.bt-focus-point {
    position: relative;
    display: inline-block;
}

.bt-focus-point,
.bt-focus-point img {
    -webkit-touch-callout: none; /* iOS Safari */
    -webkit-user-select: none; /* Safari */
    -khtml-user-select: none; /* Konqueror HTML */
    -moz-user-select: none; /* Firefox */
    -ms-user-select: none; /* Internet Explorer/Edge */
    user-select: none;
}

.bt-focus-point-marker {
    position: absolute;
    top: 0;
    left: 100px;
    z-index: 99;
}

.bt-focus-point-marker:after {
    background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMzhweCIgaGVpZ2h0PSIzOHB4IiB2aWV3Qm94PSIwIDAgMzggMzgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDQ5ICg1MTAwMikgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAgICA8dGl0bGU+U2hhcGUgQ29weTwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPgogICAgICAgIDxwYXRoIGQ9Ik0xNy40OTU3ODcxLDMyLjU0OTg4OTEgTDE3LjQ5NTc4NzEsMzUuMiBMMTkuNzA0MjEyOSwzNS4yIEwxOS43MDQyMTI5LDMyLjU0OTg4OTEgQzI2LjU2MjU3MzMsMzIuMDA5ODg1OCAzMi4wMDk4ODU4LDI2LjU2MjU3MzMgMzIuNTQ5ODg5MSwxOS43MDQyMTI5IEwzNS4yLDE5LjcwNDIxMjkgTDM1LjIsMTcuNDk1Nzg3MSBMMzIuNTQ5ODg5MSwxNy40OTU3ODcxIEMzMi4wMDk4ODU4LDEwLjYzNzQyNjcgMjYuNTYyNTczMyw1LjE5MDExNDE2IDE5LjcwNDIxMjksNC42NTAxMTA4NiBMMTkuNzA0MjEyOSwyIEwxNy40OTU3ODcxLDIgTDE3LjQ5NTc4NzEsNC42NTAxMTA4NiBDMTAuNjM3NDI2Nyw1LjE5MDExNDE2IDUuMTkwMTE0MTYsMTAuNjM3NDI2NyA0LjY1MDExMDg2LDE3LjQ5NTc4NzEgTDIsMTcuNDk1Nzg3MSBMMiwxOS43MDQyMTI5IEw0LjY1MDExMDg2LDE5LjcwNDIxMjkgQzUuMTkwMTE0MTYsMjYuNTYyNTczMyAxMC42Mzc0MjY3LDMyLjAwOTg4NTggMTcuNDk1Nzg3MSwzMi41NDk4ODkxIFogTTYuODU4NTM2NTksMTkuNzA0MjEyOSBMMTIuMjMyMzcyNSwxOS43MDQyMTI5IEMxMi43MDMxMjI3LDIyLjM5MjE2MDQgMTQuODA3ODM5NiwyNC40OTY4NzczIDE3LjQ5NTc4NzEsMjQuOTY3NjI3NSBMMTcuNDk1Nzg3MSwzMC4zNDE0NjM0IEMxMS44NTI1OTI5LDI5LjgxNjc2MTcgNy4zODMyMzgyNywyNS4zNDc0MDcxIDYuODU4NTM2NTksMTkuNzA0MjEyOSBaIE0xOC42LDE0LjMzMDM3NjkgQzIwLjk1ODA0NzcsMTQuMzMwMzc2OSAyMi44Njk2MjMxLDE2LjI0MTk1MjMgMjIuODY5NjIzMSwxOC42IEMyMi44Njk2MjMxLDIwLjk1ODA0NzcgMjAuOTU4MDQ3NywyMi44Njk2MjMxIDE4LjYsMjIuODY5NjIzMSBDMTYuMjQxOTUyMywyMi44Njk2MjMxIDE0LjMzMDM3NjksMjAuOTU4MDQ3NyAxNC4zMzAzNzY5LDE4LjYgQzE0LjMzMDM3NjksMTYuMjQxOTUyMyAxNi4yNDE5NTIzLDE0LjMzMDM3NjkgMTguNiwxNC4zMzAzNzY5IFogTTE5LjcwNDIxMjksMzAuMzQxNDYzNCBMMTkuNzA0MjEyOSwyNC45Njc2Mjc1IEMyMi4zOTIxNjA0LDI0LjQ5Njg3NzMgMjQuNDk2ODc3MywyMi4zOTIxNjA0IDI0Ljk2NzYyNzUsMTkuNzA0MjEyOSBMMzAuMzQxNDYzNCwxOS43MDQyMTI5IEMyOS44MTY3NjE3LDI1LjM0NzQwNzEgMjUuMzQ3NDA3MSwyOS44MTY3NjE3IDE5LjcwNDIxMjksMzAuMzQxNDYzNCBaIE0zMC4zNDE0NjM0LDE3LjQ5NTc4NzEgTDI0Ljk2NzYyNzUsMTcuNDk1Nzg3MSBDMjQuNDk2ODc3MywxNC44MDc4Mzk2IDIyLjM5MjE2MDQsMTIuNzAzMTIyNyAxOS43MDQyMTI5LDEyLjIzMjM3MjUgTDE5LjcwNDIxMjksNi44NTg1MzY1OSBDMjUuMzQ3NDA3MSw3LjM4MzIzODI3IDI5LjgxNjc2MTcsMTEuODUyNTkyOSAzMC4zNDE0NjM0LDE3LjQ5NTc4NzEgWiBNMTcuNDk1Nzg3MSw2Ljg1ODUzNjU5IEwxNy40OTU3ODcxLDEyLjIzMjM3MjUgQzE0LjgwNzgzOTYsMTIuNzAzMTIyNyAxMi43MDMxMjI3LDE0LjgwNzgzOTYgMTIuMjMyMzcyNSwxNy40OTU3ODcxIEw2Ljg1ODUzNjU5LDE3LjQ5NTc4NzEgQzcuMzgzMjM4MjcsMTEuODUyNTkyOSAxMS44NTI1OTI5LDcuMzgzMjM4MjcgMTcuNDk1Nzg3MSw2Ljg1ODUzNjU5IFoiIGlkPSJwYXRoLTEiPjwvcGF0aD4KICAgIDwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJTaGFwZS1Db3B5IiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8dXNlIGZpbGw9IiNGRkZGRkYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgeGxpbms6aHJlZj0iI3BhdGgtMSI+PC91c2U+CiAgICAgICAgICAgIDxwYXRoIHN0cm9rZT0iIzAwNzNBQSIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNMTYuNDk1Nzg3MSwzMy40NDU4MDg5IEM5Ljg4OTg2NTY3LDMyLjUxNTk2OTYgNC42ODQwMzAzNywyNy4zMTAxMzQzIDMuNzU0MTkxMDcsMjAuNzA0MjEyOSBMMSwyMC43MDQyMTI5IEwxLDE2LjQ5NTc4NzEgTDMuNzU0MTkxMDcsMTYuNDk1Nzg3MSBDNC42ODQwMzAzNyw5Ljg4OTg2NTY3IDkuODg5ODY1NjcsNC42ODQwMzAzNyAxNi40OTU3ODcxLDMuNzU0MTkxMDcgTDE2LjQ5NTc4NzEsMSBMMjAuNzA0MjEyOSwxIEwyMC43MDQyMTI5LDMuNzU0MTkxMDcgQzI3LjMxMDEzNDMsNC42ODQwMzAzNyAzMi41MTU5Njk2LDkuODg5ODY1NjcgMzMuNDQ1ODA4OSwxNi40OTU3ODcxIEwzNi4yLDE2LjQ5NTc4NzEgTDM2LjIsMjAuNzA0MjEyOSBMMzMuNDQ1ODA4OSwyMC43MDQyMTI5IEMzMi41MTU5Njk2LDI3LjMxMDEzNDMgMjcuMzEwMTM0MywzMi41MTU5Njk2IDIwLjcwNDIxMjksMzMuNDQ1ODA4OSBMMjAuNzA0MjEyOSwzNi4yIEwxNi40OTU3ODcxLDM2LjIgTDE2LjQ5NTc4NzEsMzMuNDQ1ODA4OSBaIE04LjAxMjExOTk5LDIwLjcwNDIxMjkgQzguODU1NDc2NDUsMjQuOTg1MjIxNiAxMi4yMTQ3Nzg0LDI4LjM0NDUyMzYgMTYuNDk1Nzg3MSwyOS4xODc4OCBMMTYuNDk1Nzg3MSwyNS43NTg5MTQgQzE0LjA2NDQ5NjgsMjUuMDQyMDU3MiAxMi4xNTc5NDI4LDIzLjEzNTUwMzIgMTEuNDQxMDg2LDIwLjcwNDIxMjkgTDguMDEyMTE5OTksMjAuNzA0MjEyOSBaIE0xOC42LDE1LjMzMDM3NjkgQzE2Ljc5NDIzNywxNS4zMzAzNzY5IDE1LjMzMDM3NjksMTYuNzk0MjM3IDE1LjMzMDM3NjksMTguNiBDMTUuMzMwMzc2OSwyMC40MDU3NjMgMTYuNzk0MjM3LDIxLjg2OTYyMzEgMTguNiwyMS44Njk2MjMxIEMyMC40MDU3NjMsMjEuODY5NjIzMSAyMS44Njk2MjMxLDIwLjQwNTc2MyAyMS44Njk2MjMxLDE4LjYgQzIxLjg2OTYyMzEsMTYuNzk0MjM3IDIwLjQwNTc2MywxNS4zMzAzNzY5IDE4LjYsMTUuMzMwMzc2OSBaIE0yMC43MDQyMTI5LDI5LjE4Nzg4IEMyNC45ODUyMjE2LDI4LjM0NDUyMzYgMjguMzQ0NTIzNiwyNC45ODUyMjE2IDI5LjE4Nzg4LDIwLjcwNDIxMjkgTDI1Ljc1ODkxNCwyMC43MDQyMTI5IEMyNS4wNDIwNTcyLDIzLjEzNTUwMzIgMjMuMTM1NTAzMiwyNS4wNDIwNTcyIDIwLjcwNDIxMjksMjUuNzU4OTE0IEwyMC43MDQyMTI5LDI5LjE4Nzg4IFogTTI5LjE4Nzg4LDE2LjQ5NTc4NzEgQzI4LjM0NDUyMzYsMTIuMjE0Nzc4NCAyNC45ODUyMjE2LDguODU1NDc2NDUgMjAuNzA0MjEyOSw4LjAxMjExOTk5IEwyMC43MDQyMTI5LDExLjQ0MTA4NiBDMjMuMTM1NTAzMiwxMi4xNTc5NDI4IDI1LjA0MjA1NzIsMTQuMDY0NDk2OCAyNS43NTg5MTQsMTYuNDk1Nzg3MSBMMjkuMTg3ODgsMTYuNDk1Nzg3MSBaIE0xNi40OTU3ODcxLDguMDEyMTE5OTkgQzEyLjIxNDc3ODQsOC44NTU0NzY0NSA4Ljg1NTQ3NjQ1LDEyLjIxNDc3ODQgOC4wMTIxMTk5OSwxNi40OTU3ODcxIEwxMS40NDEwODYsMTYuNDk1Nzg3MSBDMTIuMTU3OTQyOCwxNC4wNjQ0OTY4IDE0LjA2NDQ5NjgsMTIuMTU3OTQyOCAxNi40OTU3ODcxLDExLjQ0MTA4NiBMMTYuNDk1Nzg3MSw4LjAxMjExOTk5IFoiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==');
    color: #000;
    content: '';
    width: 38px;
    height: 38px;
    display: inline-block;
    cursor: -webkit-grabbing;
}

.bt-focus-point .grid > div {
    position: absolute;
    width: 1px;
    height: 100%;
    top: 0;
    opacity: 0.4;
    left: 0;
    background: #fff;
}

.bt-focus-point .grid > .x1 {
    left: 33.3333%;
}

.bt-focus-point .grid > .x2 {
    left: 66.66666%;
}

.bt-focus-point .grid > .y1,
.bt-focus-point .grid > .y2 {
    width: 100%;
    height: 1px;
    left: 0;
    top: 33.33333%;
}

.bt-focus-point .grid > .y2 {
    top: 66.66666%;
}

.attachment-actions .preview-images-btn,
.wp_attachment_holder .preview-images-btn,
.preview-thumbnails .preview-images-btn {
    margin: 0 4px;
}

.attachment-actions + .bt-user-message {
    margin-top: 10px;
}

/***
*** Media Modal => Image Detail
**/
.attachment-info .thumbnail {
    padding: 0;
    border: none;
    box-shadow: none;
    font-size: 0;
}

.attachment-info.attachment-info .thumbnail,
.attachment-info.attachment-info .thumbnail img {
    max-height: 100%;
    max-width: 100%;
    height: auto;
}

.attachment-info.attachment-info .thumbnail img {
    width: 100%;
}

.attachment-info .thumbnail,
.attachment-info .details {
    float: none;
    text-align: center;
}

#bt-thumbnil-selector .bssm-item {
    width: auto;
}

#bt-thumbnil-selector .bf-item-container figure {
    min-height: 10px;
}

#bt-thumbnil-selector .bf-item-container {
    min-width: 10px;
}

/***
*** Messages
**/

.bt-user-message {
    background: #ccc;
    color: #fdfdfd;
    padding: 3px 5px;
    font-size: 11px;
    text-align: center;
    margin: 2px 0px;
}

.bt-user-message.success {
    background: #46b450;
    color: #fdfdfd;
}

.media-modal-content .attachment-info:before {
    content: '';
    display: inline-block;
    background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iOTVweCIgaGVpZ2h0PSI2MHB4IiB2aWV3Qm94PSIwIDAgOTUgNjAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDQ5ICg1MTAwMikgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAgICA8dGl0bGU+R3JvdXAgMjwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPgogICAgICAgIDxwYXRoIGQ9Ik00Mi4yODc0MDczLC0zLjExNTI4ODM1IEM0Mi4yNzE5Mjc4LC0zLjEzMjA5MzkxIDQyLjI1NjQ0ODIsLTMuMTQ4Mjc3MDMgNDIuMjQxNTg3OSwtMy4xNjUwODI1OCBDNDIuMjQxNTg3OSwtMy4xNjU3MDUwMSA0Mi4yNDA5Njg3LC0zLjE2NTcwNTAxIDQyLjI0MDk2ODcsLTMuMTY1NzA1MDEgQzQyLjI1NjQ0ODIsLTMuMTQ4ODk5NDYgNDIuMjcxOTI3OCwtMy4xMzIwOTM5MSA0Mi4yODc0MDczLC0zLjExNTI4ODM1IFogTTE5LjkwMjc0NTgsMTQuNzcyMDQ0MyBDMjAuMTY0NjU5NywxNS4yMTAyMzM1IDIwLjQyODQzMTEsMTUuNjQ0Njg4MiAyMC43MTA3NzgxLDE2LjA3MDQyODkgQzIwLjg2MDAwMDksMTYuMjkzODgwNSAyMS4wMDc5ODUzLDE2LjUxNzMzMjEgMjEuMTQ3OTIwNCwxNi43NDc2MzA0IEMyMS4yMTc4ODgsMTYuODYyNzc5NiAyMS4yODY2MTcyLDE2Ljk3OTc5NiAyMS4zNTU5NjU1LDE3LjA5NTU2NzYgQzIxLjI3OTgwNjIsMTcuMjYyMzc4MyAyMS4yMDU1MDQzLDE3LjQyOTgxMTQgMjEuMTMyNDQwOSwxNy41OTc4NjY5IEMyMC44MjE2MTE2LDE4LjMwNDk0NSAyMC41MjM3ODUxLDE5LjAyMzIyNjggMjAuMjY5MzAxNCwxOS43NTMzMzQ3IEMxOS45ODc1NzM3LDIwLjU2MzczNTggMTkuNzIwMDg3MSwyMS4zODQ3MTgyIDE5LjUwODk0NjEsMjIuMjE2OTA0MyBDMTkuNDI1MzU2NiwyMi41NDY3OTExIDE5LjM0OTgxNjQsMjIuODc4NTQ1MSAxOS4yODM1NjM5LDIzLjIxMjE2NjUgQzE5LjIwODY0MjksMjMuNTkzNzE0OCAxOS4xNzU4MjYzLDIzLjk4MzM1NDYgMTkuMTQxMTUyMSwyNC4zNzExMjcyIEMxOS4xMzU1Nzk1LDI0LjQzNjQ4MjEgMTkuMTMzMTAyOCwyNC41MDA1OTIyIDE5LjEzNDk2MDMsMjQuNTYyODM1IEMxOS4xMDcwOTcxLDI0LjgzNzk0ODEgMTkuMDgxMDkxNSwyNS4xMTQzMDYxIDE5LjA2MzEzNTIsMjUuMzkwNjY0MSBDMTkuMDMwOTM3NywyNS44NzExNzg0IDE4Ljk5NTY0NDQsMjYuMzU0ODA0OSAxOS4wMDg2NDcyLDI2LjgzNTk0MTYgQzE5LjAzMjE3NjEsMjcuNjU0NDM0MyAxOS4wOTcxOTAyLDI4LjQ3ODUyODggMTkuMjAwNTkzNiwyOS4yOTE0MTk3IEMxOS4yNDE0NTk2LDI5LjYxNTA4MjIgMTkuMjkyMjMyNSwyOS45MzY4Nzc0IDE5LjM0NzMzOTcsMzAuMjU3NDI3NyBDMTkuMjgxMDg3MiwzMC40MDI0NTM0IDE5LjI1MDEyODEsMzAuNTY1NTI5NSAxOS4yNjYyMjY4LDMwLjczMjk2MjYgQzE5LjI5NzE4NTksMzEuMDY0MDk0MyAxOS4zMjEzMzQsMzEuMzk4MzM4MSAxOS4zNjU5MTUxLDMxLjcyNzYwMjQgQzE5LjQxMzU5MjEsMzIuMDc5Mjc0MiAxOS40OTQwODU4LDMyLjQyMzQ3NjggMTkuNTc4OTEzNywzMi43NjgzMDE4IEMxOS42NDk1MDA0LDMzLjExMjUwNDUgMTkuNjk5MDM0OSwzMy40NjEwNjQxIDE5Ljc3MDI0MDksMzMuODA0NjQ0MyBDMTkuODYzNzM3MywzNC4yNTAzMDI2IDE5Ljk2ODM3OSwzNC42OTAzNTkyIDIwLjEwNzA3NTgsMzUuMTI0MTkxNCBDMjAuMzQ2Njk5MSwzNS44NzI5NzIxIDIwLjU5NDk5MTEsMzYuNjE5ODg1NiAyMC44NTAwOTQsMzcuMzYzMDY0NSBDMjEuMDg5NzE3MywzOC4wNTk1NjEzIDIxLjM3NTc3OTMsMzguNzM1NTE4IDIxLjY1Mzc5MiwzOS40MTcwNzY1IEMyMS43OTE4Njk1LDM5Ljc1NTA1NDkgMjEuOTI2MjMyLDQwLjA5NDI3ODEgMjIuMDc2MDc0LDQwLjQyNzI3NyBDMjIuMjU3NDk0Myw0MC44MjkzNjU0IDIyLjQ1Mzc3NDksNDEuMjIwODcyNiAyMi42NTg3MjQxLDQxLjYxMDUxMjQgQzIzLjAwMjk4OTIsNDIuMjYzNDM5MyAyMy4zNTgzOTk2LDQyLjkwODg5NyAyMy43MjkyODk1LDQzLjU0Njg4NTYgQzIzLjkyODY2Niw0My44OTA0NjU4IDI0LjEzNTQ3MjgsNDQuMjI5Njg5IDI0LjM1NjUyMDcsNDQuNTYwODIwNiBDMjQuNTY4MjgwOSw0NC44Nzc2MzY0IDI0LjgwNDgwODMsNDUuMTc3MDI0MiAyNS4wNDU2NzAxLDQ1LjQ3MjY3NzUgQzI1LjM0NzIxMTYsNDUuODQ0MjY2OSAyNS42NjQyMzI3LDQ2LjIwNDAzMDIgMjUuOTk0MjU2Niw0Ni41NTAxMDAxIEMyNi4yMzU3Mzc1LDQ2LjgwMzQyODMgMjYuNTA0NDYyNSw0Ny4wMjU2MzUxIDI2Ljc3MjU2ODIsNDcuMjQ5MDg2NyBDMjcuMDY0MjAyOCw0Ny40OTMwNzg0IDI3LjM1Mjc0MTYsNDcuNzM5NTU5OCAyNy42NTQyODMxLDQ3Ljk3MTcyNTQgQzI3Ljk4NTU0NTQsNDguMjI2OTIwOSAyOC4zMjM2MTg3LDQ4LjQ3MzQwMjMgMjguNjYzNTQ5NSw0OC43MTgwMTY1IEMyOS4zNjU3MDE3LDQ5LjIyMTU2MDYgMzAuMDY4NDczMSw0OS43MjA3NDc4IDMwLjgwMzQ0MTksNTAuMTc0NDk3NyBDMzEuNDkzODI5Nyw1MC42MDA4NjA4IDMyLjIxMjY5OTgsNTAuOTc4MDUyMSAzMi45NDIwOTYsNTEuMzMwOTY4OCBDMzMuNzEzNTk2NSw1MS43MDQ0MjU1IDM0LjQ5NTAwNCw1Mi4wNTY3MTk3IDM1LjI3NTE3MzEsNTIuNDEwMjU4NyBDMzYuMDE1MDk1NCw1Mi43NDYzNjk4IDM2Ljc2MzA2Nyw1My4wNjk0MDk5IDM3LjUzMDIzMzMsNTMuMzM3Njc2MyBDMzguMzU5OTM3LDUzLjYyODM1MDEgMzkuMTk5NTQ3NSw1My44ODkxNDc0IDQwLjA0NzIwNzUsNTQuMTIxOTM1NCBDNDAuODQ1OTUyLDU0LjM0MTY1MjUgNDEuNjQ5NjUwMSw1NC41MTk2NjY4IDQyLjQ2Mzg3NDIsNTQuNjcwOTE2OCBDNDMuMjMwNDIxMyw1NC44MTQ2OTc2IDQ0LjAwODExMzYsNTQuODg4NzY2NiA0NC43ODUxODY4LDU0LjkzNzkzODQgQzQ1LjI0OTU3MzIsNTQuOTY3MTkyNSA0NS43MTU4MTcxLDU0Ljk4MDg4NTkgNDYuMTgwMjAzNSw1NC45OTIwODk2IEM0Ni4zNjg0MzQ4LDU0Ljk5NzA2OSA0Ni41NTY2NjYxLDU1LjAwMTQyNiA0Ni43NDQ4OTczLDU0Ljk5OTU1ODcgQzQ2Ljk5NjkwNDMsNTQuOTk3MDY5IDQ3LjI0NzY3Myw1NC45NDA0MjgxIDQ3LjQ4OTc3MzEsNTQuODczODI4MyBDNDcuODgxNzE1Miw1NC43NjY3NzA3IDQ4LjI2NDk4ODcsNTQuNTY1NzI2NSA0OC41OTkzNDY5LDU0LjMzODU0MDMgQzQ4Ljc1MDQyNzMsNTQuMjM1MjE3MyA0OC44OTkwMzA5LDU0LjEzMDY0OTQgNDkuMDUzODI2NCw1NC4wMzE2ODM0IEM0OS4xOTU2MTksNTMuOTQwODA4OSA0OS4zMjM3ODk3LDUzLjgzMTg4NCA0OS40NDMyOTE4LDUzLjcxMzAwMDMgQzQ5LjUwMjczMzIsNTMuNjU0NDkyMSA0OS41NDkxNzE5LDUzLjU5Nzg1MTEgNDkuNTk0OTkxMyw1My41Mjc1MTY4IEM0OS42NjA2MjQ2LDUzLjQ0MDM3NjkgNDkuNzE3NTg5Myw1My4zNDc2MzUxIDQ5Ljc2NTI2NjMsNTMuMjQ5MjkxNSBDNDkuODA5MjI4Miw1My4xNDU5Njg1IDQ5Ljg0NTE0MDgsNTMuMDM4OTEwOSA0OS44NzMwMDQsNTIuOTI5MzYzNiBDNDkuOTk1NjAyLDUyLjUyNDE2MyA1MC4wMDMwMzIxLDUyLjA4MDM3MTkgNDkuOTk5MzE3LDUxLjY2MDg1NTUgQzQ5Ljk5NzQ1OTUsNTEuNDc4NDg0MiA0OS45ODEzNjA4LDUxLjI5NjczNTIgNDkuOTcxNDUzOSw1MS4xMTQ5ODYzIEM0OS45NjU4ODEyLDUxLjAyMjg2NyA0OS45NjIxNjYxLDUwLjkzMTk5MjUgNDkuOTU2NTkzNSw1MC44NDA0OTU2IEM0OS45NDE3MzMxLDUwLjYyMDc3ODUgNDkuODg3ODY0Myw1MC40MDg1MzA2IDQ5LjgzNDYxNDcsNTAuMTk1NjYwMyBDNDkuODI2NTY1Myw1MC4xNjQ1Mzg5IDQ5LjgxNTQyLDUwLjEzNDY2MjQgNDkuODAxNzk4LDUwLjEwNDc4NTggQzQ5Ljc4MTM2NSw0OS4yNjIwMTg1IDQ5Ljc3MDIxOTgsNDguNDE4NjI4NyA0OS43Njg5ODE0LDQ3LjU3NDYxNjUgQzQ5Ljc2NzEyMzksNDUuOTc2ODQ0MSA0OS44MDM2NTU2LDQ0LjM3NDcxNDcgNDkuNzE3NTg5Myw0Mi43NzgxODcxIEM0OS42NzkyLDQyLjA4MjkzNTIgNDkuNjQyMDQ5MSw0MS4zODc2ODMyIDQ5LjYwNjc1NTgsNDAuNjkxODA4OSBDNDkuNTkwMDM3OSw0MC4zNDg4NTExIDQ5LjU4MDEzMDksNDAuMDA1MjcwOSA0OS41NTQ3NDQ1LDM5LjY2MzU1OCBDNDkuNTI4NzM4OSwzOS4zMTY4NjU3IDQ5LjQ5MzQ0NTUsMzguOTcxNDE4MiA0OS40NjAwMDk3LDM4LjYyNDcyNTggQzQ5LjM5NzQ3MjMsMzcuOTc1NTMzNiA0OS4zNTM1MTA0LDM3LjMyNTA5NjQgNDkuMjg2NjM4OCwzNi42NzcxNDkgQzQ5LjIxNzkwOTYsMzYuMDAzNjgyIDQ5LjEzNjE3NzYsMzUuMzA5MDUyNSA0OC45NDc5NDYzLDM0LjY1Nzk5MjkgQzQ4Ljg4MTY5MzgsMzQuNDMwMTg0MyA0OC42NzYxMjU1LDM0LjIyOTc2MjUgNDguNDY3NDYxMiwzNC4xMzA3OTY1IEM0OC40MDQzMDQ2LDM0LjEwMDkyIDQ4LjMzNzQzMywzNC4wNzc4OTAxIDQ4LjI2OTMyMywzNC4wNjI5NTE4IEM0OC4yMjcyMTg2LDM0LjAzMTgzMDUgNDguMTg1MTE0MywzNC4wMDI1NzYzIDQ4LjE0MjM5MDcsMzMuOTczMzIyMiBDNDcuOTg2MzU2OSwzMy44Njc1MDk1IDQ3LjgyNzg0NjQsMzMuNzYzNTY0IDQ3LjY2NzQ3ODMsMzMuNjY1ODQyOSBDNDcuMjY2MjQ4NCwzMy40MTg3MzkgNDYuODU1MTExNywzMy4xODQ3MDYxIDQ2LjQyNzI1NzEsMzIuOTg3Mzk2NSBDNDYuMDY2ODkzMiwzMi44MjA1ODU4IDQ1LjY5MjI4ODIsMzIuNjg5MjUzNSA0NS4zMzY4Nzc5LDMyLjUwOTM3MTggQzQ0Ljk5MzIzMTksMzIuMzM1MDkyIDQ0LjY2MzIwOCwzMi4xMjU5NTYzIDQ0LjMzMTMyNjYsMzEuOTI3NDAxOCBDNDQuMjU1MTY3MiwzMS44NzM4NzMgNDQuMTc1OTExOSwzMS44MzE1NDc5IDQ0LjA5NTQxODMsMzEuNzk3MzE0MyBDNDMuODkzNTY1LDMxLjU3NTEwNzYgNDMuNjQ1MjczMSwzMS40MDc2NzQ1IDQzLjM1NDI1NzYsMzEuMzAzNzI5IEM0My4xODgzMTY5LDMxLjI0Mzk3NTkgNDMuMDE4NjYxMSwzMS4xOTI5MzY5IDQyLjg1MDI0MzYsMzEuMTQxMjc1MyBDNDIuMzg3NzE0OCwzMC45OTAwMjU0IDQxLjkyMDIzMjUsMzAuODM1NjYzMiA0MS40Nzc1MTc1LDMwLjYzNTI0MTUgQzQxLjAwMDc0NzUsMzAuNDIwNTAzOCA0MC41NTQ5MzY2LDMwLjE2MTU3MzggNDAuMTE1MzE3NSwyOS44ODIxMDM3IEMzOS44NjgyNjM5LDI5LjcxMDkzNjEgMzkuNjIzNjg3MSwyOS41Mzg1MjM1IDM5LjM5MjczMjMsMjkuMzQ1NTcwOSBDMzkuMTc0MTYxMSwyOS4xNjI1NzcxIDM4Ljk3NjY0MjEsMjguOTYwOTEwNCAzOC43ODIyMTksMjguNzU0MjY0NCBDMzguNTM3NjQyMiwyOC40NjkxOTI0IDM4LjI5ODYzOCwyOC4xNzc4OTYyIDM4LjA5MTgzMTIsMjcuODYzNTcwMSBDMzcuODc4MjEzNSwyNy41MzgwNDAzIDM3LjY3ODgzNywyNy4yMTA2NDMyIDM3LjQ5MTIyNDksMjYuODcwNzk3NiBDMzcuMzA4NTY2MiwyNi40OTU0NzM2IDM3LjEyMzQzMDksMjYuMTE3NjU5OSAzNi45ODQxMTUsMjUuNzIzNjYzIEMzNi44ODYyODQyLDI1LjQ0ODU0OTkgMzYuODAwODM3MSwyNS4xNzA5NDcgMzYuNzIwOTYyNywyNC44OTE0NzY5IEMzNi44ODk5OTkzLDI0Ljg5NTIxMTUgMzcuMDU5MDM2LDI0Ljg5NzcwMTIgMzcuMjI4NjkxOCwyNC45MDM5MjU1IEMzOC4zMTQ3MzY3LDI0Ljk1MTg1MjQgMzkuNDAyMDIsMjUuMDA2MDAzNiA0MC40ODYyMDc0LDI1LjA5MDAzMTQgQzQxLjEyMDI0OTYsMjUuMTM4NTgwOCA0MS43NTE4MTUxLDI1LjIxMzg5NDYgNDIuMzg2NDc2NCwyNS4yNjgwNDU4IEM0Mi43NTYxMjgsMjUuMjk5MTY3MiA0My4xMjYzOTg3LDI1LjMxNzIxNzYgNDMuNDk3OTA3OCwyNS4zMjIxOTcgQzQzLjkyMzI4NTcsMjUuMzI4NDIxMyA0NC4zMzAwODgyLDI1LjIzNDQzNDcgNDQuNzI4ODQxMywyNS4wOTEyNzYzIEM0NS4xMzUwMjQ2LDI0Ljk0NTYyODEgNDUuNDgzMDA0OCwyNC43MDIyNTg4IDQ1LjgyNjY1MDcsMjQuNDQ4MzA4MyBDNDYuMDgyMzcyOCwyNC4yNjAzMzUgNDYuMjI0MTY1NCwyMy45NjU5MjY2IDQ2LjIyNjAyMywyMy42NjY1Mzg4IEM0Ni4yMjY2NDIxLDIzLjY2NDA0OTEgNDYuMjI4NDk5NywyMy42NjIxODE4IDQ2LjIyOTczODEsMjMuNjU5NjkyMSBDNDYuMjkyODk0NiwyMy41MjMzODA0IDQ2LjMyODgwNzIsMjMuMzY5MDE4MyA0Ni4zNjU5NTgxLDIzLjIyMzM3MDIgQzQ2LjM5MjU4MjksMjMuMTIwMDQ3MSA0Ni40MDgwNjI0LDIzLjAxMTc0NDcgNDYuNDE5MjA3NywyMi45MDQ2ODcxIEM0Ni41OTAxMDE5LDIxLjEzMzI1NzMgNDYuNDI0MTYxMiwxOS4zNDc1MTE3IDQ2LjIxODU5MjgsMTcuNTg3Mjg1NiBDNDYuMDIyOTMxMywxNS45MTQxOTk1IDQ1Ljc4MjA2OTYsMTQuMjQ3MzM3NiA0NS41NzQ2NDM3LDEyLjU3NjExODcgQzQ1LjQ3MzcxNywxMS43NTYzODEyIDQ1LjM3OTYwMTQsMTAuOTM1Mzk4OCA0NS4zMTk1NDA4LDEwLjExMTkyNjcgQzQ1LjI1ODI0MTgsOS4yNzEwMjY2MyA0NS4yMjQ4MDU5LDguNDI4MjU5MjYgNDUuMjA0MzcyOSw3LjU4NTQ5MTkgQzQ1LjE2MjI2ODYsNS45MDMwNjkzMiA0NS4xNTA1MDQxLDQuMjIwNjQ2NzQgNDUuMTE4MzA2NywyLjUzODg0NjU4IEM0NS4xMTA4NzY1LDIuMTQ2MDk0NTkgNDUuMTA0Njg0NywxLjc1Mzk2NTAyIDQ1LjA5OTczMTIsMS4zNjI0NTc4OCBDNDUuMDk3MjU0NSwxLjE3ODIxOTIyIDQ1LjA5NTM5NjksMC45OTQ2MDI5OTMgNDUuMDkzNTM5NCwwLjgxMDM2NDMzOCBDNDUuMDkxNjgxOSwwLjU3NjMzMTQ1MiA0NS4wOTY2MzUzLDAuMzQzNTQzNDIyIDQ1LjA1MzI5MjYsMC4xMTIwMDAyNDggQzQ0Ljk5OTQyMzgsLTAuMTg2NzY1MTM5IDQ0Ljg5NjAyMDQsLTAuNDU0NDA5MTMxIDQ0LjY5NzI2MywtMC42ODY1NzQ3MzMgQzQ0LjU5MTM4MjksLTAuODA5ODE1NDU1IDQ0LjQ3ODA3MjcsLTAuOTI4MDc2NzU0IDQ0LjM2ODQ3NzUsLTEuMDQ3NTgyOTEgQzQ0LjIyOTE2MTYsLTEuMjAwMDc3NzQgNDQuMDgyNDE1NSwtMS4zNDQ0ODEwMSA0My45MzM4MTE4LC0xLjQ4ODg4NDI4IEM0My42NDcxMzA2LC0xLjc2ODM1NDQgNDMuMzUxMTYxNywtMi4wMzc4NjU2OCA0My4wNjM4NjE0LC0yLjMxNTQ2ODUyIEM0Mi43Nzc3OTkzLC0yLjU5MjQ0ODkzIDQyLjUwNTM1OTMsLTIuODgzMTIyNzUgNDIuMjM0Nzc2OSwtMy4xNzUwNDE0MyBDNDIuMjAwNzIxOSwtMy4yMjE3MjM1MiA0Mi4xNjI5NTE4LC0zLjI2NDY3MTA1IDQyLjEyMjA4NTgsLTMuMzAzODg0IEM0Mi4wODYxNzMyLC0zLjM0OTMyMTI0IDQyLjA0NzE2NDgsLTMuMzkwNDAxNDggNDIuMDA1MDYwNCwtMy40MjgzNjk1OCBDNDIuMDAxMzQ1MywtMy40MzE0ODE3MiA0MS45OTgyNDk0LC0zLjQzNDU5Mzg2IDQxLjk5NTE1MzUsLTMuNDM3NzA2IEM0MS43NjY2NzU0LC0zLjY5MTY1NjU4IDQxLjUzODgxNjUsLTMuOTQ0OTg0NzMgNDEuMzA2MDA0MSwtNC4xOTQ1NzgzMSBDNDEuMjM0MTc5LC00LjI3MjM4MTggNDEuMTMyNjMzMiwtNC4zMjkwMjI3NCA0MS4wMjMwMzgsLTQuMzY1NzQ1OTggQzQwLjk5NzAzMjQsLTQuNDMwNDc4NDggNDAuOTY1NDU0MSwtNC40OTM5NjYxMyA0MC45MjI3MzA2LC00LjU1MTg1MTkyIEM0MC44MTEyNzc5LC00LjcwMTg1NzA0IDQwLjY5Nzk2NzYsLTQuODIwNzQwNzcgNDAuNTI3MDczNCwtNC45MDIyNzg4MiBDNDAuMzk3MDQ1MiwtNC45NjQ1MjE2MSA0MC4yMzIzNDI4LC01IDQwLjA4MjUwMDgsLTUgQzQwLjA1NDYzNzcsLTUgNDAuMDI2Nzc0NSwtNC45OTg3NTUxNCA0MC4wMDAxNDk3LC00Ljk5NjI2NTQzIEMzOS43Nzg0ODI2LC00Ljk3NTEwMjg4IDM5LjYyNzQwMjIsLTQuODgyOTgzNTYgMzkuNDM3MzEzNCwtNC43ODA5MDUzOCBDMzkuMzE0NzE1NCwtNC43MTU1NTA0NSAzOS4xOTc2OSwtNC42NDI3MjYzOSAzOS4wODAwNDU1LC00LjU2OTI3OTkgQzM4Ljc5NDYwMjYsLTQuMzkxMjY1NTMgMzguNTA5MTU5OCwtNC4yMTEzODM4NyAzOC4yMjYxOTM3LC00LjAyODM5MDA3IEMzNy45MTIyNjg1LC0zLjgyNjEwMSAzNy42MDg4Njk0LC0zLjYwODI1MTI0IDM3LjMwMDUxNjksLTMuMzk3MjQ4MTkgQzM2Ljk1OTM0NzcsLTMuMTYzMjE1MyAzNi42MTY5NDAxLC0yLjkzMTY3MjEzIDM2LjI3NzYyODUsLTIuNjk0NTI3MSBDMzUuNjQxMTA5NiwtMi4yNTEzNTg0NCAzNC45ODY2MzQ0LC0xLjgzNDMzMTc2IDM0LjM2MTI2MDcsLTEuMzc0OTc5OTggQzMzLjcwNTU0NzIsLTAuODkzODQzMjIgMzMuMDI3NTQzLC0wLjQ0NTA3MjcxMiAzMi4zNzE4Mjk1LDAuMDM2Njg2NDczMiBDMzEuNzA4Njg1NywwLjUyNDA0NzUxIDMxLjAzODExMTgsMS4wMDM5Mzk0MSAzMC4zNjM4MjI4LDEuNDc2MzYyMTggQzMwLjAyMjAzNDQsMS43MTU5OTY5MiAyOS42ODQ1ODAzLDEuOTYxMjMzNSAyOS4zNDU4ODc5LDIuMjA3MDkyNTIgQzI5LjAwOTA1MywyLjQ1MTA4NDI1IDI4LjY2NDE2ODcsMi42ODIwMDUgMjguMzE4NjY1MiwyLjkxNDE3MDYgQzI3Ljk2ODIwODMsMy4xNTA2OTMyIDI3LjYyNTgwMDgsMy40MDA5MDkyMSAyNy4yODE1MzU3LDMuNjQ1NTIzMzcgQzI2Ljk0NTMxOTksMy44ODU3ODA1NCAyNi42MDE2NzQsNC4xMTQ4MzQgMjYuMjU5MjY2NCw0LjM0ODI0NDQ2IEMyNS42MzY5ODg3LDQuNzcxNDk1NDIgMjUuMDA5NzU3NSw1LjE4OTc2Njk2IDI0LjM5MjQzMzIsNS42MjExMDk0OSBDMjMuNzgxMzAwOCw2LjA0OTk2MjMgMjMuMTU1MzA3OSw2LjQ1NTE2Mjg2IDIyLjU0NjY1MjIsNi44ODc3NTAyNCBDMjIuMjQ2MzQ5LDcuMTAxMjQzMDEgMjEuOTQwNDczMiw3LjMwNzI2NjY0IDIxLjY0MzI2NTksNy41MjUxMTY0IEMyMS4zNTIyNTA0LDcuNzM4NjA5MTYgMjEuMDcxMTQxOSw3Ljk2NzA0MDIgMjAuNzc4MjY4OSw4LjE3ODY2NTY4IEMyMC4xNDExMzA4LDguNjM5MjYyMzIgMTkuNDc5MjI1NCw5LjA2Njg3MDI4IDE4LjgwMDYwMjEsOS40NjI3MzQ0MiBDMTguNTkzNzk1NCw5LjU4Mjg2MyAxOC40NTI2MjE5LDkuODQ1NTI3NTcgMTguNDEyMzc1MSwxMC4wNzM5NTg2IEMxOC4zOTYyNzY0LDEwLjE2NjcwMDQgMTguMzkzNzk5NiwxMC4yNjEzMDk0IDE4LjQwNDk0NDksMTAuMzUyODA2MyBDMTguNDAyNDY4MiwxMC4zNTQ2NzM2IDE4LjM5OTk5MTUsMTAuMzU1OTE4NCAxOC4zOTc1MTQ3LDEwLjM1Nzc4NTcgQzE4LjE5MzgwMzksMTAuNTAwOTQ0MSAxOC4wNTMyNDk2LDEwLjcyMTkwNiAxOC4wMTA1MjYxLDEwLjk2OTAwOTkgQzE4LjAwNjgxMSwxMS4wNTM2NjAxIDE4LjAwMzcxNTEsMTEuMTM4MzEwMyAxOCwxMS4yMjI5NjA1IEMxOC4wMTY3MTc5LDExLjM4OTE0ODcgMTguMDcxODI1MSwxMS41NDAzOTg3IDE4LjE2NjU1OTksMTEuNjc3MzMyOCBDMTguNzMxODcyOSwxMi43MTY3ODc0IDE5LjI5NjU2NjgsMTMuNzU1NjE5NiAxOS45MDI3NDU4LDE0Ljc3MjA0NDMgWiIgaWQ9InBhdGgtMSI+PC9wYXRoPgogICAgICAgIDxmaWx0ZXIgeD0iLTIxLjklIiB5PSItMjUuMCUiIHdpZHRoPSIxNjIuNSUiIGhlaWdodD0iMTMzLjMlIiBmaWx0ZXJVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIGlkPSJmaWx0ZXItMiI+CiAgICAgICAgICAgIDxmZU9mZnNldCBkeD0iMyIgZHk9Ii01IiBpbj0iU291cmNlQWxwaGEiIHJlc3VsdD0ic2hhZG93T2Zmc2V0T3V0ZXIxIj48L2ZlT2Zmc2V0PgogICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIyLjUiIGluPSJzaGFkb3dPZmZzZXRPdXRlcjEiIHJlc3VsdD0ic2hhZG93Qmx1ck91dGVyMSI+PC9mZUdhdXNzaWFuQmx1cj4KICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdmFsdWVzPSIwIDAgMCAwIDAgICAwIDAgMCAwIDAgICAwIDAgMCAwIDAgIDAgMCAwIDAuMjE1OTE5Mzg0IDAiIHR5cGU9Im1hdHJpeCIgaW49InNoYWRvd0JsdXJPdXRlcjEiPjwvZmVDb2xvck1hdHJpeD4KICAgICAgICA8L2ZpbHRlcj4KICAgICAgICA8cGF0aCBkPSJNNC4zNDc2NTYyNSw5LjE1ODIwMzEyIEMzLjg2MzI3ODgzLDkuMTU4MjAzMTIgMy4zNzUwMDI0Niw4Ljk0NTMxNDYzIDIuODgyODEyNSw4LjUxOTUzMTI1IEwyLjc4MzIwMzEyLDkgTDEuMDYwNTQ2ODgsOSBMMi42ODk0NTMxMiwxLjM2NTIzNDM4IEw0LjQ2NDg0Mzc1LDEuMTMwODU5MzggTDMuMDIzNDM3NSw3Ljg1NzQyMTg4IEMzLjI0MjE4ODU5LDguMDE3NTc4OTMgMy40NzA3MDE5Myw4LjA5NzY1NjI1IDMuNzA4OTg0MzgsOC4wOTc2NTYyNSBDMy45Mzk0NTQyOCw4LjA5NzY1NjI1IDQuMTU5MTc4NjQsOC4wMjUzOTEzNSA0LjM2ODE2NDA2LDcuODgwODU5MzggQzQuNTc3MTQ5NDgsNy43MzYzMjc0IDQuNzY5NTMwMzcsNy41MzEyNTEzMyA0Ljk0NTMxMjUsNy4yNjU2MjUgQzUuMjY5NTMyODcsNi43NzczNDEzMSA1LjUzMzIwMjExLDYuMTA5Mzc5MjQgNS43MzYzMjgxMiw1LjI2MTcxODc1IEM1LjkxOTkyMjc5LDQuNDY4NzQ2MDQgNi4wMTE3MTg3NSwzLjY1NDMwMTA1IDYuMDExNzE4NzUsMi44MTgzNTkzOCBDNi4wMTE3MTg3NSwyLjAzNzEwNTQ3IDUuODUxNTY0MSwxLjQ1NTA4MDA0IDUuNTMxMjUsMS4wNzIyNjU2MiBDNS4yMzQzNzM1MiwwLjcyNDYwNzYzNyA0LjgxMDU0OTYzLDAuNTUwNzgxMjUgNC4yNTk3NjU2MiwwLjU1MDc4MTI1IEMzLjgxNDQ1MDksMC41NTA3ODEyNSAzLjQwMDM5MjU0LDAuNjE3MTg2ODM2IDMuMDE3NTc4MTIsMC43NSBDMi42MzQ3NjM3MSwwLjg4MjgxMzE2NCAyLjMwMjczNTc4LDEuMDc0MjE3NSAyLjAyMTQ4NDM4LDEuMzI0MjE4NzUgQzEuNzMyNDIwNDMsMS41ODIwMzI1NCAxLjUwOTc2NjQxLDEuODkyNTc2MzEgMS4zNTM1MTU2MiwyLjI1NTg1OTM4IEMxLjE5NzI2NDg0LDIuNjE5MTQyNDQgMS4xMTkxNDA2MiwzLjAyMzQzNTI3IDEuMTE5MTQwNjIsMy40Njg3NSBDMS4xMTkxNDA2MiwzLjcxODc1MTI1IDEuMTQ2NDg0MSwzLjkxNzk2ODAxIDEuMjAxMTcxODgsNC4wNjY0MDYyNSBDMS4yMTY3OTY5NSw0LjExNzE4Nzc1IDEuMjM2MzI4MDEsNC4xNjIxMDkxOCAxLjI1OTc2NTYyLDQuMjAxMTcxODggQzEuMjc1MzkwNyw0LjIyODUxNTc2IDEuMjgzMjAzMTIsNC4yNTU4NTkyNCAxLjI4MzIwMzEyLDQuMjgzMjAzMTIgQzAuODY1MjMyMjg1LDQuMjgzMjAzMTIgMC41NDY4NzYwOTQsNC4xOTYyODk5MyAwLjMyODEyNSw0LjAyMjQ2MDk0IEMwLjEwOTM3MzkwNiwzLjg0ODYzMTk0IDAsMy41NjQ0NTUxIDAsMy4xNjk5MjE4OCBDMCwyLjkwMDM4OTI4IDAuMDUyNzMzODQ3NywyLjYzMzc5MDM4IDAuMTU4MjAzMTI1LDIuMzcwMTE3MTkgQzAuMjYzNjcyNDAyLDIuMTA2NDQzOTkgMC40MTYwMTQ2MjksMS44NTU0Njk5NCAwLjYxNTIzNDM3NSwxLjYxNzE4NzUgQzAuODEwNTQ3ODUyLDEuMzgyODExMzMgMS4wNDU4OTcwNiwxLjE2Njk5MzE3IDEuMzIxMjg5MDYsMC45Njk3MjY1NjIgQzEuNTk2NjgxMDYsMC43NzI0NTk5NTEgMS44OTg0MzU4NiwwLjYwMTU2MzIyMyAyLjIyNjU2MjUsMC40NTcwMzEyNSBDMi45MjE4Nzg0OCwwLjE1MjM0MjIyNyAzLjY2Nzk2NDc3LDAgNC40NjQ4NDM3NSwwIEM1LjIwMzEyODY5LDAgNS44MjQyMTYyMywwLjE2MjEwNzc1NCA2LjMyODEyNSwwLjQ4NjMyODEyNSBDNi43ODkwNjQ4LDAuNzg3MTEwODc5IDcuMTMyODExMzcsMS4yMDUwNzU0NSA3LjM1OTM3NSwxLjc0MDIzNDM4IEM3LjU2NjQwNzI5LDIuMjQ4MDQ5NDEgNy42Njk5MjE4OCwyLjgyMDMwOTMyIDcuNjY5OTIxODgsMy40NTcwMzEyNSBDNy42Njk5MjE4OCwzLjkwNjI1MjI1IDcuNjI5ODgzMjEsNC4zNjEzMjU4MiA3LjU0OTgwNDY5LDQuODIyMjY1NjIgQzcuNDY5NzI2MTYsNS4yODMyMDU0MyA3LjM1NTQ2OTQ5LDUuNzI4NTEzNDggNy4yMDcwMzEyNSw2LjE1ODIwMzEyIEM3LjA1ODU5MzAxLDYuNTgwMDgwMjMgNi44ODE4MzY5Niw2Ljk3MzYzMDk5IDYuNjc2NzU3ODEsNy4zMzg4NjcxOSBDNi40NzE2Nzg2Niw3LjcwNDEwMzM5IDYuMjQ2MDk0OTgsOC4wMjE0ODMwMyA2LDguMjkxMDE1NjIgQzUuNzQ2MDkyNDgsOC41NjgzNjA3NiA1LjQ3OTQ5MzU4LDguNzgyMjI1ODEgNS4yMDAxOTUzMSw4LjkzMjYxNzE5IEM0LjkyMDg5NzA0LDkuMDgzMDA4NTYgNC42MzY3MjAyLDkuMTU4MjAzMTIgNC4zNDc2NTYyNSw5LjE1ODIwMzEyIFogTTkuMzU1NzE3MzYsMyBMMTEuMDg0MjMzLDMgTDEwLjkzMTg4OTIsMy43NDQxNDA2MiBDMTEuMjA1MzI4MSwzLjUwMTk1MTkxIDExLjQyNzk4MjEsMy4zMzAwNzg2MyAxMS41OTk4NTgsMy4yMjg1MTU2MiBDMTEuODY1NDg0MywzLjA3NjE3MTExIDEyLjEyNTI0NzMsMyAxMi4zNzkxNTQ5LDMgQzEyLjYzNjk2ODcsMyAxMi44NDM5OTc4LDMuMDkxNzk1OTYgMTMuMDAwMjQ4NiwzLjI3NTM5MDYyIEMxMy4wNzA1NjE1LDMuMzU3NDIyMjkgMTMuMTIzMjk1MywzLjQ1MjE0NzkgMTMuMTU4NDUxNywzLjU1OTU3MDMxIEMxMy4xOTM2MDgyLDMuNjY2OTkyNzIgMTMuMjExMTg2MSwzLjc4MTI0OTM5IDEzLjIxMTE4NjEsMy45MDIzNDM3NSBDMTMuMjExMTg2MSw0LjAxMTcxOTMgMTMuMTkzNjA4Miw0LjExNzE4Njk5IDEzLjE1ODQ1MTcsNC4yMTg3NSBDMTMuMTIzMjk1Myw0LjMyMDMxMzAxIDEzLjA3MDU2MTUsNC40MTIxMDg5NiAxMy4wMDAyNDg2LDQuNDk0MTQwNjIgQzEyLjkyMjEyMzIsNC41ODAwNzg1NSAxMi44MjczOTc2LDQuNjQ4NDM3MjUgMTIuNzE2MDY4OSw0LjY5OTIxODc1IEMxMi42MDQ3NDAyLDQuNzUwMDAwMjUgMTIuNDgwNzE4LDQuNzc1MzkwNjIgMTIuMzQzOTk4Niw0Ljc3NTM5MDYyIEMxMi4yMzg1MjkzLDQuNzc1MzkwNjIgMTIuMTU0NTQ1OCw0Ljc1NzgxMjY4IDEyLjA5MjA0NTUsNC43MjI2NTYyNSBDMTIuMDI5NTQ1Miw0LjY4NzQ5OTgyIDExLjk4MDcxNzUsNC42MzY3MTkwOCAxMS45NDU1NjExLDQuNTcwMzEyNSBDMTEuOTE0MzExLDQuNTAzOTA1OTIgMTEuODkyODI2OCw0LjQzOTQ1MzQ0IDExLjg4MTEwOCw0LjM3Njk1MzEyIEMxMS44NDU5NTE2LDQuMjA4OTgzNTQgMTEuODEwNzk1Nyw0LjA5NzY1NjUyIDExLjc3NTYzOTIsNC4wNDI5Njg3NSBDMTEuNzQ4Mjk1Myw0LjAwMzkwNjA1IDExLjcwNTMyNywzLjk4NDM3NSAxMS42NDY3MzMsMy45ODQzNzUgQzExLjQ3ODc2MzQsMy45ODQzNzUgMTEuMzM2MTg2Nyw0LjAxOTUzMDkgMTEuMjE4OTk4Niw0LjA4OTg0Mzc1IEMxMS4xMDE4MTA1LDQuMTYwMTU2NiAxMC45NTMzNzQ1LDQuMjc3MzQyOTMgMTAuNzczNjg2MSw0LjQ0MTQwNjI1IEw5LjgxMjc0ODYxLDkgTDguMDg0MjMyOTksOSBMOS4zNTU3MTczNiwzIFogTTE1LjE0ODkzNDcsOS4wNzAzMTI1IEMxNC42OTE5MDEyLDkuMDcwMzEyNSAxNC4zMjI3NjQzLDguOTI3NzM1OCAxNC4wNDE1MTI4LDguNjQyNTc4MTIgQzEzLjcxMzM4NjIsOC4zMDY2Mzg5NSAxMy41NDkzMjUzLDcuODA2NjQzOTUgMTMuNTQ5MzI1Myw3LjE0MjU3ODEyIEMxMy41NDkzMjUzLDYuODYxMzI2NzIgMTMuNTc3NjQ1NCw2LjU2NDQ1NDY5IDEzLjYzNDI4NjMsNi4yNTE5NTMxMiBDMTMuNjkwOTI3Miw1LjkzOTQ1MTU2IDEzLjc3MzkzNDIsNS42MzA4NjA5IDEzLjg4MzMwOTcsNS4zMjYxNzE4OCBDMTQuMTMzMzExLDQuNjM4NjY4NDQgMTQuNDc1MTA0NCw0LjA4Mzk4NjQ4IDE0LjkwODcwMDMsMy42NjIxMDkzOCBDMTUuNDA4NzAyOCwzLjE4MTYzODIyIDE1Ljk4NDg2OSwyLjk0MTQwNjI1IDE2LjYzNzIxNiwyLjk0MTQwNjI1IEMxNi45NjE0MzYzLDIuOTQxNDA2MjUgMTcuMjA0NTk4LDIuOTk3MDY5NzYgMTcuMzY2NzA4MiwzLjEwODM5ODQ0IEMxNy41Mjg4MTgzLDMuMjE5NzI3MTIgMTcuNjA5ODcyMiwzLjM2NzE4NjU4IDE3LjYwOTg3MjIsMy41NTA3ODEyNSBMMTcuNjA5ODcyMiwzLjYzODY3MTg4IEwxNy43Mzg3Nzg1LDMgTDE5LjQ2NzI5NDEsMyBMMTguNjA1OTY2LDcuMDc4MTI1IEMxOC41NzA4MDk1LDcuMTk1MzEzMDkgMTguNTUzMjMxNiw3LjMyNDIxODA1IDE4LjU1MzIzMTYsNy40NjQ4NDM3NSBDMTguNTUzMjMxNiw3LjgwODU5NTQ3IDE4LjcxNzI5MjUsNy45ODA0Njg3NSAxOS4wNDU0MTkxLDcuOTgwNDY4NzUgQzE5LjI2NDE3MDIsNy45ODA0Njg3NSAxOS40NjMzODY5LDcuODY5MTQxNzQgMTkuNjQzMDc1Myw3LjY0NjQ4NDM4IEMxOS43OTU0MTk5LDcuNDU4OTgzNDQgMTkuOTIwNDE4Niw3LjE5MzM2MTA5IDIwLjAxODA3NTMsNi44NDk2MDkzOCBMMjAuNTIxOTgxNiw2Ljg0OTYwOTM4IEMyMC4zMDcxMzY4LDcuNDU4OTg3NDIgMjAuMDQ3MzczNyw3Ljk0MTQwNDQ3IDE5Ljc0MjY4NDcsOC4yOTY4NzUgQzE5LjQ4NDg3MDksOC41ODk4NDUyMSAxOS4xOTM4NTgyLDguODAwNzgwNjEgMTguODY5NjM3OCw4LjkyOTY4NzUgQzE4LjYzMTM1NTQsOS4wMjM0Mzc5NyAxOC4zNzk0MDQ4LDkuMDcwMzEyNSAxOC4xMTM3Nzg1LDkuMDcwMzEyNSBDMTcuNzczOTMzLDkuMDcwMzEyNSAxNy41MDM0Mjc5LDguOTc3NTM5OTkgMTcuMzAyMjU1LDguNzkxOTkyMTkgQzE3LjEwMTA4MjIsOC42MDY0NDQzOCAxNi45NzkwMTMxLDguMzMyMDMzMDcgMTYuOTM2MDQ0MSw3Ljk2ODc1IEMxNi43MDk0ODA1LDguMjg5MDY0MSAxNi40NzEyMDE2LDguNTM5MDYxNiAxNi4yMjEyMDAzLDguNzE4NzUgQzE1LjkwMDg4NjIsOC45NTMxMjYxNyAxNS41NDM0Njc5LDkuMDcwMzEyNSAxNS4xNDg5MzQ3LDkuMDcwMzEyNSBaIE0xNS45MjgyMzE2LDcuOTEwMTU2MjUgQzE2LjAxODA3NTgsNy45MTAxNTYyNSAxNi4xMTI4MDE0LDcuODg2NzE4OTggMTYuMjEyNDExMyw3LjgzOTg0Mzc1IEMxNi4zMTIwMjEyLDcuNzkyOTY4NTIgMTYuNDA4Njk5OSw3LjcyNjU2MjkzIDE2LjUwMjQ1MDMsNy42NDA2MjUgQzE2LjcxMzM4ODksNy40Mzc0OTg5OCAxNi44NTQwMTI1LDcuMTczODI5NzUgMTYuOTI0MzI1Myw2Ljg0OTYwOTM4IEwxNy40OTg1NDQxLDQuMTQyNTc4MTIgQzE3LjQ5ODU0NDEsNC4xMDM1MTU0MyAxNy40ODk3NTUxLDQuMDU3NjE3NDUgMTcuNDcyMTc2OSw0LjAwNDg4MjgxIEMxNy40NTQ1OTg3LDMuOTUyMTQ4MTcgMTcuNDMwMTg0OSwzLjkwMjM0Mzk4IDE3LjM5ODkzNDcsMy44NTU0Njg3NSBDMTcuMzA1MTg0MywzLjc0MjE4NjkzIDE3LjE3NDMyNjIsMy42ODU1NDY4OCAxNy4wMDYzNTY2LDMuNjg1NTQ2ODggQzE2Ljg0NjE5OTUsMy42ODU1NDY4OCAxNi42OTA5Mjc3LDMuNzM4MjgwNzIgMTYuNTQwNTM2MywzLjg0Mzc1IEMxNi4zOTAxNDQ5LDMuOTQ5MjE5MjggMTYuMjQ4NTQ0OCw0LjA5NTcwMjE5IDE2LjExNTczMTYsNC4yODMyMDMxMiBDMTUuODgxMzU1NCw0LjYyMzA0ODU3IDE1LjY4Nzk5OCw1LjA2NjQwMzUyIDE1LjUzNTY1MzUsNS42MTMyODEyNSBDMTUuNDY1MzQwNiw1Ljg1NTQ2OTk2IDE1LjQxMjYwNjgsNi4wOTQ3MjUzOCAxNS4zNzc0NTAzLDYuMzMxMDU0NjkgQzE1LjM0MjI5MzksNi41NjczODM5OSAxNS4zMjQ3MTYsNi43ODEyNDkwNCAxNS4zMjQ3MTYsNi45NzI2NTYyNSBDMTUuMzI0NzE2LDcuMzcxMDk1NzQgMTUuMzk4OTM0LDcuNjQwNjI0MyAxNS41NDczNzIyLDcuNzgxMjUgQzE1LjU5ODE1MzcsNy44MzU5Mzc3NyAxNS42NTQ3OTM4LDcuODcxMDkzNjcgMTUuNzE3Mjk0MSw3Ljg4NjcxODc1IEMxNS43Nzk3OTQ0LDcuOTAyMzQzODMgMTUuODUwMTA2Miw3LjkxMDE1NjI1IDE1LjkyODIzMTYsNy45MTAxNTYyNSBaIE0yMi43OTM3MTQ2LDEyIEMyMi42MDYyMTM2LDEyIDIyLjQzMTQxMDcsMTEuOTc1NTg2MiAyMi4yNjkzMDA1LDExLjkyNjc1NzggQzIyLjEwNzE5MDMsMTEuODc3OTI5NCAyMS45Njc1NDMzLDExLjgwNDY4OCAyMS44NTAzNTUyLDExLjcwNzAzMTIgQzIxLjcyNTM1NDYsMTEuNjA5Mzc0NSAyMS42Mjc2OTkzLDExLjQ4NzMwNTQgMjEuNTU3Mzg2NSwxMS4zNDA4MjAzIEMyMS40ODcwNzM2LDExLjE5NDMzNTIgMjEuNDUxOTE3NywxMS4wMjUzOTE2IDIxLjQ1MTkxNzcsMTAuODMzOTg0NCBDMjEuNDUxOTE3NywxMC4zODA4NTcxIDIxLjY2NDgwNjIsOS45OTIxODkxMiAyMi4wOTA1ODk2LDkuNjY3OTY4NzUgQzIyLjQxMDkwMzcsOS40Mjk2ODYzMSAyMi44NTAzNTI0LDkuMjIyNjU3MTMgMjMuNDA4OTQ5LDkuMDQ2ODc1IEwyMy41NTU0MzMzLDguNDE0MDYyNSBDMjMuMTQ1Mjc1LDguODUxNTY0NjkgMjIuNjY0ODExMSw5LjA3MDMxMjUgMjIuMTE0MDI3MSw5LjA3MDMxMjUgQzIxLjY1Njk5MzUsOS4wNzAzMTI1IDIxLjI4Nzg1NjYsOC45Mjc3MzU4IDIxLjAwNjYwNTIsOC42NDI1NzgxMiBDMjAuNjc4NDc4Niw4LjMwNjYzODk1IDIwLjUxNDQxNzcsNy44MDY2NDM5NSAyMC41MTQ0MTc3LDcuMTQyNTc4MTIgQzIwLjUxNDQxNzcsNi44NjEzMjY3MiAyMC41NDI3Mzc3LDYuNTY0NDU0NjkgMjAuNTk5Mzc4Niw2LjI1MTk1MzEyIEMyMC42NTYwMTk2LDUuOTM5NDUxNTYgMjAuNzM5MDI2NSw1LjYzMDg2MDkgMjAuODQ4NDAyMSw1LjMyNjE3MTg4IEMyMS4wOTg0MDMzLDQuNjM4NjY4NDQgMjEuNDQwMTk2OCw0LjA4Mzk4NjQ4IDIxLjg3Mzc5MjcsMy42NjIxMDkzOCBDMjIuMzczNzk1MiwzLjE4MTYzODIyIDIyLjk0OTk2MTMsMi45NDE0MDYyNSAyMy42MDIzMDgzLDIuOTQxNDA2MjUgQzIzLjkyNjUyODcsMi45NDE0MDYyNSAyNC4xNjk2OTAzLDIuOTk3MDY5NzYgMjQuMzMxODAwNSwzLjEwODM5ODQ0IEMyNC40OTM5MTA3LDMuMjE5NzI3MTIgMjQuNTc0OTY0NiwzLjM2NzE4NjU4IDI0LjU3NDk2NDYsMy41NTA3ODEyNSBMMjQuNTc0OTY0NiwzLjYyMTA5Mzc1IEwyNC43MDM4NzA4LDMgTDI2LjQzMjM4NjUsMyBMMjUuMjQyOTMzMyw4LjU2NjQwNjI1IEMyNS42MjE4NDE1LDguNDQxNDA1NjMgMjUuOTI0NTcyOCw4LjI1MzkwNzUgMjYuMTUxMTM2NSw4LjAwMzkwNjI1IEMyNi4zOTcyMzE0LDcuNzM0MzczNjUgMjYuNTk4NDAxMyw3LjM0OTYxMTg3IDI2Ljc1NDY1MjEsNi44NDk2MDkzOCBMMjcuMjU4NTU4Myw2Ljg0OTYwOTM4IEMyNy4wNDM3MTM1LDcuNTYwNTUwNDMgMjYuNzIzNDA0Miw4LjEwOTM3MzA3IDI2LjI5NzYyMDgsOC40OTYwOTM3NSBDMjUuOTg1MTE5Myw4Ljc3NzM0NTE2IDI1LjU5ODQwNDQsOC45NzY1NjE5MSAyNS4xMzc0NjQ2LDkuMDkzNzUgTDI0Ljk1NTgyNCw5Ljk2MDkzNzUgQzI0LjgwMzQ3OTQsMTAuNzI2NTY2MyAyNC40OTg3OTUsMTEuMjgxMjQ4MyAyNC4wNDE3NjE1LDExLjYyNSBDMjMuNzA5NzI4NSwxMS44NzUwMDEyIDIzLjI5MzcxNzEsMTIgMjIuNzkzNzE0NiwxMiBaIE0yMi44OTMzMjQsNy45MTAxNTYyNSBDMjMuMDY1MTk5OCw3LjkxMDE1NjI1IDIzLjI0NjgzODYsNy44MzAwNzg5MyAyMy40MzgyNDU4LDcuNjY5OTIxODggQzIzLjY0NTI3ODEsNy40OTAyMzM0OCAyMy43ODM5NDg2LDcuMjU3ODEzOTMgMjMuODU0MjYxNSw2Ljk3MjY1NjI1IEwyNC40NjM2MzY1LDQuMTMwODU5MzggQzI0LjQ2MzYzNjUsNC4wOTE3OTY2OCAyNC40NTQ4NDc1LDQuMDQ2ODc1MjUgMjQuNDM3MjY5MywzLjk5NjA5Mzc1IEMyNC40MTk2OTExLDMuOTQ1MzEyMjUgMjQuMzk1Mjc3MiwzLjg5ODQzNzcxIDI0LjM2NDAyNzEsMy44NTU0Njg3NSBDMjQuMjcwMjc2NiwzLjc0MjE4NjkzIDI0LjEzOTQxODUsMy42ODU1NDY4OCAyMy45NzE0NDksMy42ODU1NDY4OCBDMjMuODExMjkxOSwzLjY4NTU0Njg4IDIzLjY1NjAyLDMuNzM4MjgwNzIgMjMuNTA1NjI4NiwzLjg0Mzc1IEMyMy4zNTUyMzczLDMuOTQ5MjE5MjggMjMuMjEzNjM3MSw0LjA5NTcwMjE5IDIzLjA4MDgyNCw0LjI4MzIwMzEyIEMyMi44NDY0NDc4LDQuNjIzMDQ4NTcgMjIuNjUzMDkwMyw1LjA2NjQwMzUyIDIyLjUwMDc0NTgsNS42MTMyODEyNSBDMjIuNDMwNDMzLDUuODU1NDY5OTYgMjIuMzc3Njk5MSw2LjA5NDcyNTM4IDIyLjM0MjU0MjcsNi4zMzEwNTQ2OSBDMjIuMzA3Mzg2Myw2LjU2NzM4Mzk5IDIyLjI4OTgwODMsNi43ODEyNDkwNCAyMi4yODk4MDgzLDYuOTcyNjU2MjUgQzIyLjI4OTgwODMsNy4zNzEwOTU3NCAyMi4zNjQwMjYzLDcuNjQwNjI0MyAyMi41MTI0NjQ2LDcuNzgxMjUgQzIyLjU2MzI0NjEsNy44MzU5Mzc3NyAyMi42MTk4ODYxLDcuODcxMDkzNjcgMjIuNjgyMzg2NSw3Ljg4NjcxODc1IEMyMi43NDQ4ODY4LDcuOTAyMzQzODMgMjIuODE1MTk4Niw3LjkxMDE1NjI1IDIyLjg5MzMyNCw3LjkxMDE1NjI1IFogTTIyLjUxODMyNCwxMS4wNjI1IEMyMi42NDMzMjQ2LDExLjA2MjUgMjIuNzcyMjI5NSwxMC45NzQ2MTAzIDIyLjkwNTA0MjcsMTAuNzk4ODI4MSBDMjMuMDM3ODU1OSwxMC42MjY5NTIzIDIzLjE0MTM3MDUsMTAuMzU5Mzc2OCAyMy4yMTU1ODk2LDkuOTk2MDkzNzUgTDIzLjI4NTkwMjEsOS42NTAzOTA2MiBDMjIuOTIyNjE5LDkuNzg3MTEwMDYgMjIuNjUxMTM3NCw5LjkyNTc4MDU1IDIyLjQ3MTQ0OSwxMC4wNjY0MDYyIEMyMi4yMzMxNjY1LDEwLjI0NjA5NDYgMjIuMTE0MDI3MSwxMC40NDcyNjQ1IDIyLjExNDAyNzEsMTAuNjY5OTIxOSBDMjIuMTE0MDI3MSwxMC43NzUzOTEyIDIyLjE0NzIyOTksMTAuODYzMjgwOSAyMi4yMTM2MzY1LDEwLjkzMzU5MzggQzIyLjI4Nzg1NTYsMTEuMDE5NTMxNyAyMi4zODk0MTcxLDExLjA2MjUgMjIuNTE4MzI0LDExLjA2MjUgWiBNMzMuNDQ4NTA4NywwLjk4NDM3NSBDMzMuMjAyNDEzNywwLjk5MjE4NzUzOSAzMi45ODY1OTU1LDEuMDM4MDg1NTIgMzIuODAxMDQ3NywxLjEyMjA3MDMxIEMzMi42MTU0OTk5LDEuMjA2MDU1MTEgMzIuNDU2MzIxOCwxLjMzNzg4OTczIDMyLjMyMzUwODcsMS41MTc1NzgxMiBDMzIuMDM0NDQ0NywxLjkxMjExMTM1IDMxLjg4OTkxNDksMi41NjI0OTU0NyAzMS44ODk5MTQ5LDMuNDY4NzUgQzMxLjg4OTkxNDksMy43MjY1NjM3OSAzMS45MTkyMTE1LDMuOTI1NzgwNTUgMzEuOTc3ODA1Niw0LjA2NjQwNjI1IEMzMS45OTM0MzA2LDQuMTE3MTg3NzUgMzIuMDEyOTYxNyw0LjE2MjEwOTE4IDMyLjAzNjM5OTMsNC4yMDExNzE4OCBDMzIuMDUyMDI0NCw0LjIyODUxNTc2IDMyLjA1OTgzNjgsNC4yNTU4NTkyNCAzMi4wNTk4MzY4LDQuMjgzMjAzMTIgQzMxLjYzMDE0NzIsNC4yODMyMDMxMiAzMS4zMTE3OTEsNC4xOTcyNjY0OCAzMS4xMDQ3NTg3LDQuMDI1MzkwNjIgQzMwLjg4MjEwMTMsMy44Mzc4ODk2OSAzMC43NzA3NzQzLDMuNTM1MTU4MzQgMzAuNzcwNzc0MywzLjExNzE4NzUgQzMwLjc3MDc3NDMsMi43MDMxMjI5MyAzMC44NDc5MjIsMi4zMTA1NDg3MyAzMS4wMDIyMTk2LDEuOTM5NDUzMTIgQzMxLjE1NjUxNzMsMS41NjgzNTc1MiAzMS4zOTE4NjY1LDEuMjQyMTg4OTEgMzEuNzA4Mjc0MywwLjk2MDkzNzUgQzMyLjA0ODExOTgsMC42NTYyNDg0NzcgMzIuNDgwNzMyNiwwLjQxOTkyMjcxNSAzMy4wMDYxMjU5LDAuMjUxOTUzMTI1IEMzMy41MzE1MTkxLDAuMDgzOTgzNTM1MiAzNC4xNTE2MzAxLDAgMzQuODY2NDc3NCwwIEMzNS4wMDMxOTY5LDAgMzUuMTM5OTE0MiwwLjAwNzgxMjQyMTg4IDM1LjI3NjYzMzcsMC4wMjM0Mzc1IEwzNS41ODEzMjEyLDAuMDUyNzM0Mzc1IEMzNS45NDQ2MDQyLDAuMDkxNzk3MDcwMyAzNi4xODA5MywwLjExNTIzNDMzNiAzNi4yOTAzMDU2LDAuMTIzMDQ2ODc1IEMzNi40NTgyNzUxLDAuMTM4NjcxOTUzIDM2LjY0NzcyNjQsMC4xNDY0ODQzNzUgMzYuODU4NjY0OSwwLjE0NjQ4NDM3NSBDMzcuMjg0NDQ4MywwLjE0NjQ4NDM3NSAzNy42NDM4MTk3LDAuMDk3NjU2NzM4MyAzNy45MzY3ODk5LDAgQzM3LjkwMTYzMzUsMC4xMDE1NjMwMDggMzcuODY0NTI0NSwwLjIzNjMyNzI4NSAzNy44MjU0NjE4LDAuNDA0Mjk2ODc1IEMzNy43Mzk1MjM5LDAuNzQwMjM2MDU1IDM3LjU3OTM2OTIsMS4wMDU4NTg0IDM3LjM0NDk5MzEsMS4yMDExNzE4OCBDMzcuMjA4MjczNiwxLjMxNDQ1MzY5IDM3LjAyNjYzNDgsMS4zOTQ1MzEwMiAzNi44MDAwNzEyLDEuNDQxNDA2MjUgQzM2LjMxNTY5MzgsMS40NDE0MDYyNSAzNS43NTUxNTI1LDEuMzY1MjM1MTQgMzUuMTE4NDMwNiwxLjIxMjg5MDYyIEwzNC42MTQ1MjQzLDMuNTk3NjU2MjUgTDM2LjM2NjQ3NzQsMy41OTc2NTYyNSBMMzYuMTczMTE4MSw0LjQ4ODI4MTI1IEwzNC40MjExNjQ5LDQuNDg4MjgxMjUgTDMzLjQ0ODUwODcsOSBMMzEuNzE5OTkzMSw5IEwzMy40NDg1MDg3LDAuOTg0Mzc1IFogTTM4LjU3OTYxNjcsOS4wNDY4NzUgQzM3Ljk4NTg2MzcsOS4wNDY4NzUgMzcuNTI2ODgzOSw4LjkwMjM0NTIgMzcuMjAyNjYzNSw4LjYxMzI4MTI1IEMzNi44MzkzODA1LDguMjkyOTY3MTUgMzYuNjU3NzQxNyw3LjgwNjY0Mzg5IDM2LjY1Nzc0MTcsNy4xNTQyOTY4OCBDMzYuNjU3NzQxNyw2LjkwODIwMTg5IDM2LjY4MzEzMiw2LjYzNTc0MzY4IDM2LjczMzkxMzUsNi4zMzY5MTQwNiBDMzYuNzg0Njk1LDYuMDM4MDg0NDQgMzYuODYyODE5Myw1LjczNjMyOTY1IDM2Ljk2ODI4ODUsNS40MzE2NDA2MiBDMzcuMjEwNDc3Myw0LjcwNTA3NDQ5IDM3LjU1NjE3NjksNC4xMjUwMDIxNyAzOC4wMDUzOTc5LDMuNjkxNDA2MjUgQzM4LjU0ODM2OTQsMy4xNjAxNTM1OSAzOS4xOTQ4NDczLDIuODk0NTMxMjUgMzkuOTQ0ODUxLDIuODk0NTMxMjUgQzQwLjk3MjE5OTksMi44OTQ1MzEyNSA0MS40ODU4NjY3LDMuNTMzMTk2NzQgNDEuNDg1ODY2Nyw0LjgxMDU0Njg4IEw0MS40ODU4NjY3LDQuODIyMjY1NjIgQzQxLjUwOTMwNDMsNC44MzAwNzgxNiA0MS41Mjg4MzUzLDQuODMzOTg0MzggNDEuNTQ0NDYwNCw0LjgzMzk4NDM4IEw0MS42MTQ3NzI5LDQuODMzOTg0MzggQzQxLjg4MDM5OTIsNC44MzM5ODQzOCA0Mi4xOTQ4NDkyLDQuNzU5NzY2MzcgNDIuNTU4MTMyMyw0LjYxMTMyODEyIEM0Mi44Nzg0NDY0LDQuNDc4NTE0OTYgNDMuMTgxMTc3Nyw0LjMxMjUwMSA0My40NjYzMzU0LDQuMTEzMjgxMjUgTDQzLjU3MTgwNDIsNC40NDE0MDYyNSBDNDMuMzM3NDI4LDQuNjg3NTAxMjMgNDMuMDM1NjczMiw0Ljg5NjQ4MzUyIDQyLjY2NjUzMDcsNS4wNjgzNTkzOCBDNDIuMjk3Mzg4Myw1LjI0MDIzNTIzIDQxLjg5MDE2NTgsNS4zNjMyODA4OCA0MS40NDQ4NTEsNS40Mzc1IEM0MS4zOTc5NzU4LDUuOTgwNDcxNDYgNDEuMjkyNTA4MSw2LjQ3NTU4MzcgNDEuMTI4NDQ0OCw2LjkyMjg1MTU2IEM0MC45NjQzODE1LDcuMzcwMTE5NDIgNDAuNzUzNDQ2MSw3Ljc1MzkwNDY1IDQwLjQ5NTYzMjMsOC4wNzQyMTg3NSBDNDAuMjQxNzI0OCw4LjM4NjcyMDMxIDM5Ljk1MDcxMjEsOC42MjY5NTIyOSAzOS42MjI1ODU0LDguNzk0OTIxODggQzM5LjI5NDQ1ODgsOC45NjI4OTE0NiAzOC45NDY4MDYsOS4wNDY4NzUgMzguNTc5NjE2Nyw5LjA0Njg3NSBaIE0zOS4wNjAwODU0LDcuOTY4NzUgQzM5LjIwMDcxMTEsNy45Njg3NSAzOS4zNDQyNjQ0LDcuOTA1Mjc0MDcgMzkuNDkwNzQ5NSw3Ljc3ODMyMDMxIEMzOS42MzcyMzQ2LDcuNjUxMzY2NTUgMzkuNzc0OTI4NSw3LjQ3NDYxMDUxIDM5LjkwMzgzNTQsNy4yNDgwNDY4OCBDNDAuMDMyNzQyMyw3LjAyMTQ4MzI0IDQwLjE0NDA2OTMsNi43NTU4NjA5IDQwLjIzNzgxOTgsNi40NTExNzE4OCBDNDAuMzMxNTcwMyw2LjE0NjQ4Mjg1IDQwLjQwMTg4MjEsNS44MjAzMTQyNCA0MC40NDg3NTczLDUuNDcyNjU2MjUgQzQwLjMzMTU2OTIsNS40NDE0MDYwOSA0MC4yNDg1NjIyLDUuMzgyODEyOTMgNDAuMTk5NzMzOSw1LjI5Njg3NSBDNDAuMTUwOTA1NSw1LjIxMDkzNzA3IDQwLjEyNjQ5MTcsNS4xMDE1NjMxNiA0MC4xMjY0OTE3LDQuOTY4NzUgQzQwLjEyNjQ5MTcsNC44MDQ2ODY2OCA0MC4xNTk2OTQ1LDQuNjY3OTY5MyA0MC4yMjYxMDEsNC41NTg1OTM3NSBDNDAuMjkyNTA3Niw0LjQ0OTIxODIgNDAuMzg0MzAzNiw0LjM2OTE0MDg4IDQwLjUwMTQ5MTcsNC4zMTgzNTkzOCBDNDAuNDg1ODY2Niw0LjA2NDQ1MTg2IDQwLjQ0NDg1MTQsMy44ODI4MTMwNSA0MC4zNzg0NDQ4LDMuNzczNDM3NSBDNDAuMzQzMjg4NCwzLjcxODc0OTczIDQwLjI5OTM0MzUsMy42Nzk2ODc2MiA0MC4yNDY2MDg5LDMuNjU2MjUgQzQwLjE5Mzg3NDIsMy42MzI4MTIzOCA0MC4xMjY0OTIxLDMuNjIxMDkzNzUgNDAuMDQ0NDYwNCwzLjYyMTA5Mzc1IEMzOS43NzQ5Mjc4LDMuNjIxMDkzNzUgMzkuNTExMjU4NiwzLjgyNDIxNjcyIDM5LjI1MzQ0NDgsNC4yMzA0Njg3NSBDMzkuMDE1MTYyMyw0LjU5NzY1ODA5IDM4LjgxOTg1MTgsNS4wNTA3Nzg1NSAzOC42Njc1MDczLDUuNTg5ODQzNzUgQzM4LjUxOTA2OSw2LjExNzE5MDE0IDM4LjQ0NDg1MSw2LjU4NTkzNTQ1IDM4LjQ0NDg1MSw2Ljk5NjA5Mzc1IEMzOC40NDQ4NTEsNy4xOTUzMTM1IDM4LjQ1NTU5MzEsNy4zNTc0MjEyNSAzOC40NzcwNzc2LDcuNDgyNDIxODggQzM4LjQ5ODU2MjEsNy42MDc0MjI1IDM4LjUzNDY5NDUsNy43MDUwNzc3NyAzOC41ODU0NzYsNy43NzUzOTA2MiBDMzguNjMyMzUxMyw3Ljg0NTcwMzQ4IDM4LjY5Mjg5NzUsNy44OTU1MDc2NyAzOC43NjcxMTY3LDcuOTI0ODA0NjkgQzM4Ljg0MTMzNTgsNy45NTQxMDE3MSAzOC45Mzg5OTExLDcuOTY4NzUgMzkuMDYwMDg1NCw3Ljk2ODc1IFogTTQ0LjQ2NjU4NCw5LjA3MDMxMjUgQzQzLjg3NjczNzMsOS4wNzAzMTI1IDQzLjQyMTY2MzgsOC45MjE4NzY0OCA0My4xMDEzNDk3LDguNjI1IEM0Mi43NjE1MDQyLDguMzA4NTkyMTcgNDIuNTkxNTg0LDcuODIyMjY4OTEgNDIuNTkxNTg0LDcuMTY2MDE1NjIgQzQyLjU5MTU4NCw2LjkxOTkyMDY0IDQyLjYxNTk5NzgsNi42NDU1MDkzMyA0Mi42NjQ4MjYyLDYuMzQyNzczNDQgQzQyLjcxMzY1NDYsNi4wNDAwMzc1NSA0Mi43ODg4NDkxLDUuNzM4MjgyNzUgNDIuODkwNDEyMiw1LjQzNzUgQzQzLjEyODY5NDYsNC43MDcwMjc2IDQzLjQ2NjU4MTgsNC4xMjUwMDIxNyA0My45MDQwODQsMy42OTE0MDYyNSBDNDQuNDQzMTQ5MiwzLjE2MDE1MzU5IDQ1LjA4MTgxNDcsMi44OTQ1MzEyNSA0NS44MjAwOTk3LDIuODk0NTMxMjUgQzQ2LjMwMDU3MDgsMi44OTQ1MzEyNSA0Ni42NTYwMzYsMy4wMDk3NjQ0NyA0Ni44ODY1MDU5LDMuMjQwMjM0MzggQzQ3LjA2NjE5NDMsMy40MjM4MjkwNCA0Ny4xNTYwMzcyLDMuNjc1Nzc5NjUgNDcuMTU2MDM3MiwzLjk5NjA5Mzc1IEM0Ny4xNTYwMzcyLDQuMjc3MzQ1MTYgNDcuMDkzNTM3OCw0LjQ5NjA5Mjk3IDQ2Ljk2ODUzNzIsNC42NTIzNDM3NSBDNDYuODUxMzQ5MSw0Ljc5Njg3NTcyIDQ2LjcwMDk1OTksNC44NjkxNDA2MiA0Ni41MTczNjUzLDQuODY5MTQwNjIgQzQ2LjM4NDU1MjEsNC44NjkxNDA2MiA0Ni4yNDM5Mjg1LDQuODIyMjY2MDkgNDYuMDk1NDkwMyw0LjcyODUxNTYyIEM0Ni4xOTMxNDcsNC40NzQ2MDgxMSA0Ni4yNDE5NzQ3LDQuMjM4MjgyMzQgNDYuMjQxOTc0Nyw0LjAxOTUzMTI1IEM0Ni4yNDE5NzQ3LDMuODY3MTg2NzQgNDYuMjEzNjU0NiwzLjc0NzA3MDc1IDQ2LjE1NzAxMzcsMy42NTkxNzk2OSBDNDYuMTAwMzcyOCwzLjU3MTI4ODYyIDQ2LjAxNzM2NTgsMy41MjczNDM3NSA0NS45MDc5OTAzLDMuNTI3MzQzNzUgQzQ1LjY3MzYxNDEsMy41MjczNDM3NSA0NS40Mjk0NzU5LDMuNzM0MzcyOTMgNDUuMTc1NTY4NCw0LjE0ODQzNzUgQzQ0Ljk0NTA5ODUsNC41MTU2MjY4NCA0NC43NTM2OTQyLDQuOTgyNDE5MDQgNDQuNjAxMzQ5Nyw1LjU0ODgyODEyIEM0NC40NDUwOTg5LDYuMTAzNTE4NCA0NC4zNjY5NzQ3LDYuNjA1NDY2NSA0NC4zNjY5NzQ3LDcuMDU0Njg3NSBDNDQuMzY2OTc0Nyw3LjQ0NTMxNDQ1IDQ0LjQ0MTE5MjcsNy43MTQ4NDMwMSA0NC41ODk2MzA5LDcuODYzMjgxMjUgQzQ0LjcxODUzNzgsNy45OTYwOTQ0MSA0NC45MzMzNzk0LDguMDYyNSA0NS4yMzQxNjIyLDguMDYyNSBDNDUuNjY3NzU4MSw4LjA2MjUgNDYuMDY0MjM4NSw3Ljk0NTMxMzY3IDQ2LjQyMzYxNTMsNy43MTA5Mzc1IEM0Ni41NzU5NTk4LDcuNjEzMjgwNzYgNDYuNzIyNDQyNyw3LjQ5NzA3MDk5IDQ2Ljg2MzA2ODQsNy4zNjIzMDQ2OSBDNDcuMDAzNjk0MSw3LjIyNzUzODM5IDQ3LjE2Nzc1NSw3LjA1NjY0MTY2IDQ3LjM1NTI1NTksNi44NDk2MDkzOCBMNDcuNzY1NDEyMiw2Ljg0OTYwOTM4IEM0Ny4zODY1MDQsNy40OTAyMzc1OCA0Ni45NTA5NjE1LDcuOTk5OTk4MTEgNDYuNDU4NzcxNSw4LjM3ODkwNjI1IEM0NS44NTMyOTk3LDguODM5ODQ2MDUgNDUuMTg5MjQzOSw5LjA3MDMxMjUgNDQuNDY2NTg0LDkuMDcwMzEyNSBaIE00OS4xOTkyNTQ1LDkuMDcwMzEyNSBDNDguODE2NDQwMSw5LjA3MDMxMjUgNDguNTEzNzA4OCw4Ljk1NzAzMjM4IDQ4LjI5MTA1MTQsOC43MzA0Njg3NSBDNDguMDQxMDUwMSw4LjQ4MDQ2NzUgNDcuOTE2MDUxNCw4LjExNTIzNjc4IDQ3LjkxNjA1MTQsNy42MzQ3NjU2MiBDNDcuOTE2MDUxNCw3LjQwODIwMTk5IDQ3Ljk0NzMwMTEsNy4xNDY0ODU4NiA0OC4wMDk4MDE0LDYuODQ5NjA5MzggTDQ4LjgyNDI1NDUsMyBMNTAuNTUyNzcwMSwzIEw0OS42OTE0NDIsNy4wNzgxMjUgQzQ5LjY2ODAwNDQsNy4xOTkyMTkzNiA0OS42NTYyODU4LDcuMzEyNDk5NDcgNDkuNjU2Mjg1OCw3LjQxNzk2ODc1IEM0OS42NTYyODU4LDcuNzQ2MDk1MzkgNDkuNzc1NDI1Miw3LjkxMDE1NjI1IDUwLjAxMzcwNzYsNy45MTAxNTYyNSBDNTAuMjMyNDU4Nyw3LjkxMDE1NjI1IDUwLjQyOTcyMjQsNy44MTA1NDc4NyA1MC42MDU1MDQ1LDcuNjExMzI4MTIgQzUwLjc0NjEzMDIsNy40NDMzNTg1NCA1MC44NjkxNzU5LDcuMTg5NDU0ODIgNTAuOTc0NjQ1MSw2Ljg0OTYwOTM4IEw1MS43ODkwOTgzLDMgTDUzLjUxNzYxMzksMyBMNTIuNjU2Mjg1OCw3LjA3ODEyNSBDNTIuNjIxMTI5Myw3LjE5NTMxMzA5IDUyLjYwMzU1MTQsNy4zMjQyMTgwNSA1Mi42MDM1NTE0LDcuNDY0ODQzNzUgQzUyLjYwMzU1MTQsNy42Mjg5MDcwNyA1Mi42NDI2MTM1LDcuNzQ0MTQwMjkgNTIuNzIwNzM4OSw3LjgxMDU0Njg4IEM1Mi43OTg4NjQzLDcuODc2OTUzNDYgNTIuOTIzODYzLDcuOTEwMTU2MjUgNTMuMDk1NzM4OSw3LjkxMDE1NjI1IEM1My4zMTgzOTYzLDcuOTEwMTU2MjUgNTMuNTE3NjEzLDcuODEwNTQ3ODcgNTMuNjkzMzk1MSw3LjYxMTMyODEyIEM1My44NDk2NDU5LDcuNDM1NTQ2IDUzLjk3NDY0NDcsNy4xODE2NDIyOSA1NC4wNjgzOTUxLDYuODQ5NjA5MzggTDU0LjU3MjMwMTQsNi44NDk2MDkzOCBDNTQuMzU3NDU2Niw3LjQ1ODk4NzQyIDU0LjA5NzY5MzUsNy45NDE0MDQ0NyA1My43OTMwMDQ1LDguMjk2ODc1IEM1My41MzUxOTA3LDguNTg5ODQ1MjEgNTMuMjQ0MTc4LDguODAwNzgwNjEgNTIuOTE5OTU3Niw4LjkyOTY4NzUgQzUyLjY4MTY3NTIsOS4wMjM0Mzc5NyA1Mi40Mjk3MjQ2LDkuMDcwMzEyNSA1Mi4xNjQwOTgzLDkuMDcwMzEyNSBDNTEuODIwMzQ2NSw5LjA3MDMxMjUgNTEuNTQ2OTExOCw4Ljk3NDYxMDMzIDUxLjM0Mzc4NTgsOC43ODMyMDMxMiBDNTEuMTQwNjU5Nyw4LjU5MTc5NTkyIDUxLjAxNzYxNDEsOC4zMDg1OTU2MiA1MC45NzQ2NDUxLDcuOTMzNTkzNzUgQzUwLjcwMTIwNjMsOC4zNzEwOTU5NCA1MC4zOTI2MTU2LDguNjgzNTkyODEgNTAuMDQ4ODYzOSw4Ljg3MTA5Mzc1IEM0OS44MDI3Njg5LDkuMDAzOTA2OTEgNDkuNTE5NTY4Niw5LjA3MDMxMjUgNDkuMTk5MjU0NSw5LjA3MDMxMjUgWiBNNTYuMDg4MTc1LDkuMDcwMzEyNSBDNTUuNzk5MTExMSw5LjA3MDMxMjUgNTUuNTQzMjU0Miw5LjAyNjM2NzYzIDU1LjMyMDU5NjksOC45Mzg0NzY1NiBDNTUuMDk3OTM5NSw4Ljg1MDU4NTUgNTQuOTEwNDQxNCw4LjcyODUxNjQxIDU0Ljc1ODA5NjksOC41NzIyNjU2MiBDNTQuNjE3NDcxMiw4LjQyNzczMzY1IDU0LjUxMjAwMzUsOC4yNjY2MDI0NSA1NC40NDE2OTA2LDguMDg4ODY3MTkgQzU0LjM3MTM3NzgsNy45MTExMzE5MiA1NC4zMzYyMjE5LDcuNzI2NTYzNDYgNTQuMzM2MjIxOSw3LjUzNTE1NjI1IEM1NC4zMzYyMjE5LDcuMjczNDM2MTkgNTQuNDAyNjI3NSw3LjAzNzExMDQzIDU0LjUzNTQ0MDYsNi44MjYxNzE4OCBDNTQuNjUyNjI4Nyw2LjYzODY3MDk0IDU0Ljc5OTExMTYsNi41MDM5MDY2NiA1NC45NzQ4OTM3LDYuNDIxODc1IEM1NS4yODczOTUzLDUuODY3MTg0NzMgNTUuNTU4ODc3LDUuMzA0NjkwMzUgNTUuNzg5MzQ2OSw0LjczNDM3NSBDNTYuMDE5ODE2OCw0LjE2NDA1OTY1IDU2LjI0MDUxNzcsMy41NDEwMTkgNTYuNDUxNDU2MiwyLjg2NTIzNDM4IEw1OC4yMjY4NDY5LDIuNjMwODU5MzggQzU4LjI3MzcyMjEsMy42NDY0ODk0NSA1OC4zMTY2OTA0LDQuNDI1Nzc4NTQgNTguMzU1NzUzMSw0Ljk2ODc1IEM1OC4zOTQ4MTU4LDUuNTI3MzQ2NTQgNTguNDI4MDE4Niw1LjkzNzQ5ODY5IDU4LjQ1NTM2MjUsNi4xOTkyMTg3NSBDNTguNDc4ODAwMSw2LjUwMzkwNzc3IDU4LjQ5MDUxODcsNi43Njk1MzAxMiA1OC40OTA1MTg3LDYuOTk2MDkzNzUgQzU4LjQ5MDUxODcsNy4xOTkyMTk3NyA1OC40NzQ4OTM5LDcuMzUxNTYxOTkgNTguNDQzNjQzNyw3LjQ1MzEyNSBDNTguODAzMDIwNSw3LjI0MjE4NjQ1IDU5LjA5MDEyNyw3LjA0MTAxNjU4IDU5LjMwNDk3MTksNi44NDk2MDkzOCBMNTkuODA4ODc4MSw2Ljg0OTYwOTM4IEM1OS41MjM3MjA0LDcuMTgxNjQyMjkgNTkuMjI5Nzc4MSw3LjQ2Njc5NTY4IDU4LjkyNzA0MjIsNy43MDUwNzgxMiBDNTguNjI0MzA2Myw3Ljk0MzM2MDU3IDU4LjMwNjkyNjcsOC4xNTgyMDIxNyA1Ny45NzQ4OTM3LDguMzQ5NjA5MzggQzU3LjczNjYxMTMsOC41OTk2MTA2MiA1Ny40Mzc3ODYyLDguNzg1MTU1NjQgNTcuMDc4NDA5NCw4LjkwNjI1IEM1Ni43NjU5MDc4LDkuMDE1NjI1NTUgNTYuNDM1ODMzLDkuMDcwMzEyNSA1Ni4wODgxNzUsOS4wNzAzMTI1IFogTTU1LjcwNzMxNTYsOC4xMjEwOTM3NSBDNTYuMDA4MDk4NCw4LjEyMTA5Mzc1IDU2LjI0ODMzMDQsOC4wMzkwNjMzMiA1Ni40MjgwMTg3LDcuODc1IEM1Ni42NDI4NjM2LDcuNjc5Njg2NTIgNTYuNzUwMjg0NCw3LjM5MDYyNjkxIDU2Ljc1MDI4NDQsNy4wMDc4MTI1IEM1Ni43NTAyODQ0LDYuODQ3NjU1NDUgNTYuNzQwNTE4OCw2LjY0NjQ4NTU5IDU2LjcyMDk4NzUsNi40MDQyOTY4OCBMNTYuNjkxNjkwNiw2LjA0Njg3NSBDNTYuNjU2NTM0Miw1LjczODI3OTcxIDU2LjYyMTM3ODMsNS4zODA4NjE0MSA1Ni41ODYyMjE5LDQuOTc0NjA5MzggTDU2LjUyMTc2ODcsNC4xNjYwMTU2MiBDNTYuNDA4NDg2OSw0LjUyOTI5ODY5IDU2LjI3MzcyMjcsNC44ODk2NDY2NSA1Ni4xMTc0NzE5LDUuMjQ3MDcwMzEgQzU1Ljk2MTIyMTEsNS42MDQ0OTM5NyA1NS43NzE3Njk5LDUuOTk5OTk3ODMgNTUuNTQ5MTEyNSw2LjQzMzU5Mzc1IEM1NS43MzI3MDcyLDYuNTM1MTU2NzYgNTUuODI0NTAzMSw2LjY3MzgyNzI1IDU1LjgyNDUwMzEsNi44NDk2MDkzOCBDNTUuODI0NTAzMSw3LjAwNTg2MDE2IDU1Ljc3NzYyODYsNy4xNDA2MjQ0MyA1NS42ODM4NzgxLDcuMjUzOTA2MjUgQzU1LjU4MjMxNTEsNy4zNzg5MDY4NyA1NS40NTM0MTAyLDcuNDQxNDA2MjUgNTUuMjk3MTU5NCw3LjQ0MTQwNjI1IEM1NS4yMTkwMzQsNy40NDE0MDYyNSA1NS4xNTM2MDQ5LDcuNDMwNjY0MTcgNTUuMTAwODcwMyw3LjQwOTE3OTY5IEM1NS4wNDgxMzU3LDcuMzg3Njk1MjEgNTUuMDA2MTQzOSw3LjM0NTcwMzQ0IDU0Ljk3NDg5MzcsNy4yODMyMDMxMiBDNTQuOTc0ODkzNyw3LjU3MjI2NzA3IDU1LjAzMTUzMzgsNy43ODQxNzkwMSA1NS4xNDQ4MTU2LDcuOTE4OTQ1MzEgQzU1LjI1ODA5NzQsOC4wNTM3MTE2MSA1NS40NDU1OTU2LDguMTIxMDkzNzUgNTUuNzA3MzE1Niw4LjEyMTA5Mzc1IFogTTY1Ljk3NTM5MSwxLjM2NTIzNDM4IEw2Ny43NTA3ODE2LDEuMTMwODU5MzggTDY2LjkwMTE3MjIsNS4xMzg2NzE4OCBDNjcuMjgwMDgwNCw1LjExMTMyNzk5IDY3LjY0MTQwNDksNC45MzU1NDg1IDY3Ljk4NTE1NjYsNC42MTEzMjgxMiBDNjguMjk3NjU4Miw0LjMxODM1NzkxIDY4LjU0NTcwMjYsMy45NDcyNjc4NyA2OC43MjkyOTcyLDMuNDk4MDQ2ODggQzY4LjkwODk4NTYsMy4wNjgzNTcyMyA2OC45OTg4Mjg1LDIuNjMwODYxNiA2OC45OTg4Mjg1LDIuMTg1NTQ2ODggQzY4Ljk5ODgyODUsMS43MTY3OTQ1MyA2OC44ODM1OTUyLDEuMzMyMDMyNzUgNjguNjUzMTI1MywxLjAzMTI1IEM2OC41MjgxMjQ3LDAuODc4OTA1NDg4IDY4LjM2OTkyMzIsMC43NjA3NDI2MDcgNjguMTc4NTE2LDAuNjc2NzU3ODEyIEM2Ny45ODcxMDg4LDAuNTkyNzczMDE4IDY3Ljc2NDQ1NDcsMC41NTA3ODEyNSA2Ny41MTA1NDcyLDAuNTUwNzgxMjUgQzY3LjAyNjE2OTgsMC41NTA3ODEyNSA2Ni41OTE2MDM4LDAuNjE3MTg2ODM2IDY2LjIwNjgzNjMsMC43NSBDNjUuODIyMDY4NywwLjg4MjgxMzE2NCA2NS40OTQ5MjM2LDEuMDc0MjE3NSA2NS4yMjUzOTEsMS4zMjQyMTg3NSBDNjQuOTU1ODU4NCwxLjU3NDIyIDY0Ljc1MTc1ODksMS44ODA4NTc1NiA2NC42MTMwODYzLDIuMjQ0MTQwNjIgQzY0LjQ3NDQxMzcsMi42MDc0MjM2OSA2NC40MDUwNzg1LDMuMDE1NjIyNzMgNjQuNDA1MDc4NSwzLjQ2ODc1IEM2NC40MDUwNzg1LDMuNzE4NzUxMjUgNjQuNDMyNDIxOSwzLjkxNzk2ODAxIDY0LjQ4NzEwOTcsNC4wNjY0MDYyNSBDNjQuNTAyNzM0OCw0LjExNzE4Nzc1IDY0LjUyMjI2NTksNC4xNjIxMDkxOCA2NC41NDU3MDM1LDQuMjAxMTcxODggQzY0LjU2MTMyODUsNC4yMjg1MTU3NiA2NC41NjkxNDEsNC4yNTU4NTkyNCA2NC41NjkxNDEsNC4yODMyMDMxMiBDNjQuMTM1NTQ1MSw0LjI4MzIwMzEyIDYzLjgxOTE0Miw0LjE5NzI2NjQ4IDYzLjYxOTkyMjIsNC4wMjUzOTA2MiBDNjMuMzk3MjY0OSwzLjgzNzg4OTY5IDYzLjI4NTkzNzgsMy41MzUxNTgzNCA2My4yODU5Mzc4LDMuMTE3MTg3NSBDNjMuMjg1OTM3OCwyLjg1NTQ2NzQ0IDYzLjM0MjU3NzksMi41OTY2ODA5NyA2My40NTU4NTk3LDIuMzQwODIwMzEgQzYzLjU2OTE0MTUsMi4wODQ5NTk2NiA2My43MjkyOTYyLDEuODM3ODkxODIgNjMuOTM2MzI4NSwxLjU5OTYwOTM4IEM2NC4xMzE2NDE5LDEuMzczMDQ1NzQgNjQuMzY1MDM4MSwxLjE2MTEzMzggNjQuNjM2NTIzOCwwLjk2Mzg2NzE4OCBDNjQuOTA4MDA5NSwwLjc2NjYwMDU3NiA2NS4yMDE5NTE5LDAuNTk1NzAzODQ4IDY1LjUxODM1OTcsMC40NTExNzE4NzUgQzY2LjE4MjQyNTUsMC4xNTAzODkxMjEgNjYuODQyNTc1MiwwIDY3LjQ5ODgyODUsMCBDNjguNDI0NjE0MywwIDY5LjE0MzM1NzIsMC4yNDAyMzE5NzMgNjkuNjU1MDc4NSwwLjcyMDcwMzEyNSBDNjkuODgxNjQyMSwwLjkzNTU0Nzk0OSA3MC4wNTA1ODU3LDEuMTgzNTkyMzQgNzAuMTYxOTE0NCwxLjQ2NDg0Mzc1IEM3MC4yNzMyNDMxLDEuNzQ2MDk1MTYgNzAuMzI4OTA2NiwyLjA0NDkyMDI5IDcwLjMyODkwNjYsMi4zNjEzMjgxMiBDNzAuMzI4OTA2NiwyLjc0ODA0ODgxIDcwLjI0OTgwNTgsMy4xMzI4MTA1OSA3MC4wOTE2MDE5LDMuNTE1NjI1IEM2OS45MzMzOTgsMy44OTg0Mzk0MSA2OS43MDU4NjEyLDQuMjQwMjMyODcgNjkuNDA4OTg0Nyw0LjU0MTAxNTYyIEM2OS4wOTY0ODMyLDQuODYxMzI5NzMgNjguNzI0NDE2Niw1LjExNDI1Njg4IDY4LjI5Mjc3MzgsNS4yOTk4MDQ2OSBDNjcuODYxMTMxLDUuNDg1MzUyNDkgNjcuMzg1NTQ5OCw1LjU3ODEyNSA2Ni44NjYwMTYsNS41NzgxMjUgTDY2LjgwMTU2MjgsNS41NzgxMjUgTDY2LjA2OTE0MSw5IEw2NC4zNDY0ODQ3LDkgTDY1Ljk3NTM5MSwxLjM2NTIzNDM4IFogTTcyLjUwMTAzMDIsOS4wNDY4NzUgQzcxLjkwNzI3NzIsOS4wNDY4NzUgNzEuNDQ4Mjk3NSw4LjkwMjM0NTIgNzEuMTI0MDc3MSw4LjYxMzI4MTI1IEM3MC43NjA3OTQsOC4yOTI5NjcxNSA3MC41NzkxNTUyLDcuODA2NjQzODkgNzAuNTc5MTU1Miw3LjE1NDI5Njg4IEM3MC41NzkxNTUyLDYuOTA4MjAxODkgNzAuNjA0NTQ1Niw2LjYzNTc0MzY4IDcwLjY1NTMyNzEsNi4zMzY5MTQwNiBDNzAuNzA2MTA4Niw2LjAzODA4NDQ0IDcwLjc4NDIzMjgsNS43MzYzMjk2NSA3MC44ODk3MDIxLDUuNDMxNjQwNjIgQzcxLjEzMTg5MDgsNC43MDUwNzQ0OSA3MS40Nzc1OTA1LDQuMTI1MDAyMTcgNzEuOTI2ODExNSwzLjY5MTQwNjI1IEM3Mi40Njk3ODI5LDMuMTYwMTUzNTkgNzMuMTE2MjYwOCwyLjg5NDUzMTI1IDczLjg2NjI2NDYsMi44OTQ1MzEyNSBDNzQuODkzNjEzNSwyLjg5NDUzMTI1IDc1LjQwNzI4MDIsMy41MzMxOTY3NCA3NS40MDcyODAyLDQuODEwNTQ2ODggTDc1LjQwNzI4MDIsNC44MjIyNjU2MiBDNzUuNDMwNzE3OCw0LjgzMDA3ODE2IDc1LjQ1MDI0ODksNC44MzM5ODQzOCA3NS40NjU4NzQsNC44MzM5ODQzOCBMNzUuNTM2MTg2NSw0LjgzMzk4NDM4IEM3NS44MDE4MTI4LDQuODMzOTg0MzggNzYuMTE2MjYyOCw0Ljc1OTc2NjM3IDc2LjQ3OTU0NTgsNC42MTEzMjgxMiBDNzYuNzk5ODU5OSw0LjQ3ODUxNDk2IDc3LjEwMjU5MTMsNC4zMTI1MDEgNzcuMzg3NzQ5LDQuMTEzMjgxMjUgTDc3LjQ5MzIxNzcsNC40NDE0MDYyNSBDNzcuMjU4ODQxNSw0LjY4NzUwMTIzIDc2Ljk1NzA4NjcsNC44OTY0ODM1MiA3Ni41ODc5NDQzLDUuMDY4MzU5MzggQzc2LjIxODgwMTgsNS4yNDAyMzUyMyA3NS44MTE1NzkzLDUuMzYzMjgwODggNzUuMzY2MjY0Niw1LjQzNzUgQzc1LjMxOTM4OTMsNS45ODA0NzE0NiA3NS4yMTM5MjE3LDYuNDc1NTgzNyA3NS4wNDk4NTgzLDYuOTIyODUxNTYgQzc0Ljg4NTc5NSw3LjM3MDExOTQyIDc0LjY3NDg1OTYsNy43NTM5MDQ2NSA3NC40MTcwNDU4LDguMDc0MjE4NzUgQzc0LjE2MzEzODMsOC4zODY3MjAzMSA3My44NzIxMjU2LDguNjI2OTUyMjkgNzMuNTQzOTk5LDguNzk0OTIxODggQzczLjIxNTg3MjMsOC45NjI4OTE0NiA3Mi44NjgyMTk1LDkuMDQ2ODc1IDcyLjUwMTAzMDIsOS4wNDY4NzUgWiBNNzIuOTgxNDk5LDcuOTY4NzUgQzczLjEyMjEyNDcsNy45Njg3NSA3My4yNjU2Nzc5LDcuOTA1Mjc0MDcgNzMuNDEyMTYzLDcuNzc4MzIwMzEgQzczLjU1ODY0ODEsNy42NTEzNjY1NSA3My42OTYzNDIxLDcuNDc0NjEwNTEgNzMuODI1MjQ5LDcuMjQ4MDQ2ODggQzczLjk1NDE1NTksNy4wMjE0ODMyNCA3NC4wNjU0ODI5LDYuNzU1ODYwOSA3NC4xNTkyMzMzLDYuNDUxMTcxODggQzc0LjI1Mjk4MzgsNi4xNDY0ODI4NSA3NC4zMjMyOTU2LDUuODIwMzE0MjQgNzQuMzcwMTcwOCw1LjQ3MjY1NjI1IEM3NC4yNTI5ODI3LDUuNDQxNDA2MDkgNzQuMTY5OTc1OCw1LjM4MjgxMjkzIDc0LjEyMTE0NzQsNS4yOTY4NzUgQzc0LjA3MjMxOSw1LjIxMDkzNzA3IDc0LjA0NzkwNTIsNS4xMDE1NjMxNiA3NC4wNDc5MDUyLDQuOTY4NzUgQzc0LjA0NzkwNTIsNC44MDQ2ODY2OCA3NC4wODExMDgsNC42Njc5NjkzIDc0LjE0NzUxNDYsNC41NTg1OTM3NSBDNzQuMjEzOTIxMiw0LjQ0OTIxODIgNzQuMzA1NzE3MSw0LjM2OTE0MDg4IDc0LjQyMjkwNTIsNC4zMTgzNTkzOCBDNzQuNDA3MjgwMSw0LjA2NDQ1MTg2IDc0LjM2NjI2NDksMy44ODI4MTMwNSA3NC4yOTk4NTgzLDMuNzczNDM3NSBDNzQuMjY0NzAxOSwzLjcxODc0OTczIDc0LjIyMDc1NywzLjY3OTY4NzYyIDc0LjE2ODAyMjQsMy42NTYyNSBDNzQuMTE1Mjg3OCwzLjYzMjgxMjM4IDc0LjA0NzkwNTYsMy42MjEwOTM3NSA3My45NjU4NzQsMy42MjEwOTM3NSBDNzMuNjk2MzQxNCwzLjYyMTA5Mzc1IDczLjQzMjY3MjEsMy44MjQyMTY3MiA3My4xNzQ4NTgzLDQuMjMwNDY4NzUgQzcyLjkzNjU3NTksNC41OTc2NTgwOSA3Mi43NDEyNjUzLDUuMDUwNzc4NTUgNzIuNTg4OTIwOCw1LjU4OTg0Mzc1IEM3Mi40NDA0ODI2LDYuMTE3MTkwMTQgNzIuMzY2MjY0Niw2LjU4NTkzNTQ1IDcyLjM2NjI2NDYsNi45OTYwOTM3NSBDNzIuMzY2MjY0Niw3LjE5NTMxMzUgNzIuMzc3MDA2Nyw3LjM1NzQyMTI1IDcyLjM5ODQ5MTEsNy40ODI0MjE4OCBDNzIuNDE5OTc1Niw3LjYwNzQyMjUgNzIuNDU2MTA4MSw3LjcwNTA3Nzc3IDcyLjUwNjg4OTYsNy43NzUzOTA2MiBDNzIuNTUzNzY0OCw3Ljg0NTcwMzQ4IDcyLjYxNDMxMTEsNy44OTU1MDc2NyA3Mi42ODg1MzAyLDcuOTI0ODA0NjkgQzcyLjc2Mjc0OTMsNy45NTQxMDE3MSA3Mi44NjA0MDQ2LDcuOTY4NzUgNzIuOTgxNDk5LDcuOTY4NzUgWiBNNzguNjc1MTA2OSwyLjM0OTYwOTM4IEM3OC41NDYyLDIuMzQ5NjA5MzggNzguNDIzMTU0NCwyLjMyNTE5NTU2IDc4LjMwNTk2NjMsMi4yNzYzNjcxOSBDNzguMTg4Nzc4MiwyLjIyNzUzODgyIDc4LjA4NzIxNjcsMi4xNjAxNTY2OCA3OC4wMDEyNzg4LDIuMDc0MjE4NzUgQzc3LjkxNTM0MDksMS45OTIxODcwOSA3Ny44NDc5NTg3LDEuODkyNTc4NzEgNzcuNzk5MTMwNCwxLjc3NTM5MDYyIEM3Ny43NTAzMDIsMS42NTgyMDI1NCA3Ny43MjU4ODgyLDEuNTM1MTU2ODkgNzcuNzI1ODg4MiwxLjQwNjI1IEM3Ny43MjU4ODgyLDEuMjc3MzQzMTEgNzcuNzUwMzAyLDEuMTU0Mjk3NDYgNzcuNzk5MTMwNCwxLjAzNzEwOTM4IEM3Ny44NDc5NTg3LDAuOTE5OTIxMjg5IDc3LjkxNTM0MDksMC44MTY0MDY2OTkgNzguMDAxMjc4OCwwLjcyNjU2MjUgQzc4LjA4NzIxNjcsMC42MzY3MTgzMDEgNzguMTg4Nzc4MiwwLjU2NzM4MzA1NyA3OC4zMDU5NjYzLDAuNTE4NTU0Njg4IEM3OC40MjMxNTQ0LDAuNDY5NzI2MzE4IDc4LjU0NjIsMC40NDUzMTI1IDc4LjY3NTEwNjksMC40NDUzMTI1IEM3OC44MDQwMTM4LDAuNDQ1MzEyNSA3OC45MjcwNTk1LDAuNDY5NzI2MzE4IDc5LjA0NDI0NzYsMC41MTg1NTQ2ODggQzc5LjE2MTQzNTcsMC41NjczODMwNTcgNzkuMjY0OTUwMiwwLjYzNjcxODMwMSA3OS4zNTQ3OTQ0LDAuNzI2NTYyNSBDNzkuNDQ0NjM4NiwwLjgxNjQwNjY5OSA3OS41MTM5NzM5LDAuOTE5OTIxMjg5IDc5LjU2MjgwMjMsMS4wMzcxMDkzOCBDNzkuNjExNjMwNiwxLjE1NDI5NzQ2IDc5LjYzNjA0NDQsMS4yNzczNDMxMSA3OS42MzYwNDQ0LDEuNDA2MjUgQzc5LjYzNjA0NDQsMS41MzUxNTY4OSA3OS42MTE2MzA2LDEuNjU4MjAyNTQgNzkuNTYyODAyMywxLjc3NTM5MDYyIEM3OS41MTM5NzM5LDEuODkyNTc4NzEgNzkuNDQ0NjM4NiwxLjk5MjE4NzA5IDc5LjM1NDc5NDQsMi4wNzQyMTg3NSBDNzkuMjY0OTUwMiwyLjE2MDE1NjY4IDc5LjE2MTQzNTcsMi4yMjc1Mzg4MiA3OS4wNDQyNDc2LDIuMjc2MzY3MTkgQzc4LjkyNzA1OTUsMi4zMjUxOTU1NiA3OC44MDQwMTM4LDIuMzQ5NjA5MzggNzguNjc1MTA2OSwyLjM0OTYwOTM4IFogTTc3Ljg2MDY1MzgsOS4wNzAzMTI1IEM3Ny40Nzc4Mzk0LDkuMDcwMzEyNSA3Ny4xNzUxMDgxLDguOTU3MDMyMzggNzYuOTUyNDUwNyw4LjczMDQ2ODc1IEM3Ni43MDI0NDk0LDguNDgwNDY3NSA3Ni41Nzc0NTA3LDguMTE1MjM2NzggNzYuNTc3NDUwNyw3LjYzNDc2NTYyIEM3Ni41Nzc0NTA3LDcuNDA4MjAxOTkgNzYuNjA4NzAwNCw3LjE0NjQ4NTg2IDc2LjY3MTIwMDcsNi44NDk2MDkzOCBMNzcuNDg1NjUzOCwzIEw3OS4yMTQxNjk0LDMgTDc4LjM1Mjg0MTMsNy4wNzgxMjUgQzc4LjMyMTU5MTIsNy4xNzk2ODgwMSA3OC4zMDU5NjYzLDcuMzA4NTkyOTcgNzguMzA1OTY2Myw3LjQ2NDg0Mzc1IEM3OC4zMDU5NjYzLDcuNjI4OTA3MDcgNzguMzQ0MDUxOSw3Ljc0NDE0MDI5IDc4LjQyMDIyNDEsNy44MTA1NDY4OCBDNzguNDk2Mzk2NCw3Ljg3Njk1MzQ2IDc4LjYyMDQxODYsNy45MTAxNTYyNSA3OC43OTIyOTQ0LDcuOTEwMTU2MjUgQzc4LjkwOTQ4MjUsNy45MTAxNTYyNSA3OS4wMjM3MzkyLDcuODgzNzg5MzMgNzkuMTM1MDY3OSw3LjgzMTA1NDY5IEM3OS4yNDYzOTY2LDcuNzc4MzIwMDUgNzkuMzQ4OTM0Niw3LjcwNTA3ODU5IDc5LjQ0MjY4NTEsNy42MTEzMjgxMiBDNzkuNjM0MDkyMyw3LjQxOTkyMDkyIDc5Ljc3ODYyMjEsNy4xNjYwMTcyMSA3OS44NzYyNzg4LDYuODQ5NjA5MzggTDgwLjM4MDE4NTEsNi44NDk2MDkzOCBDODAuMTY1MzQwMiw3LjQ1NTA4MTE1IDc5Ljg5NTgxMTcsNy45Mzc0OTgyIDc5LjU3MTU5MTMsOC4yOTY4NzUgQzc5LjI5ODE1MjUsOC41ODk4NDUyMSA3OC45ODk1NjE4LDguODAwNzgwNjEgNzguNjQ1ODEwMSw4LjkyOTY4NzUgQzc4LjM5NTgwODgsOS4wMjM0Mzc5NyA3OC4xMzQwOTI3LDkuMDcwMzEyNSA3Ny44NjA2NTM4LDkuMDcwMzEyNSBaIE04NC44NjA5MDI0LDkuMDcwMzEyNSBDODQuMzY0ODA2Miw5LjA3MDMxMjUgODMuOTk3NjIyNCw4LjkyOTY4ODkxIDgzLjc1OTMzOTksOC42NDg0Mzc1IEM4My41NTIzMDc2LDguNDA2MjQ4NzkgODMuNDQ4NzkzMSw4LjA5NTcwNTAyIDgzLjQ0ODc5MzEsNy43MTY3OTY4OCBDODMuNDQ4NzkzMSw3LjUzNzEwODQ4IDgzLjQ3MTI1MzgsNy4zMjgxMjYxOSA4My41MTYxNzU5LDcuMDg5ODQzNzUgQzgzLjU2MTA5OCw2Ljg1MTU2MTMxIDgzLjYyODQ4MDEsNi41NDQ5MjM3NSA4My43MTgzMjQzLDYuMTY5OTIxODggQzgzLjgwODE2ODUsNS43ODcxMDc0NiA4My44NzU1NTA2LDUuNDgxNDQ2NDYgODMuOTIwNDcyNyw1LjI1MjkyOTY5IEM4My45NjUzOTQ4LDUuMDI0NDEyOTIgODMuOTg3ODU1Niw0LjgyNjE3MjcxIDgzLjk4Nzg1NTYsNC42NTgyMDMxMiBDODMuOTg3ODU1Niw0LjI0ODA0NDgyIDgzLjg0MzMyNTcsNC4wNDI5Njg3NSA4My41NTQyNjE4LDQuMDQyOTY4NzUgQzgzLjM1MTEzNTgsNC4wNDI5Njg3NSA4My4xNjM2Mzc3LDQuMTUwMzg5NTUgODIuOTkxNzYxOCw0LjM2NTIzNDM4IEM4Mi44NDcyMjk4LDQuNTQ4ODI5MDQgODIuNzIyMjMxMSw0LjgxMDU0NTE4IDgyLjYxNjc2MTgsNS4xNTAzOTA2MiBMODEuODAyMzA4Nyw5IEw4MC4wNzM3OTMxLDkgTDgxLjM0NTI3NzQsMyBMODMuMDczNzkzMSwzIEw4Mi45NDQ4ODY4LDMuNjIxMDkzNzUgQzgzLjE3OTI2MywzLjM1OTM3MzY5IDgzLjQzMTIxMzYsMy4xNzU3ODE3OCA4My43MDA3NDYyLDMuMDcwMzEyNSBDODMuODk5OTY1OSwyLjk5MjE4NzExIDg0LjExNDgwNzUsMi45NTMxMjUgODQuMzQ1Mjc3NCwyLjk1MzEyNSBDODQuNzUxNTI5NSwyLjk1MzEyNSA4NS4wNzE4Mzg4LDMuMDU4NTkyNyA4NS4zMDYyMTQ5LDMuMjY5NTMxMjUgQzg1LjU1NjIxNjIsMy41MDAwMDExNSA4NS42ODEyMTQ5LDMuODQ1NzAwODIgODUuNjgxMjE0OSw0LjMwNjY0MDYyIEM4NS42ODEyMTQ5LDQuNTgzOTg1NzYgODUuNjMwNDM0Miw0Ljk0NTMxMDI3IDg1LjUyODg3MTIsNS4zOTA2MjUgQzg1LjUwMTUyNzMsNS41MTk1MzE4OSA4NS40NTY2MDU5LDUuNzEyODg5MzQgODUuMzk0MTA1Niw1Ljk3MDcwMzEyIEM4NS4yODA4MjM3LDYuNDA0Mjk5MDQgODUuMTk4NzkzMyw2Ljc0OTk5ODcxIDg1LjE0ODAxMTgsNy4wMDc4MTI1IEM4NS4xMTY3NjE2LDcuMTcxODc1ODIgODUuMTAxMTM2OCw3LjMwNDY4Njk5IDg1LjEwMTEzNjgsNy40MDYyNSBDODUuMTAxMTM2OCw3LjU2NjQwNzA1IDg1LjEzNzI2OTMsNy42OTA0MjkyNSA4NS4yMDk1MzUyLDcuNzc4MzIwMzEgQzg1LjI4MTgwMTIsNy44NjYyMTEzOCA4NS40MDU4MjM0LDcuOTEwMTU2MjUgODUuNTgxNjA1Niw3LjkxMDE1NjI1IEM4NS44MTk4ODgsNy45MTAxNTYyNSA4Ni4wMjEwNTc5LDcuODEyNTAwOTggODYuMTg1MTIxMiw3LjYxNzE4NzUgQzg2LjMxMDEyMTgsNy40Njg3NDkyNiA4Ni40NDQ4ODYxLDcuMjEyODkyNDQgODYuNTg5NDE4MSw2Ljg0OTYwOTM4IEw4Ny4wOTMzMjQzLDYuODQ5NjA5MzggQzg2Ljc5NjQ0NzgsNy43Mjg1MjAwMiA4Ni40MjE0NTE2LDguMzQzNzQ4MjQgODUuOTY4MzI0Myw4LjY5NTMxMjUgQzg1LjY0ODAxMDIsOC45NDUzMTM3NSA4NS4yNzg4NzMzLDkuMDcwMzEyNSA4NC44NjA5MDI0LDkuMDcwMzEyNSBaIE04OC40MzM0MTY3LDkuMDcwMzEyNSBDODguMDUwNjAyMyw5LjA3MDMxMjUgODcuNzQ3ODcwOSw4Ljk1NzAzMjM4IDg3LjUyNTIxMzUsOC43MzA0Njg3NSBDODcuMjc1MjEyMyw4LjQ4MDQ2NzUgODcuMTUwMjEzNSw4LjExNTIzNjc4IDg3LjE1MDIxMzUsNy42MzQ3NjU2MiBDODcuMTUwMjEzNSw3LjQwODIwMTk5IDg3LjE4MTQ2MzIsNy4xNDY0ODU4NiA4Ny4yNDM5NjM1LDYuODQ5NjA5MzggTDg3Ljk2NDY2NjcsMy40ODA0Njg3NSBMODcuNTY2MjI5MiwzLjQ4MDQ2ODc1IEw4Ny42NjU4Mzg1LDMgTDg4LjA1ODQxNjcsMyBMODguNDIxNjk3OSwxLjM0MTc5Njg4IEw5MC4xOTcwODg1LDEuMTAxNTYyNSBMODkuNzg2OTMyMywzIEw5MC41MDc2MzU0LDMgTDkwLjQxMzg4NTQsMy40ODA0Njg3NSBMODkuNjkzMTgyMywzLjQ4MDQ2ODc1IEw4OC45MjU2MDQyLDcuMDc4MTI1IEM4OC44OTQzNTQsNy4xNzk2ODgwMSA4OC44Nzg3MjkyLDcuMzA4NTkyOTcgODguODc4NzI5Miw3LjQ2NDg0Mzc1IEM4OC44Nzg3MjkyLDcuNjI4OTA3MDcgODguOTE2ODE0Nyw3Ljc0NDE0MDI5IDg4Ljk5Mjk4Nyw3LjgxMDU0Njg4IEM4OS4wNjkxNTkyLDcuODc2OTUzNDYgODkuMTkzMTgxNCw3LjkxMDE1NjI1IDg5LjM2NTA1NzMsNy45MTAxNTYyNSBDODkuNDgyMjQ1NCw3LjkxMDE1NjI1IDg5LjU5NjUwMiw3Ljg4Mzc4OTMzIDg5LjcwNzgzMDcsNy44MzEwNTQ2OSBDODkuODE5MTU5NCw3Ljc3ODMyMDA1IDg5LjkyMTY5NzQsNy43MDUwNzg1OSA5MC4wMTU0NDc5LDcuNjExMzI4MTIgQzkwLjIwNjg1NTEsNy40MTk5MjA5MiA5MC4zNTEzODQ5LDcuMTY2MDE3MjEgOTAuNDQ5MDQxNyw2Ljg0OTYwOTM4IEw5MC45NTI5NDc5LDYuODQ5NjA5MzggQzkwLjczODEwMzEsNy40NTUwODExNSA5MC40Njg1NzQ1LDcuOTM3NDk4MiA5MC4xNDQzNTQyLDguMjk2ODc1IEM4OS44NzA5MTUzLDguNTg5ODQ1MjEgODkuNTYyMzI0Niw4LjgwMDc4MDYxIDg5LjIxODU3MjksOC45Mjk2ODc1IEM4OC45Njg1NzE3LDkuMDIzNDM3OTcgODguNzA2ODU1NSw5LjA3MDMxMjUgODguNDMzNDE2Nyw5LjA3MDMxMjUgWiIgaWQ9InBhdGgtMyI+PC9wYXRoPgogICAgICAgIDxmaWx0ZXIgeD0iLTYuNiUiIHk9Ii0xNi43JSIgd2lkdGg9IjEwOC44JSIgaGVpZ2h0PSIxNjYuNyUiIGZpbHRlclVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgaWQ9ImZpbHRlci00Ij4KICAgICAgICAgICAgPGZlT2Zmc2V0IGR4PSItMiIgZHk9IjIiIGluPSJTb3VyY2VBbHBoYSIgcmVzdWx0PSJzaGFkb3dPZmZzZXRPdXRlcjEiPjwvZmVPZmZzZXQ+CiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjEiIGluPSJzaGFkb3dPZmZzZXRPdXRlcjEiIHJlc3VsdD0ic2hhZG93Qmx1ck91dGVyMSI+PC9mZUdhdXNzaWFuQmx1cj4KICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdmFsdWVzPSIwIDAgMCAwIDAgICAwIDAgMCAwIDAgICAwIDAgMCAwIDAgIDAgMCAwIDAuMjE1OTE5Mzg0IDAiIHR5cGU9Im1hdHJpeCIgaW49InNoYWRvd0JsdXJPdXRlcjEiPjwvZmVDb2xvck1hdHJpeD4KICAgICAgICA8L2ZpbHRlcj4KICAgIDwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJHcm91cC0yIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0LjAwMDAwMCwgMC4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMy4wMDAwMDAsIDcuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0iRmlsbC0yOCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzQuMDAwMDAwLCAyNS4wMDAwMDApIHNjYWxlKDEsIC0xKSByb3RhdGUoLTcxLjAwMDAwMCkgdHJhbnNsYXRlKC0zNC4wMDAwMDAsIC0yNS4wMDAwMDApICI+CiAgICAgICAgICAgICAgICAgICAgPHVzZSBmaWxsPSJibGFjayIgZmlsbC1vcGFjaXR5PSIxIiBmaWx0ZXI9InVybCgjZmlsdGVyLTIpIiB4bGluazpocmVmPSIjcGF0aC0xIj48L3VzZT4KICAgICAgICAgICAgICAgICAgICA8dXNlIGZpbGw9IiNGRkZGRkYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgeGxpbms6aHJlZj0iI3BhdGgtMSI+PC91c2U+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuOTMxMTg1NCw5LjY3ODA5NDQ2IEMyMi4yNTI1NDA4LDkuNDM1MzQ3NTkgMjIuNTY4OTQyNyw5LjE4Njk5ODg2IDIyLjg5NzcyODMsOC45NTM1ODg0IEMyMy4yMjg5OTA2LDguNzE4OTMzMDkgMjMuNTYyMTEwNCw4LjQ4NzM4OTkxIDIzLjg5MzM3MjcsOC4yNTI3MzQ2IEMyNC41NTgzNzQsNy43Nzk2ODk0MSAyNS4yNDM4MDgyLDcuMzM0NjUzNDYgMjUuOTEzMTQzOCw2Ljg2NzgzMjU1IEMyNi41NzM4MTA4LDYuNDA4NDgwNzcgMjcuMjQ5MzM4Miw1Ljk3MTUzNjM5IDI3LjkxMDYyNDQsNS41MTM0Mjk0NiBDMjguMjY3ODkyMyw1LjI2Njk0ODAyIDI4LjYyMDgyNiw1LjAxNDg2NDcyIDI4Ljk3Mzc1OTYsNC43NjI3ODE0MyBDMjkuMjkxMzk5OSw0LjUzNDk3MjgyIDI5LjYyMTQyMzgsNC4zMjUyMTQ2MiAyOS45NDIxNiw0LjEwMzAwNzg3IEMzMC4yODc2NjM0LDMuODYzMzczMTMgMzAuNjIzMjYsMy42MTE5MTIyNiAzMC45NjYyODY3LDMuMzY3OTIwNTMgQzMxLjMxODYwMTIsMy4xMTY0NTk2NyAzMS42NzUyNDk5LDIuODY3NDg4NTEgMzIuMDI2OTQ1MiwyLjYxNDE2MDM2IEMzMi42OTUwNDI0LDIuMTMyNDAxMTcgMzMuMzYyNTIwNCwxLjY0OTM5NzEzIDM0LjAzMDYxNzYsMS4xNjgyNjAzNyBDMzQuMzU4MTY0OCwwLjkzMjM2MDIwNSAzNC42OTQ5OTk3LDAuNzEwMTUzNDQ4IDM1LjAyNjg4MTIsMC40Nzk4NTUxMyBDMzUuMzQwODA2NCwwLjI2MTM4Mjk0MSAzNS42NDM1ODYzLDAuMDI2MTA1MTk5MSAzNS45NTkzNjksLTAuMTg5ODc3Mjc4IEMzNi4zNjI0NTY0LC0wLjQ2NDk5MDQwNSAzNi43NzIzNTQ4LC0wLjcyOTUyMjI1NyAzNy4xNzExMDc5LC0xLjAwOTYxNDgxIEMzNy41ODg0MzY0LC0xLjMwNDAyMzIgMzguMDExMzM3NiwtMS41OTAzNDAwMyAzOC40MzMwMDA0LC0xLjg3ODUyNDE0IEMzOC42NTU5MDU5LC0yLjAzMTY0MTQgMzguODc4MTkyMiwtMi4xODcyNDgzNyAzOS4xMDI5NTUyLC0yLjMzODQ5ODM1IEMzOS4xMDI5NTUyLC0yLjMzMzUxODkzIDM5LjEwMjMzNiwtMi4zMjg1Mzk1IDM5LjEwMTcxNjgsLTIuMzIyOTM3NjUgQzM5LjA1NDAzOTgsLTEuNzU1MjgzNDIgMzkuMDU1ODk3NCwtMS4xODM4OTQ2MiAzOS4wNDE2NTYyLC0wLjYxNDM3MzA5OCBDMzguOTY2MTE2LDAuOTgyMTU0NDM2IDM4LjgyMjQ2NTgsMi41NzY4MTQ2OSAzOC43NzQ3ODg4LDQuMTc1MjA5NSBDMzguNzUxMjU5OSw0Ljk3MDA0OTkyIDM4Ljc1MzExNzQsNS43NjgwMDI0NyAzOC44MTU2NTQ4LDYuNTYwOTc1NiBDMzguODgwMDQ5Nyw3LjM3Njk3ODU2IDM4Ljk1NDk3MDcsOC4xOTI5ODE1MiAzOS4wMjM2OTk5LDkuMDA4OTg0NDggQzM5LjE1NTU4NTYsMTAuNTczNzY4MiAzOS4yOTE4MDU2LDEyLjEzODU1MTkgMzkuNDcyNjA2NywxMy42OTc3MzM4IEMzOS41MjA5MDI5LDE0LjExMjg5MzIgMzkuNTY3OTYwNywxNC41MjgwNTI2IDM5LjYyMjQ0ODcsMTQuOTQyNTg5NSBDMzkuNjczODQwOCwxNS4zMzIyMjk0IDM5Ljc0NjI4NTEsMTUuNzE5Mzc5NSAzOS44MTA2OCwxNi4xMDY1Mjk3IEMzOS45MzUxMzU2LDE2Ljg1NDA2NTYgNDAuMDU1MjU2OCwxNy41OTk3MzQyIDQwLjIxOTk1OTIsMTguMzM5ODAxIEM0MC4zNDkzNjgyLDE4LjkxODY1ODkgNDAuNDgxODczMSwxOS40OTYyNzIgNDAuNjMxMDk1OSwyMC4wNzA3NzI5IEM0MC42NTgzMzk5LDIwLjE3NzIwODEgNDAuNjg4MDYwNywyMC4yODM2NDMzIDQwLjcxNjU0MywyMC4zOTAwNzg0IEM0MC41ODc3NTMyLDIwLjM2NjQyNjIgNDAuNDU4OTYzNCwyMC4zNDQwMTg4IDQwLjMzMDE3MzYsMjAuMzE4NDk5MiBDMzkuNzk4OTE1NiwyMC4yMTI2ODY1IDM5LjI3Mzg0OTQsMjAuMDgwNzMxOCAzOC43NDU2ODczLDE5Ljk2MTg0OCBDMzguMjM2MTAwNiwxOS44NDczMjEzIDM3LjcyNTg5NDgsMTkuNzI0MDgwNiAzNy4yMjA2NDI0LDE5LjU5MDI1ODYgQzM2LjgxMDEyNDksMTkuNDgwNzExMyAzNi4zOTcxMzA2LDE5LjQzNTI3NCAzNS45Nzg1NjM3LDE5LjQxNTk3ODggQzM1Ljg4ODc4MjMsMTkuMzY2MTg0NSAzNS43OTE1NzA3LDE5LjMzMDcwNjIgMzUuNjg5NDA1NywxOS4zMTIwMzMzIEMzNS42MzYxNTYxLDE5LjMwMjY5NjkgMzUuNTgxNjY4MSwxOS4yOTgzMzk5IDM1LjUyNzc5OTMsMTkuMjk4MzM5OSBDMzUuMzM1MjMzNywxOS4yOTgzMzk5IDM1LjE0NDUyNTcsMTkuMzU3NDcwNiAzNC45ODUzOTYsMTkuNDY5NTA3NiBDMzQuNzk0MDY4OCwxOS42MDM5NTIgMzQuNjIxMzE3MSwxOS44NDA0NzQ2IDM0LjU5NzE2OSwyMC4wODEzNTQyIEMzNC41MDY3Njg0LDIwLjk4MzI1MjIgMzQuNDc1ODA5NCwyMS44OTI2MTkzIDM0LjUxMjM0MTEsMjIuNzk4MjUxOSBDMzQuNTIwMzkwNCwyMy4wMDQ4OTggMzQuNTMzMzkzMywyMy4yMTA5MjE2IDM0LjU1MTM0OTUsMjMuNDE2OTQ1MiBDMzQuNDM2ODAwOSwyMy41OTQzMzcyIDM0LjM4MjkzMjEsMjMuODA5MDc0OCAzNC40MDI3NDU5LDI0LjAyMDcwMDMgQzM0LjQyNTAzNjQsMjQuMjYyMjAyMyAzNC41NDIwNjE4LDI0LjQ4ODE0MzYgMzQuNzI0MTAxMywyNC42NDc0ODUyIEMzNC43NjkzMDE1LDI0Ljg3NDA0ODkgMzQuODIxOTMyLDI1LjA5OTM2NzggMzQuODgzMjMxLDI1LjMyMjgxOTQgQzM0Ljk5NTMwMjksMjUuNzI3Mzk3NiAzNS4xMTE3MDkxLDI2LjEyOTQ4NiAzNS4yNjk2MDA1LDI2LjUxOTEyNTggQzM1LjQ0OTc4MjQsMjYuOTYyOTE2OSAzNS42NDY2ODIyLDI3LjQwMTEwNjIgMzUuODczMzAyNywyNy44MjM3MzQ3IEMzNi4yNjc3MjE2LDI4LjU1Njk1NDcgMzYuNzE4NDg1OSwyOS4yNDM0OTI3IDM3LjI2Mzk4NTEsMjkuODcyMTQ0OSBDMzcuNjAxNDM5MiwzMC4yNjA1Mzk5IDM3Ljk1OTMyNjMsMzAuNjQ1ODIyNyAzOC4zNzI5Mzk4LDMwLjk1NDU0NyBDMzguODI3NDE5MywzMS4yOTI1MjUzIDM5LjMwMTcxMjUsMzEuNjAwMDA0NyAzOS43ODU5MTI3LDMxLjg5Mzc5MDcgQzQwLjYwNTA5MDMsMzIuMzkzNjAwMyA0MS41MjgyOTA0LDMyLjY5MzYxMDUgNDIuNDM5MTA2OSwzMi45ODE3OTQ2IEM0Mi41MjE0NTgxLDMzLjAwOTgwMzkgNDIuNjAxOTUxNywzMy4wMzkwNTggNDIuNjgxMjA3LDMzLjA3MjY2OTEgQzQyLjY4MTgyNjIsMzMuMDcyNjY5MSA0Mi42ODE4MjYyLDMzLjA3MzI5MTUgNDIuNjgxODI2MiwzMy4wNzMyOTE1IEM0Mi43NDQ5ODI3LDMzLjQ3NDc1NzUgNDIuNzMxOTc5OSwzMy44OTQyNzM5IDQyLjc0Njg0MDMsMzQuMjk3NjA3MiBDNDIuNzYyMzE5OCwzNC43MTQwMTE0IDQyLjc4NzA4NzEsMzUuMTI5NzkzMyA0Mi44MTI0NzM1LDM1LjU0NjgxOTkgQzQyLjg2MzI0NjQsMzYuMzY2NTU3NSA0Mi45NDI1MDE3LDM3LjE4NDQyNzcgNDMuMDAxMzI0LDM4LjAwNDc4NzcgQzQzLjExNzExMSwzOS42NDE3NzMgNDMuMTQxMjU5MSw0MS4yODA2MjU2IDQzLjEzMzgyODksNDIuOTIxMzQ1NiBDNDMuMTI2Mzk4Nyw0NC41NDE1MjU0IDQzLjA5ODUzNTUsNDYuMTU5ODM3OSA0My4wNTE0Nzc3LDQ3Ljc3ODc3MjggQzQyLjc1MzAzMjEsNDcuNzY2MzI0MiA0Mi40NTIxMDk3LDQ3Ljc2NjMyNDIgNDIuMTU0OTAyNCw0Ny43NjI1ODk3IEM0MS43ODQ2MzE3LDQ3Ljc1Njk4NzggNDEuNDE0MzYxLDQ3Ljc0OTUxODcgNDEuMDQ0MDkwMiw0Ny43MzU4MjUzIEM0MC4xOTcwNDk1LDQ3LjY5MzUwMDIgMzkuMzYxNzczMiw0Ny42MDIwMDMzIDM4LjUyNjQ5NjksNDcuNDUxMzc1NyBDMzcuNzA5MTc2OSw0Ny4zMDI2MTU1IDM2Ljg5NjgxMDMsNDcuMTAwOTQ4OCAzNi4xMDI0LDQ2Ljg1NjMzNDcgQzM1LjE1ODc2NjksNDYuNTE2NDg5IDM0LjIzMjQ3MDksNDYuMTM0OTQwNyAzMy4zMDkyNzA4LDQ1Ljc0MzQzMzYgQzMyLjgzOTkzMSw0NS41NDQ4NzkxIDMyLjM3OTg3ODksNDUuMzIxNDI3NSAzMS45MzE1OTEyLDQ1LjA3OTkyNTUgQzMxLjUyNjY0NjMsNDQuODYyMDc1NyAzMS4xMzcxODA5LDQ0LjYyMjQ0MSAzMC43NTAxOTIzLDQ0LjM3NTMzNzEgQzI5Ljk0Mjc3OTIsNDMuODEzMjg0NyAyOS4xNDA5Mzg3LDQzLjIzNDQyNjggMjguNDEzNCw0Mi41Njc4MDY1IEMyOC4wMjU3OTIyLDQyLjIxMjQwMDIgMjcuNjMxMzczNCw0MS44NjAxMDYgMjcuMjU5MjQ1MSw0MS40ODc4OTQxIEMyNi45MTU1OTkyLDQxLjE0NDkzNjQgMjYuNTc5MzgzNSw0MC43OTg4NjY1IDI2LjI0Njg4MjgsNDAuNDQ1MzI3NCBDMjYuMTA1NzA5NCw0MC4yNzc4OTQzIDI1Ljk2NTE1NTEsNDAuMTA5ODM4OCAyNS44MjQ2MDA4LDM5Ljk0MjQwNTcgQzI1LjY3MjkwMTMsMzkuNzYyNTI0IDI1LjUzOTE1OCwzOS41NjM5Njk1IDI1LjM5Nzk4NDUsMzkuMzc0NzUxNCBDMjUuMTMzNTkzOSwzOS4wMjA1OSAyNC44OTc2ODU2LDM4LjY0MjE1MzggMjQuNjYwNTM5LDM4LjI2ODY5NzEgQzI0LjE3MzI0MjksMzcuNTAxODY1OSAyMy43MjE4NTkzLDM2LjcxNTczOTUgMjMuMjgyODU5NCwzNS45MjAyNzY3IEMyMi45MDc2MzUyLDM1LjE4MjY5OTYgMjIuNTQ0MTc1NSwzNC40Mzk1MjA3IDIyLjIzODkxODgsMzMuNjY4MzMyNiBDMjIuMDc3MzEyNCwzMy4yNTg3NzUgMjEuOTA5NTE0MSwzMi44NDYxMDUzIDIxLjc4MzgyMDIsMzIuNDIyODU0NCBDMjEuNjU1NjQ5NSwzMS45ODUyODc2IDIxLjUzNjc2NjYsMzEuNTQ3NzIwOCAyMS40MjM0NTYzLDMxLjEwNTc5NyBDMjEuMjU3NTE1NiwzMC4zMjE1Mzc4IDIxLjEwODkxMiwyOS41MzU0MTE0IDIxLjAzMzk5MSwyOC43MzYyMTQgQzIwLjk1NDczNTcsMjcuODgyODY1MyAyMC44NzExNDYyLDI3LjAyODI3MTkgMjAuODkyMTk4MywyNi4xNzE4MTExIEMyMC45MjYyNTMzLDI1LjU3NDkwMjcgMjAuOTc3NjQ1NCwyNC45NzkyMzkyIDIxLjA0NTEzNjIsMjQuMzg0MTk4MiBDMjEuMDUzODA0OCwyNC4zMDk1MDY4IDIxLjA1NjI4MTUsMjQuMjM3MzA1MiAyMS4wNTI1NjY0LDI0LjE2NTcyNiBDMjEuMDY2ODA3NiwyNC4wMzk5OTU2IDIxLjA4MTA0ODgsMjMuOTEzNjQyNyAyMS4wOTk2MjQyLDIzLjc4NzI4OTggQzIxLjEzODAxMzUsMjMuNTIyNzU4IDIxLjE5NzQ1NSwyMy4yNjEzMzgzIDIxLjI1NTY1ODEsMjMuMDAwNTQxIEMyMS4zNjQ2MzQxLDIyLjUwOTQ0NTQgMjEuNTAyMDkyNCwyMi4wMjUxOTY1IDIxLjY1MTMxNTMsMjEuNTQ0NjgyMiBDMjEuODM0NTkzMSwyMC45NzE0MjYxIDIyLjAyNDA2MjcsMjAuNDAxMjgyMSAyMi4yNDQ0OTE1LDE5Ljg0MDQ3NDYgQzIyLjQ5MTU0NSwxOS4yMTEyIDIyLjc1MjgzOTcsMTguNTg2OTA0OCAyMy4wMzE0NzE2LDE3Ljk3MTMyMzcgQzIzLjI4NzgxMjgsMTcuNDAzNjY5NCAyMy41NjcwNjM4LDE2Ljg1MDk1MzUgMjMuODc1NDE2NCwxNi4zMDk0NDEyIEMyNC4xNjQ1NzQzLDE1LjgwMDkxNzYgMjQuNDc0MTY1MiwxNS4zMDI5NzUzIDI0Ljc4NzQ3MTIsMTQuODA4NzY3NSBDMjQuODI0NjIyMSwxNC43NTA4ODE4IDI0Ljg2MTc3MzEsMTQuNjkyOTk2IDI0Ljg5OTU0MzEsMTQuNjM1MTEwMiBDMjQuOTcxOTg3NCwxNC40NzcwMTM1IDI1LjAwMTA4OSwxNC4zMTE0NDc3IDI0Ljk4NjIyODYsMTQuMTM5MDM1MSBDMjQuOTg1NjA5NCwxNC4xMjkwNzYzIDI0Ljk4MzEzMjcsMTQuMTE5NzM5OSAyNC45ODE4OTQzLDE0LjExMDQwMzUgQzI0Ljk4MzEzMjcsMTQuMDcxMTkwNSAyNC45ODMxMzI3LDE0LjAzMTk3NzUgMjQuOTc5NDE3NiwxMy45OTI3NjQ2IEMyNC45NTUyNjk1LDEzLjczMjU4OTcgMjQuODMwMTk0OCwxMy41MzgzOTIyIDI0LjY1MTI1MTIsMTMuMzU5NzU1NCBDMjQuNDcwNDUwMSwxMy4xODA0OTYyIDI0LjI5MzM2NDEsMTIuOTk3NTAyNCAyNC4xMDIwMzY5LDEyLjgzMDA2OTMgQzIzLjkwODIzMywxMi42NjI2MzYyIDIzLjY5MzM3NjksMTIuNTI2MzI0NSAyMy40OTAyODUzLDEyLjM3MTk2MjQgQzIzLjA4NDcyMTIsMTIuMDY1MTA1NCAyMi42OTMzOTgzLDExLjczNjQ2MzUgMjIuMjgxMDIzMiwxMS40MzgzMjA1IEMyMS44NzU0NTkxLDExLjE0NTE1NyAyMS40NjM3MDMyLDEwLjg1NzU5NTMgMjEuMDc0MjM3OCwxMC41NDIwMjQ0IEMyMS4wMTM1NTgsMTAuNDkzNDc1IDIwLjk1MTYzOTgsMTAuNDQ2NzkyOSAyMC44OTA5NiwxMC4zOTg4NjYgQzIxLjI0NTc1MTIsMTAuMTcwNDM0OSAyMS41OTQ5Njk3LDkuOTMxNDIyNjIgMjEuOTMxMTg1NCw5LjY3ODA5NDQ2IFogTTQyLjEyMzk0MzMsLTAuNjAwNjc5Njg1IEM0Mi40ODk4Nzk4LC0wLjI1NDYwOTc3OSA0Mi44NTM5NTg3LDAuMDg4OTcwNDE1OCA0My4xOTg4NDMsMC40NTU1ODA0NDIgQzQzLjIxNjE4MDEsMC42MjM2MzU5NzIgNDMuMjE0MzIyNSwwLjc5MjkzNjM1OCA0My4yMTYxODAxLDAuOTYyODU5MTcxIEM0My4yMTc0MTg0LDEuMTU1ODExODIgNDMuMjE5ODk1MiwxLjM0ODE0MjAzIDQzLjIyMTc1MjcsMS41NDA0NzIyNSBDNDMuMjI2NzA2MiwxLjkzMzIyNDI1IDQzLjIzMjg5OCwyLjMyNTM1MzgyIDQzLjI0MDMyODIsMi43MTc0ODMzOSBDNDMuMjU3MDQ2MSwzLjU1NDAyNjQ3IDQzLjI3MTkwNjQsNC4zODk5NDcxMiA0My4yNzk5NTU4LDUuMjI3MTEyNjMgQzQzLjI5NzI5MjksNi45MTQ1MTQ2NCA0My4zMTg5NjQzLDguNjA2ODk2MDcgNDMuNDQxNTYyMywxMC4yOTExODU5IEM0My41NjcyNTYyLDEyLjAwNjU5NzIgNDMuODE2MTY3MywxMy43MTM5MTY5IDQ0LjA0NDAyNjIsMTUuNDE3NTAyIEM0NC4xNDkyODcxLDE2LjE5OTg5MzkgNDQuMjQ4OTc1NCwxNi45ODIyODU3IDQ0LjM0MTIzMzUsMTcuNzY1OTIyNCBDNDQuNDQwMzAyNiwxOC42MTc0MDM4IDQ0LjUzMzc5OSwxOS40Njc2NDAzIDQ0LjU3NTI4NDIsMjAuMzI0MTAxMSBDNDQuNjAxMjg5OCwyMC44ODMwNDEzIDQ0LjYwNjg2MjUsMjEuNDQwNzM2NyA0NC42MDI1MjgyLDIyLjAwMDI5OTQgQzQ0LjU5OTQzMjMsMjIuMDczNzQ1OSA0NC41OTYzMzY0LDIyLjE0NjU2OTkgNDQuNTkyMDAyMSwyMi4yMjAwMTY0IEM0NC41ODAyMzc3LDIyLjIxMzE2OTcgNDQuNTY4NDczMiwyMi4yMDYzMjMgNDQuNTU3MzI3OSwyMi4xOTk0NzYzIEM0NC4yOTE2OTg5LDIyLjA0NTExNDIgNDQuMDI3MzA4MywyMS44ODg4ODQ4IDQzLjc2MjI5ODUsMjEuNzMzOTAwMiBDNDMuNDUzOTQ1OSwyMS41NTMzOTYxIDQzLjE0NjgzMTcsMjEuMzcxMDI0OCA0Mi44Mzk3MTc1LDIxLjE4OTI3NTggQzQyLjgzMTA0OSwyMS4xMzEzOSA0Mi44MjA1MjI5LDIxLjA3MzUwNDIgNDIuODA4MTM5MywyMS4wMTQzNzM2IEM0Mi43Mzg3OTA5LDIwLjY4NTEwOTIgNDIuNjUzOTYzLDIwLjM1ODMzNDYgNDIuNTY2MDM5MiwyMC4wMzM0MjcyIEM0Mi40MDg3NjcsMTkuNDUwMjEyMyA0Mi4yNjA3ODI1LDE4Ljg2NTc1MjUgNDIuMTI0NTYyNSwxOC4yNzgxODA2IEM0MS45Njc5MDk1LDE3LjU3NDIxNDcgNDEuODQxNTk2NCwxNi44NjY1MTQxIDQxLjcyNTgwOTQsMTYuMTUzODM0MiBDNDEuNjYzODkxMiwxNS43NzUzOTgxIDQxLjU5MzkyMzcsMTUuMzk2OTYxOSA0MS41MzY5NTksMTUuMDE2NjU4NSBDNDEuNDczMTgzMiwxNC41OTQ2NTI0IDQxLjQyNjc0NDYsMTQuMTY5NTM0MSA0MS4zNzY1OTA5LDEzLjc0NTAzODMgQzQxLjE5NTc4OTgsMTIuMTg4MzQ2MSA0MS4wNTg5NTA2LDEwLjYyNzkxOTQgNDAuOTIyMTExNCw5LjA2Njg3MDI4IEM0MC44NDQwOTQ1LDguMTcxODE4OTcgNDAuNzY0MjIsNy4yNzczOTAxIDQwLjY5MzYzMzMsNi4zODE3MTYzNyBDNDAuNjI2NzYxNyw1LjUyOTYxMjU5IDQwLjYzMzU3MjcsNC42NzUwMTkxIDQwLjY1NzcyMDgsMy44MjE2NzA0NiBDNDAuNjk4NTg2OCwyLjk1NTg3MzI3IDQwLjc2MTEyNDEsMi4wOTEzMjA5MyA0MC44MTI1MTYyLDEuMjI2MTQ2MTcgQzQwLjg0MTYxNzgsMC43NTA2MTEyNjEgNDAuODY2Mzg1LDAuMjc0NDUzOTI3IDQwLjg5NDg2NzQsLTAuMjAyMzI1ODM2IEM0MC45MjM5Njg5LC0wLjY5MDMwOTMwMSA0MC45MjQ1ODgxLC0xLjE3ODkxNTE5IDQwLjkzODgyOTMsLTEuNjY4MTQzNTEgQzQwLjk0MTMwNiwtMS43MTIzMzU4OSA0MC45NDU2NDAzLC0xLjc1NjUyODI3IDQwLjk0ODczNjIsLTEuODAwNzIwNjUgQzQxLjMyODkxMzksLTEuMzg5OTE4MjUgNDEuNzE2NTIxNywtMC45ODQ3MTc2OTIgNDIuMTIzOTQzMywtMC42MDA2Nzk2ODUgWiBNNDIuMjg3NDA3MywtMy4xMTUyODgzNSBDNDIuMjcxOTI3OCwtMy4xMzIwOTM5MSA0Mi4yNTY0NDgyLC0zLjE0ODI3NzAzIDQyLjI0MTU4NzksLTMuMTY1MDgyNTggQzQyLjI0MTU4NzksLTMuMTY1NzA1MDEgNDIuMjQwOTY4NywtMy4xNjU3MDUwMSA0Mi4yNDA5Njg3LC0zLjE2NTcwNTAxIEM0Mi4yNTY0NDgyLC0zLjE0ODg5OTQ2IDQyLjI3MTkyNzgsLTMuMTMyMDkzOTEgNDIuMjg3NDA3MywtMy4xMTUyODgzNSBaIE00NS4yNTUxNDU5LDIyLjU4NDEzNjcgQzQ1LjI1MjA0OTksMjIuNTg0MTM2NyA0NS4yNDg5NTQsMjIuNTgzNTE0MyA0NS4yNDU4NTgxLDIyLjU4MzUxNDMgQzQ1LjI0NTg1ODEsMjIuNTgzNTE0MyA0NS4yNDU4NTgxLDIyLjU4MzUxNDMgNDUuMjQ1MjM4OSwyMi41ODM1MTQzIEM0NS4yNDgzMzQ5LDIyLjU4MzUxNDMgNDUuMjUyMDQ5OSwyMi41ODM1MTQzIDQ1LjI1NTE0NTksMjIuNTg0MTM2NyBaIE00MS4wMTQzNjk1LDIzLjIzODMwODQgQzQwLjI2NTE1OTUsMjMuMTgwNDIyNiAzOS41MTQ3MTExLDIzLjEzNDM2MyAzOC43NjQyNjI3LDIzLjA5NzYzOTcgQzM4LjAwNTE0NTgsMjMuMDYwMjk0MSAzNy4yNDY2NDgsMjMuMDE3MzQ2NSAzNi40ODc1MzExLDIyLjk5NzQyODggQzM2LjQ2MTUyNTUsMjIuOTk3NDI4OCAzNi40MzYxMzksMjIuOTk3NDI4OCAzNi40MTAxMzM0LDIyLjk5NjE4NCBDMzYuMzcyMzYzMywyMi40NDg0NDc1IDM2LjM2Njc5MDcsMjEuODk3NTk4OCAzNi4zODQxMjc4LDIxLjM0ODYxNzQgQzM2LjM4NDEyNzgsMjEuMzQ3OTk0OSAzNi4zODQxMjc4LDIxLjM0Nzk5NDkgMzYuMzg0MTI3OCwyMS4zNDczNzI1IEMzNi40MjI1MTcsMjEuMzUzNTk2OCAzNi40NjA5MDYzLDIxLjM1NzMzMTQgMzYuNDk4Njc2NCwyMS4zNjQ4MDA1IEMzNi43Mjk2MzEyLDIxLjQwODk5MjkgMzYuOTU1NjMyNiwyMS40NzQ5NzAyIDM3LjE4NDExMDcsMjEuNTMwMzY2MyBDMzcuNjY5NTQ5MiwyMS42NTExMTczIDM4LjE1NTYwNywyMS43Njc1MTEzIDM4LjY0MjkwMzEsMjEuODc5NTQ4NCBDMzkuMTEyODYyMSwyMS45ODcyMjg0IDM5LjU4MDk2MzYsMjIuMTAzNjIyNCA0MC4wNTQwMTg1LDIyLjE5NTExOTMgQzQwLjQzMTcxOTQsMjIuMjY4NTY1OCA0MC44MDk0MjAzLDIyLjMzMzkyMDcgNDEuMTg3NzQwNCwyMi4zOTkyNzU2IEM0MS4yMTkzMTg3LDIyLjQyMTA2MDYgNDEuMjUxNTE2MSwyMi40NDE2MDA3IDQxLjI4NjE5MDMsMjIuNDYyMTQwOSBDNDEuODIxNzgyNiwyMi43Nzk1NzkxIDQyLjM1OTIzMjQsMjMuMDk1NzcyNSA0Mi44OTYwNjMxLDIzLjQxMTk2NTggQzQyLjI2NzU5MzUsMjMuMzYzNDE2NCA0MS42NDI4MzkxLDIzLjI4NzQ4MDIgNDEuMDE0MzY5NSwyMy4yMzgzMDg0IFogTTQ2LjkwNzc0MjIsMzUuNDA5ODg1OCBDNDYuOTg4ODU1LDM1LjQ2NzE0OTIgNDcuMDY2ODcxOSwzNS41MjQ0MTI1IDQ3LjE0MjQxMjEsMzUuNTg3Mjc3NyBDNDcuMTQ0ODg4OCwzNS41OTQ3NDY5IDQ3LjE0Nzk4NDcsMzUuNjAyMjE2IDQ3LjE1MDQ2MTQsMzUuNjA5Njg1MiBDNDcuMTk2MjgwOSwzNS45NTY5OTk5IDQ3LjE5NDQyMzQsMzYuMzA4MDQ5MiA0Ny4yMDEyMzQ0LDM2LjY1ODQ3NjEgQzQ3LjIwODY2NDUsMzcuMDU2ODMgNDcuMjE3OTUyMywzNy40NTU4MDYzIDQ3LjIzMDMzNTksMzcuODU1NDA1IEM0Ny4yNTUxMDMyLDM4LjY1NzA5MjEgNDcuMzA2NDk1MywzOS40NTc1MzQ0IDQ3LjM0NTUwMzcsNDAuMjU5MjIxNSBDNDcuNDI1OTk3NCw0MS44OTQ5NjIgNDcuNTU1NDA2NCw0My41Mjk0NTc2IDQ3LjYxNjA4NjIsNDUuMTY1ODIwNSBDNDcuNjU4ODA5Nyw0Ni4zNjA4ODIxIDQ3LjY0NTgwNjksNDcuNTU4NDMzMyA0Ny42MDA2MDY2LDQ4Ljc1Mjg3MjQgQzQ3LjU3NTIyMDIsNDkuMjg0NDI1OSA0Ny41NDQ4ODAzLDQ5LjgyMDMzNjMgNDcuNDcxMTk3Niw1MC4zNDgxNTUxIEM0Ny4zNjkwMzI2LDUwLjI4NTI4OTkgNDcuMjY2ODY3Niw1MC4yMjE4MDIzIDQ3LjE2NTk0MSw1MC4xNTcwNjk4IEM0Ni42NDM5NzA3LDQ5LjgwOTEzMjYgNDYuMTMwMDQ5OCw0OS40NTE4NTkgNDUuNjAzNzQ1Miw0OS4xMTA3Njg1IEM0NS4zNjkwNzUzLDQ4Ljk1ODI3MzYgNDUuMTMzMTY3LDQ4LjgwODI2ODUgNDQuODk3ODc3OSw0OC42NTc2NDEgQzQ0LjkwNjU0NjUsNDguNTg4NTUxNSA0NC45MTAyNjE2LDQ4LjUxNzU5NDcgNDQuOTA0MDY5OCw0OC40NDUzOTMxIEM0NC45NjIyNzI4LDQ2LjcxNjkxMDggNDUuMDAxMjgxMyw0NC45ODkwNTEgNDUuMDA5MzMwNyw0My4yNTk5NDYzIEM0NS4wMTMwNDU4LDQyLjQzMjExNzIgNDUuMDI1NDI5NCw0MS42MDM2NjU3IDQ1LjAwODA5MjMsNDAuNzc1MjE0MiBDNDQuOTkwMTM2LDM5LjkzNDMxNDEgNDQuOTU0ODQyNywzOS4wOTI3OTE2IDQ0LjkwNjU0NjUsMzguMjUzMTM2NCBDNDQuODQzMzg5OSwzNy4xNzYzMzYxIDQ0LjczMTMxOCwzNi4xMDMyNzA1IDQ0LjY3MDAxOSwzNS4wMjU4NDc4IEM0NC42NTUxNTg3LDM0Ljc3Mzc2NDUgNDQuNjQzMzk0MiwzNC41MjIzMDM2IDQ0LjYzMjg2ODEsMzQuMjcwMjIwMyBDNDQuNzkxOTk3OCwzNC4zNDc0MDE0IDQ0Ljk1MzYwNDMsMzQuNDE5NjAzIDQ1LjExODMwNjcsMzQuNDg2ODI1MiBDNDUuNzQ0Mjk5NSwzNC43NDEzOTgyIDQ2LjMzNTYxODIsMzUuMDUzODU3IDQ2LjkwNzc0MjIsMzUuNDA5ODg1OCBaIE00Ny4zMzA2NDM0LDUyLjkwMzg0NCBDNDcuMTg2Mzc0LDUyLjk3MTY4ODcgNDcuMDM5NjI3OSw1My4wMzIwNjQyIDQ2Ljg4NzMwOTIsNTMuMDc5OTkxMSBDNDYuNjQ4OTI0Miw1My4xMTU0Njk1IDQ2LjQxMjM5NjcsNTMuMTEyMzU3NCA0Ni4xNjc4MTk5LDUzLjEwODAwMDQgQzQ1LjkyNDQ4MTQsNTMuMTAzNjQzNCA0NS42ODExNDMsNTMuMDk2Nzk2NyA0NS40MzcxODUzLDUzLjA4NzQ2MDMgQzQ0LjkyMzI2NDQsNTMuMDYzMTg1NiA0NC40MDkzNDM1LDUzLjAyNjQ2MjMgNDMuODk3ODk5Myw1Mi45NjY3MDkyIEM0My4yOTkxNTA0LDUyLjg5NjM3NDkgNDIuNzA3ODMxOCw1Mi43OTE4MDcgNDIuMTE2NTEzMiw1Mi42NzQ3OTA2IEM0MS4wNzAwOTU5LDUyLjQ2OTM4OTQgNDAuMDQyMjU0LDUyLjE3NjIyNTggMzkuMDI0OTM4Myw1MS44NTY5MjAzIEMzOC4zNTYyMjE5LDUxLjYzNTk1ODQgMzcuNjk3NDEyNCw1MS4zOTI1ODkxIDM3LjA0NjY1MjMsNTEuMTIxODMzIEMzNi4zNTA2OTE5LDUwLjgzMjQwNCAzNS42Njg5NzI3LDUwLjUwOTk4NjQgMzQuOTg0MTU3Niw1MC4xOTgxNSBDMzMuNjk1NjQwMiw0OS42MTE4MjI5IDMyLjQzMTI3MDksNDguOTg0NDE1NiAzMS4yMzYyNSw0OC4yMjM4MDg3IEMzMC40ODMzMjQ5LDQ3LjcxNDY2MjcgMjkuNzM2NTkxNiw0Ny4xODkzMzM2IDI5LjAxNjQ4MzEsNDYuNjM1MzcyOCBDMjguNjU3OTc2OSw0Ni4zNjAyNTk2IDI4LjMxMzcxMTgsNDYuMDcyMDc1NSAyNy45Njc1ODkxLDQ1Ljc4MjY0NjYgQzI3LjY0ODcxMDUsNDUuNTE2ODY5OSAyNy4zNDUzMTE0LDQ1LjI0MzAwMTYgMjcuMDYwNDg3Nyw0NC45NDExMjQxIEMyNi40NzQ3NDE3LDQ0LjI4MDEwNTYgMjUuOTM3MjkxOSw0My41NzgwMDcgMjUuNDg0NjcsNDIuODE2Nzc3NyBDMjUuMjU1NTcyNyw0Mi40MzE0OTQ4IDI1LjAzMjY2NzIsNDIuMDQyNDc3NCAyNC44MTQ3MTUyLDQxLjY1MDk3MDIgQzI1LjI1MzcxNTIsNDIuMTQ1ODAwNCAyNS43MTEyOTA1LDQyLjYyMzgyNSAyNi4xOTE3NzU2LDQzLjA4MDA2NDcgQzI2LjgyMjcyMTksNDMuNjc4ODQwMyAyNy40NTkyNDA4LDQ0LjI2NzY1NzEgMjguMTQyMTk4NCw0NC44MDY2Nzk2IEMyOC40NTU1MDQ0LDQ1LjA1MzE2MTEgMjguNzczMTQ0Nyw0NS4yOTQ2NjMxIDI5LjEwMDA3MjcsNDUuNTIxODQ5MyBDMjkuNTA3NDk0Myw0NS44MDU2NzY0IDI5LjkxNjc3MzUsNDYuMDkzODYwNSAzMC4zNDQ2MjgyLDQ2LjM0NjU2NjIgQzMxLjA2NjU5NDIsNDYuNzczNTUxOCAzMS44MDQwMzk3LDQ3LjE2MDcwMTkgMzIuNTc2Nzc4Nyw0Ny40ODg3MjE0IEMzMy4zNjI1MjA0LDQ3LjgyMjM0MjggMzQuMTQ5NTAwNSw0OC4xNTg0NTM4IDM0Ljk1MjU3OTQsNDguNDQ2NjM3OSBDMzUuMzMwODk5NSw0OC41ODIzMjcyIDM1LjcxMTY5NjMsNDguNzE2MTQ5MiAzNi4wOTk5MjMzLDQ4LjgyMjU4NDQgQzM2LjQ0OTc2MSw0OC45MTc4MTU4IDM2LjgwMjA3NTUsNDkuMDA4MDY3OSAzNy4xNTU2MjgzLDQ5LjA5NDU4NTQgQzM3LjgxNjI5NTMsNDkuMjU1MTcxOCAzOC40ODc0ODg0LDQ5LjM4NzEyNjUgMzkuMTYxNzc3NSw0OS40NzIzOTkxIEM0MC40MjQ5MDg0LDQ5LjYzMjM2MzEgNDEuNjk1NDY5NSw0OS42MjYxMzg4IDQyLjk2NTQxMTQsNDkuNjYyMjM5NiBDNDIuOTg0NjA2MSw0OS42NzI4MjA5IDQzLjAwMzE4MTUsNDkuNjg0NjQ3IDQzLjAyMzYxNDUsNDkuNjk1MjI4MyBDNDMuNTg5NTQ2Nyw1MC4wNTMxMjQzIDQ0LjE1NjcxNzMsNTAuNDExMDIwMyA0NC43MTg5MzQ0LDUwLjc3Mzg5NTggQzQ1LjQyMTA4NjYsNTEuMjM1NzM3MyA0Ni4xMDQwNDQxLDUxLjcyNDM0MzIgNDYuODIzNTMzNCw1Mi4xNjAwNDI3IEM0Ni45ODAxODY0LDUyLjI1NDY1MTcgNDcuMTM3NDU4Niw1Mi4zNDkyNjA4IDQ3LjI5NjU4ODQsNTIuNDQyMDAyNSBDNDcuNDQwMjM4NSw1Mi41MjU0MDc5IDQ3LjU5NDQxNDgsNTIuNTgwMTgxNSA0Ny43NTQ3ODI5LDUyLjYyMDYzOTMgQzQ3LjczNjgyNjYsNTIuNjMzMDg3OSA0Ny43MTgyNTEyLDUyLjY0NDI5MTYgNDcuNzAwMjk0OSw1Mi42NTY3NDAyIEM0Ny41Nzc2OTY5LDUyLjc0MjAxMjggNDcuNDU3NTc1Niw1Mi44MjcyODU0IDQ3LjMzMDY0MzQsNTIuOTAzODQ0IFogTTIwLjkyNDM5NTgsMTIuNzg1ODc2OSBDMjAuOTcwMjE1MiwxMi44MTg4NjU2IDIxLjAxNjAzNDcsMTIuODUxMjMxOCAyMS4wNjEyMzUsMTIuODg0MjIwNSBDMjEuNDYzNzAzMiwxMy4xNzQ4OTQzIDIxLjg0Njk3NjcsMTMuNDk0ODIyMyAyMi4yNDI2MzM5LDEzLjc5NjA3NzQgQzIyLjQzOTUzMzcsMTMuOTQ2NzA0OSAyMi42NTI1MzIzLDE0LjA3NjE2OTkgMjIuODM5NTI1MiwxNC4yMzkyNDYgQzIyLjg1OTk1ODIsMTQuMjU2Njc0IDIyLjg3ODUzMzYsMTQuMjc1OTY5MyAyMi44OTgzNDc1LDE0LjI5NDAxOTcgQzIyLjcxODc4NDcsMTQuNTgwOTU4OSAyMi41NDI5MzcxLDE0Ljg3MDM4NzkgMjIuMzcxNDIzNywxNS4xNjIzMDY2IEMyMi4zNDE3MDMsMTUuMTE2ODY5NCAyMi4zMTMyMjA2LDE1LjA3MDE4NzMgMjIuMjgzNDk5OSwxNS4wMjQ3NSBDMjEuOTk0OTYxMiwxNC41OTI3ODUxIDIxLjcyNjIzNjMsMTQuMTQ5NjE2NCAyMS40NTkzNjg5LDEzLjcwMzk1OCBDMjEuMjc3MzI5NCwxMy40MDAyMTMyIDIxLjA5OTYyNDIsMTMuMDkzMzU2MyAyMC45MjQzOTU4LDEyLjc4NTg3NjkgWiBNMTkuOTAyNzQ1OCwxNC43NzIwNDQzIEMyMC4xNjQ2NTk3LDE1LjIxMDIzMzUgMjAuNDI4NDMxMSwxNS42NDQ2ODgyIDIwLjcxMDc3ODEsMTYuMDcwNDI4OSBDMjAuODYwMDAwOSwxNi4yOTM4ODA1IDIxLjAwNzk4NTMsMTYuNTE3MzMyMSAyMS4xNDc5MjA0LDE2Ljc0NzYzMDQgQzIxLjIxNzg4OCwxNi44NjI3Nzk2IDIxLjI4NjYxNzIsMTYuOTc5Nzk2IDIxLjM1NTk2NTUsMTcuMDk1NTY3NiBDMjEuMjc5ODA2MiwxNy4yNjIzNzgzIDIxLjIwNTUwNDMsMTcuNDI5ODExNCAyMS4xMzI0NDA5LDE3LjU5Nzg2NjkgQzIwLjgyMTYxMTYsMTguMzA0OTQ1IDIwLjUyMzc4NTEsMTkuMDIzMjI2OCAyMC4yNjkzMDE0LDE5Ljc1MzMzNDcgQzE5Ljk4NzU3MzcsMjAuNTYzNzM1OCAxOS43MjAwODcxLDIxLjM4NDcxODIgMTkuNTA4OTQ2MSwyMi4yMTY5MDQzIEMxOS40MjUzNTY2LDIyLjU0Njc5MTEgMTkuMzQ5ODE2NCwyMi44Nzg1NDUxIDE5LjI4MzU2MzksMjMuMjEyMTY2NSBDMTkuMjA4NjQyOSwyMy41OTM3MTQ4IDE5LjE3NTgyNjMsMjMuOTgzMzU0NiAxOS4xNDExNTIxLDI0LjM3MTEyNzIgQzE5LjEzNTU3OTUsMjQuNDM2NDgyMSAxOS4xMzMxMDI4LDI0LjUwMDU5MjIgMTkuMTM0OTYwMywyNC41NjI4MzUgQzE5LjEwNzA5NzEsMjQuODM3OTQ4MSAxOS4wODEwOTE1LDI1LjExNDMwNjEgMTkuMDYzMTM1MiwyNS4zOTA2NjQxIEMxOS4wMzA5Mzc3LDI1Ljg3MTE3ODQgMTguOTk1NjQ0NCwyNi4zNTQ4MDQ5IDE5LjAwODY0NzIsMjYuODM1OTQxNiBDMTkuMDMyMTc2MSwyNy42NTQ0MzQzIDE5LjA5NzE5MDIsMjguNDc4NTI4OCAxOS4yMDA1OTM2LDI5LjI5MTQxOTcgQzE5LjI0MTQ1OTYsMjkuNjE1MDgyMiAxOS4yOTIyMzI1LDI5LjkzNjg3NzQgMTkuMzQ3MzM5NywzMC4yNTc0Mjc3IEMxOS4yODEwODcyLDMwLjQwMjQ1MzQgMTkuMjUwMTI4MSwzMC41NjU1Mjk1IDE5LjI2NjIyNjgsMzAuNzMyOTYyNiBDMTkuMjk3MTg1OSwzMS4wNjQwOTQzIDE5LjMyMTMzNCwzMS4zOTgzMzgxIDE5LjM2NTkxNTEsMzEuNzI3NjAyNCBDMTkuNDEzNTkyMSwzMi4wNzkyNzQyIDE5LjQ5NDA4NTgsMzIuNDIzNDc2OCAxOS41Nzg5MTM3LDMyLjc2ODMwMTggQzE5LjY0OTUwMDQsMzMuMTEyNTA0NSAxOS42OTkwMzQ5LDMzLjQ2MTA2NDEgMTkuNzcwMjQwOSwzMy44MDQ2NDQzIEMxOS44NjM3MzczLDM0LjI1MDMwMjYgMTkuOTY4Mzc5LDM0LjY5MDM1OTIgMjAuMTA3MDc1OCwzNS4xMjQxOTE0IEMyMC4zNDY2OTkxLDM1Ljg3Mjk3MjEgMjAuNTk0OTkxMSwzNi42MTk4ODU2IDIwLjg1MDA5NCwzNy4zNjMwNjQ1IEMyMS4wODk3MTczLDM4LjA1OTU2MTMgMjEuMzc1Nzc5MywzOC43MzU1MTggMjEuNjUzNzkyLDM5LjQxNzA3NjUgQzIxLjc5MTg2OTUsMzkuNzU1MDU0OSAyMS45MjYyMzIsNDAuMDk0Mjc4MSAyMi4wNzYwNzQsNDAuNDI3Mjc3IEMyMi4yNTc0OTQzLDQwLjgyOTM2NTQgMjIuNDUzNzc0OSw0MS4yMjA4NzI2IDIyLjY1ODcyNDEsNDEuNjEwNTEyNCBDMjMuMDAyOTg5Miw0Mi4yNjM0MzkzIDIzLjM1ODM5OTYsNDIuOTA4ODk3IDIzLjcyOTI4OTUsNDMuNTQ2ODg1NiBDMjMuOTI4NjY2LDQzLjg5MDQ2NTggMjQuMTM1NDcyOCw0NC4yMjk2ODkgMjQuMzU2NTIwNyw0NC41NjA4MjA2IEMyNC41NjgyODA5LDQ0Ljg3NzYzNjQgMjQuODA0ODA4Myw0NS4xNzcwMjQyIDI1LjA0NTY3MDEsNDUuNDcyNjc3NSBDMjUuMzQ3MjExNiw0NS44NDQyNjY5IDI1LjY2NDIzMjcsNDYuMjA0MDMwMiAyNS45OTQyNTY2LDQ2LjU1MDEwMDEgQzI2LjIzNTczNzUsNDYuODAzNDI4MyAyNi41MDQ0NjI1LDQ3LjAyNTYzNTEgMjYuNzcyNTY4Miw0Ny4yNDkwODY3IEMyNy4wNjQyMDI4LDQ3LjQ5MzA3ODQgMjcuMzUyNzQxNiw0Ny43Mzk1NTk4IDI3LjY1NDI4MzEsNDcuOTcxNzI1NCBDMjcuOTg1NTQ1NCw0OC4yMjY5MjA5IDI4LjMyMzYxODcsNDguNDczNDAyMyAyOC42NjM1NDk1LDQ4LjcxODAxNjUgQzI5LjM2NTcwMTcsNDkuMjIxNTYwNiAzMC4wNjg0NzMxLDQ5LjcyMDc0NzggMzAuODAzNDQxOSw1MC4xNzQ0OTc3IEMzMS40OTM4Mjk3LDUwLjYwMDg2MDggMzIuMjEyNjk5OCw1MC45NzgwNTIxIDMyLjk0MjA5Niw1MS4zMzA5Njg4IEMzMy43MTM1OTY1LDUxLjcwNDQyNTUgMzQuNDk1MDA0LDUyLjA1NjcxOTcgMzUuMjc1MTczMSw1Mi40MTAyNTg3IEMzNi4wMTUwOTU0LDUyLjc0NjM2OTggMzYuNzYzMDY3LDUzLjA2OTQwOTkgMzcuNTMwMjMzMyw1My4zMzc2NzYzIEMzOC4zNTk5MzcsNTMuNjI4MzUwMSAzOS4xOTk1NDc1LDUzLjg4OTE0NzQgNDAuMDQ3MjA3NSw1NC4xMjE5MzU0IEM0MC44NDU5NTIsNTQuMzQxNjUyNSA0MS42NDk2NTAxLDU0LjUxOTY2NjggNDIuNDYzODc0Miw1NC42NzA5MTY4IEM0My4yMzA0MjEzLDU0LjgxNDY5NzYgNDQuMDA4MTEzNiw1NC44ODg3NjY2IDQ0Ljc4NTE4NjgsNTQuOTM3OTM4NCBDNDUuMjQ5NTczMiw1NC45NjcxOTI1IDQ1LjcxNTgxNzEsNTQuOTgwODg1OSA0Ni4xODAyMDM1LDU0Ljk5MjA4OTYgQzQ2LjM2ODQzNDgsNTQuOTk3MDY5IDQ2LjU1NjY2NjEsNTUuMDAxNDI2IDQ2Ljc0NDg5NzMsNTQuOTk5NTU4NyBDNDYuOTk2OTA0Myw1NC45OTcwNjkgNDcuMjQ3NjczLDU0Ljk0MDQyODEgNDcuNDg5NzczMSw1NC44NzM4MjgzIEM0Ny44ODE3MTUyLDU0Ljc2Njc3MDcgNDguMjY0OTg4Nyw1NC41NjU3MjY1IDQ4LjU5OTM0NjksNTQuMzM4NTQwMyBDNDguNzUwNDI3Myw1NC4yMzUyMTczIDQ4Ljg5OTAzMDksNTQuMTMwNjQ5NCA0OS4wNTM4MjY0LDU0LjAzMTY4MzQgQzQ5LjE5NTYxOSw1My45NDA4MDg5IDQ5LjMyMzc4OTcsNTMuODMxODg0IDQ5LjQ0MzI5MTgsNTMuNzEzMDAwMyBDNDkuNTAyNzMzMiw1My42NTQ0OTIxIDQ5LjU0OTE3MTksNTMuNTk3ODUxMSA0OS41OTQ5OTEzLDUzLjUyNzUxNjggQzQ5LjY2MDYyNDYsNTMuNDQwMzc2OSA0OS43MTc1ODkzLDUzLjM0NzYzNTEgNDkuNzY1MjY2Myw1My4yNDkyOTE1IEM0OS44MDkyMjgyLDUzLjE0NTk2ODUgNDkuODQ1MTQwOCw1My4wMzg5MTA5IDQ5Ljg3MzAwNCw1Mi45MjkzNjM2IEM0OS45OTU2MDIsNTIuNTI0MTYzIDUwLjAwMzAzMjEsNTIuMDgwMzcxOSA0OS45OTkzMTcsNTEuNjYwODU1NSBDNDkuOTk3NDU5NSw1MS40Nzg0ODQyIDQ5Ljk4MTM2MDgsNTEuMjk2NzM1MiA0OS45NzE0NTM5LDUxLjExNDk4NjMgQzQ5Ljk2NTg4MTIsNTEuMDIyODY3IDQ5Ljk2MjE2NjEsNTAuOTMxOTkyNSA0OS45NTY1OTM1LDUwLjg0MDQ5NTYgQzQ5Ljk0MTczMzEsNTAuNjIwNzc4NSA0OS44ODc4NjQzLDUwLjQwODUzMDYgNDkuODM0NjE0Nyw1MC4xOTU2NjAzIEM0OS44MjY1NjUzLDUwLjE2NDUzODkgNDkuODE1NDIsNTAuMTM0NjYyNCA0OS44MDE3OTgsNTAuMTA0Nzg1OCBDNDkuNzgxMzY1LDQ5LjI2MjAxODUgNDkuNzcwMjE5OCw0OC40MTg2Mjg3IDQ5Ljc2ODk4MTQsNDcuNTc0NjE2NSBDNDkuNzY3MTIzOSw0NS45NzY4NDQxIDQ5LjgwMzY1NTYsNDQuMzc0NzE0NyA0OS43MTc1ODkzLDQyLjc3ODE4NzEgQzQ5LjY3OTIsNDIuMDgyOTM1MiA0OS42NDIwNDkxLDQxLjM4NzY4MzIgNDkuNjA2NzU1OCw0MC42OTE4MDg5IEM0OS41OTAwMzc5LDQwLjM0ODg1MTEgNDkuNTgwMTMwOSw0MC4wMDUyNzA5IDQ5LjU1NDc0NDUsMzkuNjYzNTU4IEM0OS41Mjg3Mzg5LDM5LjMxNjg2NTcgNDkuNDkzNDQ1NSwzOC45NzE0MTgyIDQ5LjQ2MDAwOTcsMzguNjI0NzI1OCBDNDkuMzk3NDcyMywzNy45NzU1MzM2IDQ5LjM1MzUxMDQsMzcuMzI1MDk2NCA0OS4yODY2Mzg4LDM2LjY3NzE0OSBDNDkuMjE3OTA5NiwzNi4wMDM2ODIgNDkuMTM2MTc3NiwzNS4zMDkwNTI1IDQ4Ljk0Nzk0NjMsMzQuNjU3OTkyOSBDNDguODgxNjkzOCwzNC40MzAxODQzIDQ4LjY3NjEyNTUsMzQuMjI5NzYyNSA0OC40Njc0NjEyLDM0LjEzMDc5NjUgQzQ4LjQwNDMwNDYsMzQuMTAwOTIgNDguMzM3NDMzLDM0LjA3Nzg5MDEgNDguMjY5MzIzLDM0LjA2Mjk1MTggQzQ4LjIyNzIxODYsMzQuMDMxODMwNSA0OC4xODUxMTQzLDM0LjAwMjU3NjMgNDguMTQyMzkwNywzMy45NzMzMjIyIEM0Ny45ODYzNTY5LDMzLjg2NzUwOTUgNDcuODI3ODQ2NCwzMy43NjM1NjQgNDcuNjY3NDc4MywzMy42NjU4NDI5IEM0Ny4yNjYyNDg0LDMzLjQxODczOSA0Ni44NTUxMTE3LDMzLjE4NDcwNjEgNDYuNDI3MjU3MSwzMi45ODczOTY1IEM0Ni4wNjY4OTMyLDMyLjgyMDU4NTggNDUuNjkyMjg4MiwzMi42ODkyNTM1IDQ1LjMzNjg3NzksMzIuNTA5MzcxOCBDNDQuOTkzMjMxOSwzMi4zMzUwOTIgNDQuNjYzMjA4LDMyLjEyNTk1NjMgNDQuMzMxMzI2NiwzMS45Mjc0MDE4IEM0NC4yNTUxNjcyLDMxLjg3Mzg3MyA0NC4xNzU5MTE5LDMxLjgzMTU0NzkgNDQuMDk1NDE4MywzMS43OTczMTQzIEM0My44OTM1NjUsMzEuNTc1MTA3NiA0My42NDUyNzMxLDMxLjQwNzY3NDUgNDMuMzU0MjU3NiwzMS4zMDM3MjkgQzQzLjE4ODMxNjksMzEuMjQzOTc1OSA0My4wMTg2NjExLDMxLjE5MjkzNjkgNDIuODUwMjQzNiwzMS4xNDEyNzUzIEM0Mi4zODc3MTQ4LDMwLjk5MDAyNTQgNDEuOTIwMjMyNSwzMC44MzU2NjMyIDQxLjQ3NzUxNzUsMzAuNjM1MjQxNSBDNDEuMDAwNzQ3NSwzMC40MjA1MDM4IDQwLjU1NDkzNjYsMzAuMTYxNTczOCA0MC4xMTUzMTc1LDI5Ljg4MjEwMzcgQzM5Ljg2ODI2MzksMjkuNzEwOTM2MSAzOS42MjM2ODcxLDI5LjUzODUyMzUgMzkuMzkyNzMyMywyOS4zNDU1NzA5IEMzOS4xNzQxNjExLDI5LjE2MjU3NzEgMzguOTc2NjQyMSwyOC45NjA5MTA0IDM4Ljc4MjIxOSwyOC43NTQyNjQ0IEMzOC41Mzc2NDIyLDI4LjQ2OTE5MjQgMzguMjk4NjM4LDI4LjE3Nzg5NjIgMzguMDkxODMxMiwyNy44NjM1NzAxIEMzNy44NzgyMTM1LDI3LjUzODA0MDMgMzcuNjc4ODM3LDI3LjIxMDY0MzIgMzcuNDkxMjI0OSwyNi44NzA3OTc2IEMzNy4zMDg1NjYyLDI2LjQ5NTQ3MzYgMzcuMTIzNDMwOSwyNi4xMTc2NTk5IDM2Ljk4NDExNSwyNS43MjM2NjMgQzM2Ljg4NjI4NDIsMjUuNDQ4NTQ5OSAzNi44MDA4MzcxLDI1LjE3MDk0NyAzNi43MjA5NjI3LDI0Ljg5MTQ3NjkgQzM2Ljg4OTk5OTMsMjQuODk1MjExNSAzNy4wNTkwMzYsMjQuODk3NzAxMiAzNy4yMjg2OTE4LDI0LjkwMzkyNTUgQzM4LjMxNDczNjcsMjQuOTUxODUyNCAzOS40MDIwMiwyNS4wMDYwMDM2IDQwLjQ4NjIwNzQsMjUuMDkwMDMxNCBDNDEuMTIwMjQ5NiwyNS4xMzg1ODA4IDQxLjc1MTgxNTEsMjUuMjEzODk0NiA0Mi4zODY0NzY0LDI1LjI2ODA0NTggQzQyLjc1NjEyOCwyNS4yOTkxNjcyIDQzLjEyNjM5ODcsMjUuMzE3MjE3NiA0My40OTc5MDc4LDI1LjMyMjE5NyBDNDMuOTIzMjg1NywyNS4zMjg0MjEzIDQ0LjMzMDA4ODIsMjUuMjM0NDM0NyA0NC43Mjg4NDEzLDI1LjA5MTI3NjMgQzQ1LjEzNTAyNDYsMjQuOTQ1NjI4MSA0NS40ODMwMDQ4LDI0LjcwMjI1ODggNDUuODI2NjUwNywyNC40NDgzMDgzIEM0Ni4wODIzNzI4LDI0LjI2MDMzNSA0Ni4yMjQxNjU0LDIzLjk2NTkyNjYgNDYuMjI2MDIzLDIzLjY2NjUzODggQzQ2LjIyNjY0MjEsMjMuNjY0MDQ5MSA0Ni4yMjg0OTk3LDIzLjY2MjE4MTggNDYuMjI5NzM4MSwyMy42NTk2OTIxIEM0Ni4yOTI4OTQ2LDIzLjUyMzM4MDQgNDYuMzI4ODA3MiwyMy4zNjkwMTgzIDQ2LjM2NTk1ODEsMjMuMjIzMzcwMiBDNDYuMzkyNTgyOSwyMy4xMjAwNDcxIDQ2LjQwODA2MjQsMjMuMDExNzQ0NyA0Ni40MTkyMDc3LDIyLjkwNDY4NzEgQzQ2LjU5MDEwMTksMjEuMTMzMjU3MyA0Ni40MjQxNjEyLDE5LjM0NzUxMTcgNDYuMjE4NTkyOCwxNy41ODcyODU2IEM0Ni4wMjI5MzEzLDE1LjkxNDE5OTUgNDUuNzgyMDY5NiwxNC4yNDczMzc2IDQ1LjU3NDY0MzcsMTIuNTc2MTE4NyBDNDUuNDczNzE3LDExLjc1NjM4MTIgNDUuMzc5NjAxNCwxMC45MzUzOTg4IDQ1LjMxOTU0MDgsMTAuMTExOTI2NyBDNDUuMjU4MjQxOCw5LjI3MTAyNjYzIDQ1LjIyNDgwNTksOC40MjgyNTkyNiA0NS4yMDQzNzI5LDcuNTg1NDkxOSBDNDUuMTYyMjY4Niw1LjkwMzA2OTMyIDQ1LjE1MDUwNDEsNC4yMjA2NDY3NCA0NS4xMTgzMDY3LDIuNTM4ODQ2NTggQzQ1LjExMDg3NjUsMi4xNDYwOTQ1OSA0NS4xMDQ2ODQ3LDEuNzUzOTY1MDIgNDUuMDk5NzMxMiwxLjM2MjQ1Nzg4IEM0NS4wOTcyNTQ1LDEuMTc4MjE5MjIgNDUuMDk1Mzk2OSwwLjk5NDYwMjk5MyA0NS4wOTM1Mzk0LDAuODEwMzY0MzM4IEM0NS4wOTE2ODE5LDAuNTc2MzMxNDUyIDQ1LjA5NjYzNTMsMC4zNDM1NDM0MjIgNDUuMDUzMjkyNiwwLjExMjAwMDI0OCBDNDQuOTk5NDIzOCwtMC4xODY3NjUxMzkgNDQuODk2MDIwNCwtMC40NTQ0MDkxMzEgNDQuNjk3MjYzLC0wLjY4NjU3NDczMyBDNDQuNTkxMzgyOSwtMC44MDk4MTU0NTUgNDQuNDc4MDcyNywtMC45MjgwNzY3NTQgNDQuMzY4NDc3NSwtMS4wNDc1ODI5MSBDNDQuMjI5MTYxNiwtMS4yMDAwNzc3NCA0NC4wODI0MTU1LC0xLjM0NDQ4MTAxIDQzLjkzMzgxMTgsLTEuNDg4ODg0MjggQzQzLjY0NzEzMDYsLTEuNzY4MzU0NCA0My4zNTExNjE3LC0yLjAzNzg2NTY4IDQzLjA2Mzg2MTQsLTIuMzE1NDY4NTIgQzQyLjc3Nzc5OTMsLTIuNTkyNDQ4OTMgNDIuNTA1MzU5MywtMi44ODMxMjI3NSA0Mi4yMzQ3NzY5LC0zLjE3NTA0MTQzIEM0Mi4yMDA3MjE5LC0zLjIyMTcyMzUyIDQyLjE2Mjk1MTgsLTMuMjY0NjcxMDUgNDIuMTIyMDg1OCwtMy4zMDM4ODQgQzQyLjA4NjE3MzIsLTMuMzQ5MzIxMjQgNDIuMDQ3MTY0OCwtMy4zOTA0MDE0OCA0Mi4wMDUwNjA0LC0zLjQyODM2OTU4IEM0Mi4wMDEzNDUzLC0zLjQzMTQ4MTcyIDQxLjk5ODI0OTQsLTMuNDM0NTkzODYgNDEuOTk1MTUzNSwtMy40Mzc3MDYgQzQxLjc2NjY3NTQsLTMuNjkxNjU2NTggNDEuNTM4ODE2NSwtMy45NDQ5ODQ3MyA0MS4zMDYwMDQxLC00LjE5NDU3ODMxIEM0MS4yMzQxNzksLTQuMjcyMzgxOCA0MS4xMzI2MzMyLC00LjMyOTAyMjc0IDQxLjAyMzAzOCwtNC4zNjU3NDU5OCBDNDAuOTk3MDMyNCwtNC40MzA0Nzg0OCA0MC45NjU0NTQxLC00LjQ5Mzk2NjEzIDQwLjkyMjczMDYsLTQuNTUxODUxOTIgQzQwLjgxMTI3NzksLTQuNzAxODU3MDQgNDAuNjk3OTY3NiwtNC44MjA3NDA3NyA0MC41MjcwNzM0LC00LjkwMjI3ODgyIEM0MC4zOTcwNDUyLC00Ljk2NDUyMTYxIDQwLjIzMjM0MjgsLTUgNDAuMDgyNTAwOCwtNSBDNDAuMDU0NjM3NywtNSA0MC4wMjY3NzQ1LC00Ljk5ODc1NTE0IDQwLjAwMDE0OTcsLTQuOTk2MjY1NDMgQzM5Ljc3ODQ4MjYsLTQuOTc1MTAyODggMzkuNjI3NDAyMiwtNC44ODI5ODM1NiAzOS40MzczMTM0LC00Ljc4MDkwNTM4IEMzOS4zMTQ3MTU0LC00LjcxNTU1MDQ1IDM5LjE5NzY5LC00LjY0MjcyNjM5IDM5LjA4MDA0NTUsLTQuNTY5Mjc5OSBDMzguNzk0NjAyNiwtNC4zOTEyNjU1MyAzOC41MDkxNTk4LC00LjIxMTM4Mzg3IDM4LjIyNjE5MzcsLTQuMDI4MzkwMDcgQzM3LjkxMjI2ODUsLTMuODI2MTAxIDM3LjYwODg2OTQsLTMuNjA4MjUxMjQgMzcuMzAwNTE2OSwtMy4zOTcyNDgxOSBDMzYuOTU5MzQ3NywtMy4xNjMyMTUzIDM2LjYxNjk0MDEsLTIuOTMxNjcyMTMgMzYuMjc3NjI4NSwtMi42OTQ1MjcxIEMzNS42NDExMDk2LC0yLjI1MTM1ODQ0IDM0Ljk4NjYzNDQsLTEuODM0MzMxNzYgMzQuMzYxMjYwNywtMS4zNzQ5Nzk5OCBDMzMuNzA1NTQ3MiwtMC44OTM4NDMyMiAzMy4wMjc1NDMsLTAuNDQ1MDcyNzEyIDMyLjM3MTgyOTUsMC4wMzY2ODY0NzMyIEMzMS43MDg2ODU3LDAuNTI0MDQ3NTEgMzEuMDM4MTExOCwxLjAwMzkzOTQxIDMwLjM2MzgyMjgsMS40NzYzNjIxOCBDMzAuMDIyMDM0NCwxLjcxNTk5NjkyIDI5LjY4NDU4MDMsMS45NjEyMzM1IDI5LjM0NTg4NzksMi4yMDcwOTI1MiBDMjkuMDA5MDUzLDIuNDUxMDg0MjUgMjguNjY0MTY4NywyLjY4MjAwNSAyOC4zMTg2NjUyLDIuOTE0MTcwNiBDMjcuOTY4MjA4MywzLjE1MDY5MzIgMjcuNjI1ODAwOCwzLjQwMDkwOTIxIDI3LjI4MTUzNTcsMy42NDU1MjMzNyBDMjYuOTQ1MzE5OSwzLjg4NTc4MDU0IDI2LjYwMTY3NCw0LjExNDgzNCAyNi4yNTkyNjY0LDQuMzQ4MjQ0NDYgQzI1LjYzNjk4ODcsNC43NzE0OTU0MiAyNS4wMDk3NTc1LDUuMTg5NzY2OTYgMjQuMzkyNDMzMiw1LjYyMTEwOTQ5IEMyMy43ODEzMDA4LDYuMDQ5OTYyMyAyMy4xNTUzMDc5LDYuNDU1MTYyODYgMjIuNTQ2NjUyMiw2Ljg4Nzc1MDI0IEMyMi4yNDYzNDksNy4xMDEyNDMwMSAyMS45NDA0NzMyLDcuMzA3MjY2NjQgMjEuNjQzMjY1OSw3LjUyNTExNjQgQzIxLjM1MjI1MDQsNy43Mzg2MDkxNiAyMS4wNzExNDE5LDcuOTY3MDQwMiAyMC43NzgyNjg5LDguMTc4NjY1NjggQzIwLjE0MTEzMDgsOC42MzkyNjIzMiAxOS40NzkyMjU0LDkuMDY2ODcwMjggMTguODAwNjAyMSw5LjQ2MjczNDQyIEMxOC41OTM3OTU0LDkuNTgyODYzIDE4LjQ1MjYyMTksOS44NDU1Mjc1NyAxOC40MTIzNzUxLDEwLjA3Mzk1ODYgQzE4LjM5NjI3NjQsMTAuMTY2NzAwNCAxOC4zOTM3OTk2LDEwLjI2MTMwOTQgMTguNDA0OTQ0OSwxMC4zNTI4MDYzIEMxOC40MDI0NjgyLDEwLjM1NDY3MzYgMTguMzk5OTkxNSwxMC4zNTU5MTg0IDE4LjM5NzUxNDcsMTAuMzU3Nzg1NyBDMTguMTkzODAzOSwxMC41MDA5NDQxIDE4LjA1MzI0OTYsMTAuNzIxOTA2IDE4LjAxMDUyNjEsMTAuOTY5MDA5OSBDMTguMDA2ODExLDExLjA1MzY2MDEgMTguMDAzNzE1MSwxMS4xMzgzMTAzIDE4LDExLjIyMjk2MDUgQzE4LjAxNjcxNzksMTEuMzg5MTQ4NyAxOC4wNzE4MjUxLDExLjU0MDM5ODcgMTguMTY2NTU5OSwxMS42NzczMzI4IEMxOC43MzE4NzI5LDEyLjcxNjc4NzQgMTkuMjk2NTY2OCwxMy43NTU2MTk2IDE5LjkwMjc0NTgsMTQuNzcyMDQ0MyBaIiBpZD0iRmlsbC0yOC1Db3B5IiBmaWxsPSIjMDAwMDAwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNC4wMDAwMDAsIDI1LjAwMDAwMCkgc2NhbGUoMSwgLTEpIHJvdGF0ZSgtNzEuMDAwMDAwKSB0cmFuc2xhdGUoLTM0LjAwMDAwMCwgLTI1LjAwMDAwMCkgIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPGcgaWQ9IkRyYWctRm9jdXMtUG9pbnQiPgogICAgICAgICAgICAgICAgPHVzZSBmaWxsPSJibGFjayIgZmlsbC1vcGFjaXR5PSIxIiBmaWx0ZXI9InVybCgjZmlsdGVyLTQpIiB4bGluazpocmVmPSIjcGF0aC0zIj48L3VzZT4KICAgICAgICAgICAgICAgIDx1c2UgZmlsbD0iIzAwMDAwMCIgZmlsbC1ydWxlPSJldmVub2RkIiB4bGluazpocmVmPSIjcGF0aC0zIj48L3VzZT4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+');
    width: 97px;
    height: 58px;
    position: absolute;
    top: 24px;
    right: 2px;
    z-index: 999;
    pointer-events: none;
}

.attachment-info.attachment-info .thumbnail {
    padding: 5px;
    background: #fff;
}
.bt-focus-point{position:relative;display:inline-block}.bt-focus-point,.bt-focus-point img{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bt-focus-point-marker{position:absolute;top:0;left:100px;z-index:99}.bt-focus-point-marker:after{background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMzhweCIgaGVpZ2h0PSIzOHB4IiB2aWV3Qm94PSIwIDAgMzggMzgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDQ5ICg1MTAwMikgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAgICA8dGl0bGU+U2hhcGUgQ29weTwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPgogICAgICAgIDxwYXRoIGQ9Ik0xNy40OTU3ODcxLDMyLjU0OTg4OTEgTDE3LjQ5NTc4NzEsMzUuMiBMMTkuNzA0MjEyOSwzNS4yIEwxOS43MDQyMTI5LDMyLjU0OTg4OTEgQzI2LjU2MjU3MzMsMzIuMDA5ODg1OCAzMi4wMDk4ODU4LDI2LjU2MjU3MzMgMzIuNTQ5ODg5MSwxOS43MDQyMTI5IEwzNS4yLDE5LjcwNDIxMjkgTDM1LjIsMTcuNDk1Nzg3MSBMMzIuNTQ5ODg5MSwxNy40OTU3ODcxIEMzMi4wMDk4ODU4LDEwLjYzNzQyNjcgMjYuNTYyNTczMyw1LjE5MDExNDE2IDE5LjcwNDIxMjksNC42NTAxMTA4NiBMMTkuNzA0MjEyOSwyIEwxNy40OTU3ODcxLDIgTDE3LjQ5NTc4NzEsNC42NTAxMTA4NiBDMTAuNjM3NDI2Nyw1LjE5MDExNDE2IDUuMTkwMTE0MTYsMTAuNjM3NDI2NyA0LjY1MDExMDg2LDE3LjQ5NTc4NzEgTDIsMTcuNDk1Nzg3MSBMMiwxOS43MDQyMTI5IEw0LjY1MDExMDg2LDE5LjcwNDIxMjkgQzUuMTkwMTE0MTYsMjYuNTYyNTczMyAxMC42Mzc0MjY3LDMyLjAwOTg4NTggMTcuNDk1Nzg3MSwzMi41NDk4ODkxIFogTTYuODU4NTM2NTksMTkuNzA0MjEyOSBMMTIuMjMyMzcyNSwxOS43MDQyMTI5IEMxMi43MDMxMjI3LDIyLjM5MjE2MDQgMTQuODA3ODM5NiwyNC40OTY4NzczIDE3LjQ5NTc4NzEsMjQuOTY3NjI3NSBMMTcuNDk1Nzg3MSwzMC4zNDE0NjM0IEMxMS44NTI1OTI5LDI5LjgxNjc2MTcgNy4zODMyMzgyNywyNS4zNDc0MDcxIDYuODU4NTM2NTksMTkuNzA0MjEyOSBaIE0xOC42LDE0LjMzMDM3NjkgQzIwLjk1ODA0NzcsMTQuMzMwMzc2OSAyMi44Njk2MjMxLDE2LjI0MTk1MjMgMjIuODY5NjIzMSwxOC42IEMyMi44Njk2MjMxLDIwLjk1ODA0NzcgMjAuOTU4MDQ3NywyMi44Njk2MjMxIDE4LjYsMjIuODY5NjIzMSBDMTYuMjQxOTUyMywyMi44Njk2MjMxIDE0LjMzMDM3NjksMjAuOTU4MDQ3NyAxNC4zMzAzNzY5LDE4LjYgQzE0LjMzMDM3NjksMTYuMjQxOTUyMyAxNi4yNDE5NTIzLDE0LjMzMDM3NjkgMTguNiwxNC4zMzAzNzY5IFogTTE5LjcwNDIxMjksMzAuMzQxNDYzNCBMMTkuNzA0MjEyOSwyNC45Njc2Mjc1IEMyMi4zOTIxNjA0LDI0LjQ5Njg3NzMgMjQuNDk2ODc3MywyMi4zOTIxNjA0IDI0Ljk2NzYyNzUsMTkuNzA0MjEyOSBMMzAuMzQxNDYzNCwxOS43MDQyMTI5IEMyOS44MTY3NjE3LDI1LjM0NzQwNzEgMjUuMzQ3NDA3MSwyOS44MTY3NjE3IDE5LjcwNDIxMjksMzAuMzQxNDYzNCBaIE0zMC4zNDE0NjM0LDE3LjQ5NTc4NzEgTDI0Ljk2NzYyNzUsMTcuNDk1Nzg3MSBDMjQuNDk2ODc3MywxNC44MDc4Mzk2IDIyLjM5MjE2MDQsMTIuNzAzMTIyNyAxOS43MDQyMTI5LDEyLjIzMjM3MjUgTDE5LjcwNDIxMjksNi44NTg1MzY1OSBDMjUuMzQ3NDA3MSw3LjM4MzIzODI3IDI5LjgxNjc2MTcsMTEuODUyNTkyOSAzMC4zNDE0NjM0LDE3LjQ5NTc4NzEgWiBNMTcuNDk1Nzg3MSw2Ljg1ODUzNjU5IEwxNy40OTU3ODcxLDEyLjIzMjM3MjUgQzE0LjgwNzgzOTYsMTIuNzAzMTIyNyAxMi43MDMxMjI3LDE0LjgwNzgzOTYgMTIuMjMyMzcyNSwxNy40OTU3ODcxIEw2Ljg1ODUzNjU5LDE3LjQ5NTc4NzEgQzcuMzgzMjM4MjcsMTEuODUyNTkyOSAxMS44NTI1OTI5LDcuMzgzMjM4MjcgMTcuNDk1Nzg3MSw2Ljg1ODUzNjU5IFoiIGlkPSJwYXRoLTEiPjwvcGF0aD4KICAgIDwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJTaGFwZS1Db3B5IiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8dXNlIGZpbGw9IiNGRkZGRkYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgeGxpbms6aHJlZj0iI3BhdGgtMSI+PC91c2U+CiAgICAgICAgICAgIDxwYXRoIHN0cm9rZT0iIzAwNzNBQSIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNMTYuNDk1Nzg3MSwzMy40NDU4MDg5IEM5Ljg4OTg2NTY3LDMyLjUxNTk2OTYgNC42ODQwMzAzNywyNy4zMTAxMzQzIDMuNzU0MTkxMDcsMjAuNzA0MjEyOSBMMSwyMC43MDQyMTI5IEwxLDE2LjQ5NTc4NzEgTDMuNzU0MTkxMDcsMTYuNDk1Nzg3MSBDNC42ODQwMzAzNyw5Ljg4OTg2NTY3IDkuODg5ODY1NjcsNC42ODQwMzAzNyAxNi40OTU3ODcxLDMuNzU0MTkxMDcgTDE2LjQ5NTc4NzEsMSBMMjAuNzA0MjEyOSwxIEwyMC43MDQyMTI5LDMuNzU0MTkxMDcgQzI3LjMxMDEzNDMsNC42ODQwMzAzNyAzMi41MTU5Njk2LDkuODg5ODY1NjcgMzMuNDQ1ODA4OSwxNi40OTU3ODcxIEwzNi4yLDE2LjQ5NTc4NzEgTDM2LjIsMjAuNzA0MjEyOSBMMzMuNDQ1ODA4OSwyMC43MDQyMTI5IEMzMi41MTU5Njk2LDI3LjMxMDEzNDMgMjcuMzEwMTM0MywzMi41MTU5Njk2IDIwLjcwNDIxMjksMzMuNDQ1ODA4OSBMMjAuNzA0MjEyOSwzNi4yIEwxNi40OTU3ODcxLDM2LjIgTDE2LjQ5NTc4NzEsMzMuNDQ1ODA4OSBaIE04LjAxMjExOTk5LDIwLjcwNDIxMjkgQzguODU1NDc2NDUsMjQuOTg1MjIxNiAxMi4yMTQ3Nzg0LDI4LjM0NDUyMzYgMTYuNDk1Nzg3MSwyOS4xODc4OCBMMTYuNDk1Nzg3MSwyNS43NTg5MTQgQzE0LjA2NDQ5NjgsMjUuMDQyMDU3MiAxMi4xNTc5NDI4LDIzLjEzNTUwMzIgMTEuNDQxMDg2LDIwLjcwNDIxMjkgTDguMDEyMTE5OTksMjAuNzA0MjEyOSBaIE0xOC42LDE1LjMzMDM3NjkgQzE2Ljc5NDIzNywxNS4zMzAzNzY5IDE1LjMzMDM3NjksMTYuNzk0MjM3IDE1LjMzMDM3NjksMTguNiBDMTUuMzMwMzc2OSwyMC40MDU3NjMgMTYuNzk0MjM3LDIxLjg2OTYyMzEgMTguNiwyMS44Njk2MjMxIEMyMC40MDU3NjMsMjEuODY5NjIzMSAyMS44Njk2MjMxLDIwLjQwNTc2MyAyMS44Njk2MjMxLDE4LjYgQzIxLjg2OTYyMzEsMTYuNzk0MjM3IDIwLjQwNTc2MywxNS4zMzAzNzY5IDE4LjYsMTUuMzMwMzc2OSBaIE0yMC43MDQyMTI5LDI5LjE4Nzg4IEMyNC45ODUyMjE2LDI4LjM0NDUyMzYgMjguMzQ0NTIzNiwyNC45ODUyMjE2IDI5LjE4Nzg4LDIwLjcwNDIxMjkgTDI1Ljc1ODkxNCwyMC43MDQyMTI5IEMyNS4wNDIwNTcyLDIzLjEzNTUwMzIgMjMuMTM1NTAzMiwyNS4wNDIwNTcyIDIwLjcwNDIxMjksMjUuNzU4OTE0IEwyMC43MDQyMTI5LDI5LjE4Nzg4IFogTTI5LjE4Nzg4LDE2LjQ5NTc4NzEgQzI4LjM0NDUyMzYsMTIuMjE0Nzc4NCAyNC45ODUyMjE2LDguODU1NDc2NDUgMjAuNzA0MjEyOSw4LjAxMjExOTk5IEwyMC43MDQyMTI5LDExLjQ0MTA4NiBDMjMuMTM1NTAzMiwxMi4xNTc5NDI4IDI1LjA0MjA1NzIsMTQuMDY0NDk2OCAyNS43NTg5MTQsMTYuNDk1Nzg3MSBMMjkuMTg3ODgsMTYuNDk1Nzg3MSBaIE0xNi40OTU3ODcxLDguMDEyMTE5OTkgQzEyLjIxNDc3ODQsOC44NTU0NzY0NSA4Ljg1NTQ3NjQ1LDEyLjIxNDc3ODQgOC4wMTIxMTk5OSwxNi40OTU3ODcxIEwxMS40NDEwODYsMTYuNDk1Nzg3MSBDMTIuMTU3OTQyOCwxNC4wNjQ0OTY4IDE0LjA2NDQ5NjgsMTIuMTU3OTQyOCAxNi40OTU3ODcxLDExLjQ0MTA4NiBMMTYuNDk1Nzg3MSw4LjAxMjExOTk5IFoiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==);color:#000;content:'';width:38px;height:38px;display:inline-block;cursor:-webkit-grabbing}.bt-focus-point .grid>div{position:absolute;width:1px;height:100%;top:0;opacity:.4;left:0;background:#fff}.bt-focus-point .grid>.x1{left:33.3333%}.bt-focus-point .grid>.x2{left:66.66666%}.bt-focus-point .grid>.y1,.bt-focus-point .grid>.y2{width:100%;height:1px;left:0;top:33.33333%}.bt-focus-point .grid>.y2{top:66.66666%}.attachment-actions .preview-images-btn,.preview-thumbnails .preview-images-btn,.wp_attachment_holder .preview-images-btn{margin:0 4px}.attachment-actions+.bt-user-message{margin-top:10px}.attachment-info .thumbnail{padding:0;border:none;box-shadow:none;font-size:0}.attachment-info.attachment-info .thumbnail,.attachment-info.attachment-info .thumbnail img{max-height:100%;max-width:100%;height:auto}.attachment-info.attachment-info .thumbnail img{width:100%}.attachment-info .details,.attachment-info .thumbnail{float:none;text-align:center}#bt-thumbnil-selector .bssm-item{width:auto}#bt-thumbnil-selector .bf-item-container figure{min-height:10px}#bt-thumbnil-selector .bf-item-container{min-width:10px}.bt-user-message{background:#ccc;color:#fdfdfd;padding:3px 5px;font-size:11px;text-align:center;margin:2px 0}.bt-user-message.success{background:#46b450;color:#fdfdfd}.media-modal-content .attachment-info:before{content:'';display:inline-block;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iOTVweCIgaGVpZ2h0PSI2MHB4IiB2aWV3Qm94PSIwIDAgOTUgNjAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDQ5ICg1MTAwMikgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAgICA8dGl0bGU+R3JvdXAgMjwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPgogICAgICAgIDxwYXRoIGQ9Ik00Mi4yODc0MDczLC0zLjExNTI4ODM1IEM0Mi4yNzE5Mjc4LC0zLjEzMjA5MzkxIDQyLjI1NjQ0ODIsLTMuMTQ4Mjc3MDMgNDIuMjQxNTg3OSwtMy4xNjUwODI1OCBDNDIuMjQxNTg3OSwtMy4xNjU3MDUwMSA0Mi4yNDA5Njg3LC0zLjE2NTcwNTAxIDQyLjI0MDk2ODcsLTMuMTY1NzA1MDEgQzQyLjI1NjQ0ODIsLTMuMTQ4ODk5NDYgNDIuMjcxOTI3OCwtMy4xMzIwOTM5MSA0Mi4yODc0MDczLC0zLjExNTI4ODM1IFogTTE5LjkwMjc0NTgsMTQuNzcyMDQ0MyBDMjAuMTY0NjU5NywxNS4yMTAyMzM1IDIwLjQyODQzMTEsMTUuNjQ0Njg4MiAyMC43MTA3NzgxLDE2LjA3MDQyODkgQzIwLjg2MDAwMDksMTYuMjkzODgwNSAyMS4wMDc5ODUzLDE2LjUxNzMzMjEgMjEuMTQ3OTIwNCwxNi43NDc2MzA0IEMyMS4yMTc4ODgsMTYuODYyNzc5NiAyMS4yODY2MTcyLDE2Ljk3OTc5NiAyMS4zNTU5NjU1LDE3LjA5NTU2NzYgQzIxLjI3OTgwNjIsMTcuMjYyMzc4MyAyMS4yMDU1MDQzLDE3LjQyOTgxMTQgMjEuMTMyNDQwOSwxNy41OTc4NjY5IEMyMC44MjE2MTE2LDE4LjMwNDk0NSAyMC41MjM3ODUxLDE5LjAyMzIyNjggMjAuMjY5MzAxNCwxOS43NTMzMzQ3IEMxOS45ODc1NzM3LDIwLjU2MzczNTggMTkuNzIwMDg3MSwyMS4zODQ3MTgyIDE5LjUwODk0NjEsMjIuMjE2OTA0MyBDMTkuNDI1MzU2NiwyMi41NDY3OTExIDE5LjM0OTgxNjQsMjIuODc4NTQ1MSAxOS4yODM1NjM5LDIzLjIxMjE2NjUgQzE5LjIwODY0MjksMjMuNTkzNzE0OCAxOS4xNzU4MjYzLDIzLjk4MzM1NDYgMTkuMTQxMTUyMSwyNC4zNzExMjcyIEMxOS4xMzU1Nzk1LDI0LjQzNjQ4MjEgMTkuMTMzMTAyOCwyNC41MDA1OTIyIDE5LjEzNDk2MDMsMjQuNTYyODM1IEMxOS4xMDcwOTcxLDI0LjgzNzk0ODEgMTkuMDgxMDkxNSwyNS4xMTQzMDYxIDE5LjA2MzEzNTIsMjUuMzkwNjY0MSBDMTkuMDMwOTM3NywyNS44NzExNzg0IDE4Ljk5NTY0NDQsMjYuMzU0ODA0OSAxOS4wMDg2NDcyLDI2LjgzNTk0MTYgQzE5LjAzMjE3NjEsMjcuNjU0NDM0MyAxOS4wOTcxOTAyLDI4LjQ3ODUyODggMTkuMjAwNTkzNiwyOS4yOTE0MTk3IEMxOS4yNDE0NTk2LDI5LjYxNTA4MjIgMTkuMjkyMjMyNSwyOS45MzY4Nzc0IDE5LjM0NzMzOTcsMzAuMjU3NDI3NyBDMTkuMjgxMDg3MiwzMC40MDI0NTM0IDE5LjI1MDEyODEsMzAuNTY1NTI5NSAxOS4yNjYyMjY4LDMwLjczMjk2MjYgQzE5LjI5NzE4NTksMzEuMDY0MDk0MyAxOS4zMjEzMzQsMzEuMzk4MzM4MSAxOS4zNjU5MTUxLDMxLjcyNzYwMjQgQzE5LjQxMzU5MjEsMzIuMDc5Mjc0MiAxOS40OTQwODU4LDMyLjQyMzQ3NjggMTkuNTc4OTEzNywzMi43NjgzMDE4IEMxOS42NDk1MDA0LDMzLjExMjUwNDUgMTkuNjk5MDM0OSwzMy40NjEwNjQxIDE5Ljc3MDI0MDksMzMuODA0NjQ0MyBDMTkuODYzNzM3MywzNC4yNTAzMDI2IDE5Ljk2ODM3OSwzNC42OTAzNTkyIDIwLjEwNzA3NTgsMzUuMTI0MTkxNCBDMjAuMzQ2Njk5MSwzNS44NzI5NzIxIDIwLjU5NDk5MTEsMzYuNjE5ODg1NiAyMC44NTAwOTQsMzcuMzYzMDY0NSBDMjEuMDg5NzE3MywzOC4wNTk1NjEzIDIxLjM3NTc3OTMsMzguNzM1NTE4IDIxLjY1Mzc5MiwzOS40MTcwNzY1IEMyMS43OTE4Njk1LDM5Ljc1NTA1NDkgMjEuOTI2MjMyLDQwLjA5NDI3ODEgMjIuMDc2MDc0LDQwLjQyNzI3NyBDMjIuMjU3NDk0Myw0MC44MjkzNjU0IDIyLjQ1Mzc3NDksNDEuMjIwODcyNiAyMi42NTg3MjQxLDQxLjYxMDUxMjQgQzIzLjAwMjk4OTIsNDIuMjYzNDM5MyAyMy4zNTgzOTk2LDQyLjkwODg5NyAyMy43MjkyODk1LDQzLjU0Njg4NTYgQzIzLjkyODY2Niw0My44OTA0NjU4IDI0LjEzNTQ3MjgsNDQuMjI5Njg5IDI0LjM1NjUyMDcsNDQuNTYwODIwNiBDMjQuNTY4MjgwOSw0NC44Nzc2MzY0IDI0LjgwNDgwODMsNDUuMTc3MDI0MiAyNS4wNDU2NzAxLDQ1LjQ3MjY3NzUgQzI1LjM0NzIxMTYsNDUuODQ0MjY2OSAyNS42NjQyMzI3LDQ2LjIwNDAzMDIgMjUuOTk0MjU2Niw0Ni41NTAxMDAxIEMyNi4yMzU3Mzc1LDQ2LjgwMzQyODMgMjYuNTA0NDYyNSw0Ny4wMjU2MzUxIDI2Ljc3MjU2ODIsNDcuMjQ5MDg2NyBDMjcuMDY0MjAyOCw0Ny40OTMwNzg0IDI3LjM1Mjc0MTYsNDcuNzM5NTU5OCAyNy42NTQyODMxLDQ3Ljk3MTcyNTQgQzI3Ljk4NTU0NTQsNDguMjI2OTIwOSAyOC4zMjM2MTg3LDQ4LjQ3MzQwMjMgMjguNjYzNTQ5NSw0OC43MTgwMTY1IEMyOS4zNjU3MDE3LDQ5LjIyMTU2MDYgMzAuMDY4NDczMSw0OS43MjA3NDc4IDMwLjgwMzQ0MTksNTAuMTc0NDk3NyBDMzEuNDkzODI5Nyw1MC42MDA4NjA4IDMyLjIxMjY5OTgsNTAuOTc4MDUyMSAzMi45NDIwOTYsNTEuMzMwOTY4OCBDMzMuNzEzNTk2NSw1MS43MDQ0MjU1IDM0LjQ5NTAwNCw1Mi4wNTY3MTk3IDM1LjI3NTE3MzEsNTIuNDEwMjU4NyBDMzYuMDE1MDk1NCw1Mi43NDYzNjk4IDM2Ljc2MzA2Nyw1My4wNjk0MDk5IDM3LjUzMDIzMzMsNTMuMzM3Njc2MyBDMzguMzU5OTM3LDUzLjYyODM1MDEgMzkuMTk5NTQ3NSw1My44ODkxNDc0IDQwLjA0NzIwNzUsNTQuMTIxOTM1NCBDNDAuODQ1OTUyLDU0LjM0MTY1MjUgNDEuNjQ5NjUwMSw1NC41MTk2NjY4IDQyLjQ2Mzg3NDIsNTQuNjcwOTE2OCBDNDMuMjMwNDIxMyw1NC44MTQ2OTc2IDQ0LjAwODExMzYsNTQuODg4NzY2NiA0NC43ODUxODY4LDU0LjkzNzkzODQgQzQ1LjI0OTU3MzIsNTQuOTY3MTkyNSA0NS43MTU4MTcxLDU0Ljk4MDg4NTkgNDYuMTgwMjAzNSw1NC45OTIwODk2IEM0Ni4zNjg0MzQ4LDU0Ljk5NzA2OSA0Ni41NTY2NjYxLDU1LjAwMTQyNiA0Ni43NDQ4OTczLDU0Ljk5OTU1ODcgQzQ2Ljk5NjkwNDMsNTQuOTk3MDY5IDQ3LjI0NzY3Myw1NC45NDA0MjgxIDQ3LjQ4OTc3MzEsNTQuODczODI4MyBDNDcuODgxNzE1Miw1NC43NjY3NzA3IDQ4LjI2NDk4ODcsNTQuNTY1NzI2NSA0OC41OTkzNDY5LDU0LjMzODU0MDMgQzQ4Ljc1MDQyNzMsNTQuMjM1MjE3MyA0OC44OTkwMzA5LDU0LjEzMDY0OTQgNDkuMDUzODI2NCw1NC4wMzE2ODM0IEM0OS4xOTU2MTksNTMuOTQwODA4OSA0OS4zMjM3ODk3LDUzLjgzMTg4NCA0OS40NDMyOTE4LDUzLjcxMzAwMDMgQzQ5LjUwMjczMzIsNTMuNjU0NDkyMSA0OS41NDkxNzE5LDUzLjU5Nzg1MTEgNDkuNTk0OTkxMyw1My41Mjc1MTY4IEM0OS42NjA2MjQ2LDUzLjQ0MDM3NjkgNDkuNzE3NTg5Myw1My4zNDc2MzUxIDQ5Ljc2NTI2NjMsNTMuMjQ5MjkxNSBDNDkuODA5MjI4Miw1My4xNDU5Njg1IDQ5Ljg0NTE0MDgsNTMuMDM4OTEwOSA0OS44NzMwMDQsNTIuOTI5MzYzNiBDNDkuOTk1NjAyLDUyLjUyNDE2MyA1MC4wMDMwMzIxLDUyLjA4MDM3MTkgNDkuOTk5MzE3LDUxLjY2MDg1NTUgQzQ5Ljk5NzQ1OTUsNTEuNDc4NDg0MiA0OS45ODEzNjA4LDUxLjI5NjczNTIgNDkuOTcxNDUzOSw1MS4xMTQ5ODYzIEM0OS45NjU4ODEyLDUxLjAyMjg2NyA0OS45NjIxNjYxLDUwLjkzMTk5MjUgNDkuOTU2NTkzNSw1MC44NDA0OTU2IEM0OS45NDE3MzMxLDUwLjYyMDc3ODUgNDkuODg3ODY0Myw1MC40MDg1MzA2IDQ5LjgzNDYxNDcsNTAuMTk1NjYwMyBDNDkuODI2NTY1Myw1MC4xNjQ1Mzg5IDQ5LjgxNTQyLDUwLjEzNDY2MjQgNDkuODAxNzk4LDUwLjEwNDc4NTggQzQ5Ljc4MTM2NSw0OS4yNjIwMTg1IDQ5Ljc3MDIxOTgsNDguNDE4NjI4NyA0OS43Njg5ODE0LDQ3LjU3NDYxNjUgQzQ5Ljc2NzEyMzksNDUuOTc2ODQ0MSA0OS44MDM2NTU2LDQ0LjM3NDcxNDcgNDkuNzE3NTg5Myw0Mi43NzgxODcxIEM0OS42NzkyLDQyLjA4MjkzNTIgNDkuNjQyMDQ5MSw0MS4zODc2ODMyIDQ5LjYwNjc1NTgsNDAuNjkxODA4OSBDNDkuNTkwMDM3OSw0MC4zNDg4NTExIDQ5LjU4MDEzMDksNDAuMDA1MjcwOSA0OS41NTQ3NDQ1LDM5LjY2MzU1OCBDNDkuNTI4NzM4OSwzOS4zMTY4NjU3IDQ5LjQ5MzQ0NTUsMzguOTcxNDE4MiA0OS40NjAwMDk3LDM4LjYyNDcyNTggQzQ5LjM5NzQ3MjMsMzcuOTc1NTMzNiA0OS4zNTM1MTA0LDM3LjMyNTA5NjQgNDkuMjg2NjM4OCwzNi42NzcxNDkgQzQ5LjIxNzkwOTYsMzYuMDAzNjgyIDQ5LjEzNjE3NzYsMzUuMzA5MDUyNSA0OC45NDc5NDYzLDM0LjY1Nzk5MjkgQzQ4Ljg4MTY5MzgsMzQuNDMwMTg0MyA0OC42NzYxMjU1LDM0LjIyOTc2MjUgNDguNDY3NDYxMiwzNC4xMzA3OTY1IEM0OC40MDQzMDQ2LDM0LjEwMDkyIDQ4LjMzNzQzMywzNC4wNzc4OTAxIDQ4LjI2OTMyMywzNC4wNjI5NTE4IEM0OC4yMjcyMTg2LDM0LjAzMTgzMDUgNDguMTg1MTE0MywzNC4wMDI1NzYzIDQ4LjE0MjM5MDcsMzMuOTczMzIyMiBDNDcuOTg2MzU2OSwzMy44Njc1MDk1IDQ3LjgyNzg0NjQsMzMuNzYzNTY0IDQ3LjY2NzQ3ODMsMzMuNjY1ODQyOSBDNDcuMjY2MjQ4NCwzMy40MTg3MzkgNDYuODU1MTExNywzMy4xODQ3MDYxIDQ2LjQyNzI1NzEsMzIuOTg3Mzk2NSBDNDYuMDY2ODkzMiwzMi44MjA1ODU4IDQ1LjY5MjI4ODIsMzIuNjg5MjUzNSA0NS4zMzY4Nzc5LDMyLjUwOTM3MTggQzQ0Ljk5MzIzMTksMzIuMzM1MDkyIDQ0LjY2MzIwOCwzMi4xMjU5NTYzIDQ0LjMzMTMyNjYsMzEuOTI3NDAxOCBDNDQuMjU1MTY3MiwzMS44NzM4NzMgNDQuMTc1OTExOSwzMS44MzE1NDc5IDQ0LjA5NTQxODMsMzEuNzk3MzE0MyBDNDMuODkzNTY1LDMxLjU3NTEwNzYgNDMuNjQ1MjczMSwzMS40MDc2NzQ1IDQzLjM1NDI1NzYsMzEuMzAzNzI5IEM0My4xODgzMTY5LDMxLjI0Mzk3NTkgNDMuMDE4NjYxMSwzMS4xOTI5MzY5IDQyLjg1MDI0MzYsMzEuMTQxMjc1MyBDNDIuMzg3NzE0OCwzMC45OTAwMjU0IDQxLjkyMDIzMjUsMzAuODM1NjYzMiA0MS40Nzc1MTc1LDMwLjYzNTI0MTUgQzQxLjAwMDc0NzUsMzAuNDIwNTAzOCA0MC41NTQ5MzY2LDMwLjE2MTU3MzggNDAuMTE1MzE3NSwyOS44ODIxMDM3IEMzOS44NjgyNjM5LDI5LjcxMDkzNjEgMzkuNjIzNjg3MSwyOS41Mzg1MjM1IDM5LjM5MjczMjMsMjkuMzQ1NTcwOSBDMzkuMTc0MTYxMSwyOS4xNjI1NzcxIDM4Ljk3NjY0MjEsMjguOTYwOTEwNCAzOC43ODIyMTksMjguNzU0MjY0NCBDMzguNTM3NjQyMiwyOC40NjkxOTI0IDM4LjI5ODYzOCwyOC4xNzc4OTYyIDM4LjA5MTgzMTIsMjcuODYzNTcwMSBDMzcuODc4MjEzNSwyNy41MzgwNDAzIDM3LjY3ODgzNywyNy4yMTA2NDMyIDM3LjQ5MTIyNDksMjYuODcwNzk3NiBDMzcuMzA4NTY2MiwyNi40OTU0NzM2IDM3LjEyMzQzMDksMjYuMTE3NjU5OSAzNi45ODQxMTUsMjUuNzIzNjYzIEMzNi44ODYyODQyLDI1LjQ0ODU0OTkgMzYuODAwODM3MSwyNS4xNzA5NDcgMzYuNzIwOTYyNywyNC44OTE0NzY5IEMzNi44ODk5OTkzLDI0Ljg5NTIxMTUgMzcuMDU5MDM2LDI0Ljg5NzcwMTIgMzcuMjI4NjkxOCwyNC45MDM5MjU1IEMzOC4zMTQ3MzY3LDI0Ljk1MTg1MjQgMzkuNDAyMDIsMjUuMDA2MDAzNiA0MC40ODYyMDc0LDI1LjA5MDAzMTQgQzQxLjEyMDI0OTYsMjUuMTM4NTgwOCA0MS43NTE4MTUxLDI1LjIxMzg5NDYgNDIuMzg2NDc2NCwyNS4yNjgwNDU4IEM0Mi43NTYxMjgsMjUuMjk5MTY3MiA0My4xMjYzOTg3LDI1LjMxNzIxNzYgNDMuNDk3OTA3OCwyNS4zMjIxOTcgQzQzLjkyMzI4NTcsMjUuMzI4NDIxMyA0NC4zMzAwODgyLDI1LjIzNDQzNDcgNDQuNzI4ODQxMywyNS4wOTEyNzYzIEM0NS4xMzUwMjQ2LDI0Ljk0NTYyODEgNDUuNDgzMDA0OCwyNC43MDIyNTg4IDQ1LjgyNjY1MDcsMjQuNDQ4MzA4MyBDNDYuMDgyMzcyOCwyNC4yNjAzMzUgNDYuMjI0MTY1NCwyMy45NjU5MjY2IDQ2LjIyNjAyMywyMy42NjY1Mzg4IEM0Ni4yMjY2NDIxLDIzLjY2NDA0OTEgNDYuMjI4NDk5NywyMy42NjIxODE4IDQ2LjIyOTczODEsMjMuNjU5NjkyMSBDNDYuMjkyODk0NiwyMy41MjMzODA0IDQ2LjMyODgwNzIsMjMuMzY5MDE4MyA0Ni4zNjU5NTgxLDIzLjIyMzM3MDIgQzQ2LjM5MjU4MjksMjMuMTIwMDQ3MSA0Ni40MDgwNjI0LDIzLjAxMTc0NDcgNDYuNDE5MjA3NywyMi45MDQ2ODcxIEM0Ni41OTAxMDE5LDIxLjEzMzI1NzMgNDYuNDI0MTYxMiwxOS4zNDc1MTE3IDQ2LjIxODU5MjgsMTcuNTg3Mjg1NiBDNDYuMDIyOTMxMywxNS45MTQxOTk1IDQ1Ljc4MjA2OTYsMTQuMjQ3MzM3NiA0NS41NzQ2NDM3LDEyLjU3NjExODcgQzQ1LjQ3MzcxNywxMS43NTYzODEyIDQ1LjM3OTYwMTQsMTAuOTM1Mzk4OCA0NS4zMTk1NDA4LDEwLjExMTkyNjcgQzQ1LjI1ODI0MTgsOS4yNzEwMjY2MyA0NS4yMjQ4MDU5LDguNDI4MjU5MjYgNDUuMjA0MzcyOSw3LjU4NTQ5MTkgQzQ1LjE2MjI2ODYsNS45MDMwNjkzMiA0NS4xNTA1MDQxLDQuMjIwNjQ2NzQgNDUuMTE4MzA2NywyLjUzODg0NjU4IEM0NS4xMTA4NzY1LDIuMTQ2MDk0NTkgNDUuMTA0Njg0NywxLjc1Mzk2NTAyIDQ1LjA5OTczMTIsMS4zNjI0NTc4OCBDNDUuMDk3MjU0NSwxLjE3ODIxOTIyIDQ1LjA5NTM5NjksMC45OTQ2MDI5OTMgNDUuMDkzNTM5NCwwLjgxMDM2NDMzOCBDNDUuMDkxNjgxOSwwLjU3NjMzMTQ1MiA0NS4wOTY2MzUzLDAuMzQzNTQzNDIyIDQ1LjA1MzI5MjYsMC4xMTIwMDAyNDggQzQ0Ljk5OTQyMzgsLTAuMTg2NzY1MTM5IDQ0Ljg5NjAyMDQsLTAuNDU0NDA5MTMxIDQ0LjY5NzI2MywtMC42ODY1NzQ3MzMgQzQ0LjU5MTM4MjksLTAuODA5ODE1NDU1IDQ0LjQ3ODA3MjcsLTAuOTI4MDc2NzU0IDQ0LjM2ODQ3NzUsLTEuMDQ3NTgyOTEgQzQ0LjIyOTE2MTYsLTEuMjAwMDc3NzQgNDQuMDgyNDE1NSwtMS4zNDQ0ODEwMSA0My45MzM4MTE4LC0xLjQ4ODg4NDI4IEM0My42NDcxMzA2LC0xLjc2ODM1NDQgNDMuMzUxMTYxNywtMi4wMzc4NjU2OCA0My4wNjM4NjE0LC0yLjMxNTQ2ODUyIEM0Mi43Nzc3OTkzLC0yLjU5MjQ0ODkzIDQyLjUwNTM1OTMsLTIuODgzMTIyNzUgNDIuMjM0Nzc2OSwtMy4xNzUwNDE0MyBDNDIuMjAwNzIxOSwtMy4yMjE3MjM1MiA0Mi4xNjI5NTE4LC0zLjI2NDY3MTA1IDQyLjEyMjA4NTgsLTMuMzAzODg0IEM0Mi4wODYxNzMyLC0zLjM0OTMyMTI0IDQyLjA0NzE2NDgsLTMuMzkwNDAxNDggNDIuMDA1MDYwNCwtMy40MjgzNjk1OCBDNDIuMDAxMzQ1MywtMy40MzE0ODE3MiA0MS45OTgyNDk0LC0zLjQzNDU5Mzg2IDQxLjk5NTE1MzUsLTMuNDM3NzA2IEM0MS43NjY2NzU0LC0zLjY5MTY1NjU4IDQxLjUzODgxNjUsLTMuOTQ0OTg0NzMgNDEuMzA2MDA0MSwtNC4xOTQ1NzgzMSBDNDEuMjM0MTc5LC00LjI3MjM4MTggNDEuMTMyNjMzMiwtNC4zMjkwMjI3NCA0MS4wMjMwMzgsLTQuMzY1NzQ1OTggQzQwLjk5NzAzMjQsLTQuNDMwNDc4NDggNDAuOTY1NDU0MSwtNC40OTM5NjYxMyA0MC45MjI3MzA2LC00LjU1MTg1MTkyIEM0MC44MTEyNzc5LC00LjcwMTg1NzA0IDQwLjY5Nzk2NzYsLTQuODIwNzQwNzcgNDAuNTI3MDczNCwtNC45MDIyNzg4MiBDNDAuMzk3MDQ1MiwtNC45NjQ1MjE2MSA0MC4yMzIzNDI4LC01IDQwLjA4MjUwMDgsLTUgQzQwLjA1NDYzNzcsLTUgNDAuMDI2Nzc0NSwtNC45OTg3NTUxNCA0MC4wMDAxNDk3LC00Ljk5NjI2NTQzIEMzOS43Nzg0ODI2LC00Ljk3NTEwMjg4IDM5LjYyNzQwMjIsLTQuODgyOTgzNTYgMzkuNDM3MzEzNCwtNC43ODA5MDUzOCBDMzkuMzE0NzE1NCwtNC43MTU1NTA0NSAzOS4xOTc2OSwtNC42NDI3MjYzOSAzOS4wODAwNDU1LC00LjU2OTI3OTkgQzM4Ljc5NDYwMjYsLTQuMzkxMjY1NTMgMzguNTA5MTU5OCwtNC4yMTEzODM4NyAzOC4yMjYxOTM3LC00LjAyODM5MDA3IEMzNy45MTIyNjg1LC0zLjgyNjEwMSAzNy42MDg4Njk0LC0zLjYwODI1MTI0IDM3LjMwMDUxNjksLTMuMzk3MjQ4MTkgQzM2Ljk1OTM0NzcsLTMuMTYzMjE1MyAzNi42MTY5NDAxLC0yLjkzMTY3MjEzIDM2LjI3NzYyODUsLTIuNjk0NTI3MSBDMzUuNjQxMTA5NiwtMi4yNTEzNTg0NCAzNC45ODY2MzQ0LC0xLjgzNDMzMTc2IDM0LjM2MTI2MDcsLTEuMzc0OTc5OTggQzMzLjcwNTU0NzIsLTAuODkzODQzMjIgMzMuMDI3NTQzLC0wLjQ0NTA3MjcxMiAzMi4zNzE4Mjk1LDAuMDM2Njg2NDczMiBDMzEuNzA4Njg1NywwLjUyNDA0NzUxIDMxLjAzODExMTgsMS4wMDM5Mzk0MSAzMC4zNjM4MjI4LDEuNDc2MzYyMTggQzMwLjAyMjAzNDQsMS43MTU5OTY5MiAyOS42ODQ1ODAzLDEuOTYxMjMzNSAyOS4zNDU4ODc5LDIuMjA3MDkyNTIgQzI5LjAwOTA1MywyLjQ1MTA4NDI1IDI4LjY2NDE2ODcsMi42ODIwMDUgMjguMzE4NjY1MiwyLjkxNDE3MDYgQzI3Ljk2ODIwODMsMy4xNTA2OTMyIDI3LjYyNTgwMDgsMy40MDA5MDkyMSAyNy4yODE1MzU3LDMuNjQ1NTIzMzcgQzI2Ljk0NTMxOTksMy44ODU3ODA1NCAyNi42MDE2NzQsNC4xMTQ4MzQgMjYuMjU5MjY2NCw0LjM0ODI0NDQ2IEMyNS42MzY5ODg3LDQuNzcxNDk1NDIgMjUuMDA5NzU3NSw1LjE4OTc2Njk2IDI0LjM5MjQzMzIsNS42MjExMDk0OSBDMjMuNzgxMzAwOCw2LjA0OTk2MjMgMjMuMTU1MzA3OSw2LjQ1NTE2Mjg2IDIyLjU0NjY1MjIsNi44ODc3NTAyNCBDMjIuMjQ2MzQ5LDcuMTAxMjQzMDEgMjEuOTQwNDczMiw3LjMwNzI2NjY0IDIxLjY0MzI2NTksNy41MjUxMTY0IEMyMS4zNTIyNTA0LDcuNzM4NjA5MTYgMjEuMDcxMTQxOSw3Ljk2NzA0MDIgMjAuNzc4MjY4OSw4LjE3ODY2NTY4IEMyMC4xNDExMzA4LDguNjM5MjYyMzIgMTkuNDc5MjI1NCw5LjA2Njg3MDI4IDE4LjgwMDYwMjEsOS40NjI3MzQ0MiBDMTguNTkzNzk1NCw5LjU4Mjg2MyAxOC40NTI2MjE5LDkuODQ1NTI3NTcgMTguNDEyMzc1MSwxMC4wNzM5NTg2IEMxOC4zOTYyNzY0LDEwLjE2NjcwMDQgMTguMzkzNzk5NiwxMC4yNjEzMDk0IDE4LjQwNDk0NDksMTAuMzUyODA2MyBDMTguNDAyNDY4MiwxMC4zNTQ2NzM2IDE4LjM5OTk5MTUsMTAuMzU1OTE4NCAxOC4zOTc1MTQ3LDEwLjM1Nzc4NTcgQzE4LjE5MzgwMzksMTAuNTAwOTQ0MSAxOC4wNTMyNDk2LDEwLjcyMTkwNiAxOC4wMTA1MjYxLDEwLjk2OTAwOTkgQzE4LjAwNjgxMSwxMS4wNTM2NjAxIDE4LjAwMzcxNTEsMTEuMTM4MzEwMyAxOCwxMS4yMjI5NjA1IEMxOC4wMTY3MTc5LDExLjM4OTE0ODcgMTguMDcxODI1MSwxMS41NDAzOTg3IDE4LjE2NjU1OTksMTEuNjc3MzMyOCBDMTguNzMxODcyOSwxMi43MTY3ODc0IDE5LjI5NjU2NjgsMTMuNzU1NjE5NiAxOS45MDI3NDU4LDE0Ljc3MjA0NDMgWiIgaWQ9InBhdGgtMSI+PC9wYXRoPgogICAgICAgIDxmaWx0ZXIgeD0iLTIxLjklIiB5PSItMjUuMCUiIHdpZHRoPSIxNjIuNSUiIGhlaWdodD0iMTMzLjMlIiBmaWx0ZXJVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIGlkPSJmaWx0ZXItMiI+CiAgICAgICAgICAgIDxmZU9mZnNldCBkeD0iMyIgZHk9Ii01IiBpbj0iU291cmNlQWxwaGEiIHJlc3VsdD0ic2hhZG93T2Zmc2V0T3V0ZXIxIj48L2ZlT2Zmc2V0PgogICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIyLjUiIGluPSJzaGFkb3dPZmZzZXRPdXRlcjEiIHJlc3VsdD0ic2hhZG93Qmx1ck91dGVyMSI+PC9mZUdhdXNzaWFuQmx1cj4KICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdmFsdWVzPSIwIDAgMCAwIDAgICAwIDAgMCAwIDAgICAwIDAgMCAwIDAgIDAgMCAwIDAuMjE1OTE5Mzg0IDAiIHR5cGU9Im1hdHJpeCIgaW49InNoYWRvd0JsdXJPdXRlcjEiPjwvZmVDb2xvck1hdHJpeD4KICAgICAgICA8L2ZpbHRlcj4KICAgICAgICA8cGF0aCBkPSJNNC4zNDc2NTYyNSw5LjE1ODIwMzEyIEMzLjg2MzI3ODgzLDkuMTU4MjAzMTIgMy4zNzUwMDI0Niw4Ljk0NTMxNDYzIDIuODgyODEyNSw4LjUxOTUzMTI1IEwyLjc4MzIwMzEyLDkgTDEuMDYwNTQ2ODgsOSBMMi42ODk0NTMxMiwxLjM2NTIzNDM4IEw0LjQ2NDg0Mzc1LDEuMTMwODU5MzggTDMuMDIzNDM3NSw3Ljg1NzQyMTg4IEMzLjI0MjE4ODU5LDguMDE3NTc4OTMgMy40NzA3MDE5Myw4LjA5NzY1NjI1IDMuNzA4OTg0MzgsOC4wOTc2NTYyNSBDMy45Mzk0NTQyOCw4LjA5NzY1NjI1IDQuMTU5MTc4NjQsOC4wMjUzOTEzNSA0LjM2ODE2NDA2LDcuODgwODU5MzggQzQuNTc3MTQ5NDgsNy43MzYzMjc0IDQuNzY5NTMwMzcsNy41MzEyNTEzMyA0Ljk0NTMxMjUsNy4yNjU2MjUgQzUuMjY5NTMyODcsNi43NzczNDEzMSA1LjUzMzIwMjExLDYuMTA5Mzc5MjQgNS43MzYzMjgxMiw1LjI2MTcxODc1IEM1LjkxOTkyMjc5LDQuNDY4NzQ2MDQgNi4wMTE3MTg3NSwzLjY1NDMwMTA1IDYuMDExNzE4NzUsMi44MTgzNTkzOCBDNi4wMTE3MTg3NSwyLjAzNzEwNTQ3IDUuODUxNTY0MSwxLjQ1NTA4MDA0IDUuNTMxMjUsMS4wNzIyNjU2MiBDNS4yMzQzNzM1MiwwLjcyNDYwNzYzNyA0LjgxMDU0OTYzLDAuNTUwNzgxMjUgNC4yNTk3NjU2MiwwLjU1MDc4MTI1IEMzLjgxNDQ1MDksMC41NTA3ODEyNSAzLjQwMDM5MjU0LDAuNjE3MTg2ODM2IDMuMDE3NTc4MTIsMC43NSBDMi42MzQ3NjM3MSwwLjg4MjgxMzE2NCAyLjMwMjczNTc4LDEuMDc0MjE3NSAyLjAyMTQ4NDM4LDEuMzI0MjE4NzUgQzEuNzMyNDIwNDMsMS41ODIwMzI1NCAxLjUwOTc2NjQxLDEuODkyNTc2MzEgMS4zNTM1MTU2MiwyLjI1NTg1OTM4IEMxLjE5NzI2NDg0LDIuNjE5MTQyNDQgMS4xMTkxNDA2MiwzLjAyMzQzNTI3IDEuMTE5MTQwNjIsMy40Njg3NSBDMS4xMTkxNDA2MiwzLjcxODc1MTI1IDEuMTQ2NDg0MSwzLjkxNzk2ODAxIDEuMjAxMTcxODgsNC4wNjY0MDYyNSBDMS4yMTY3OTY5NSw0LjExNzE4Nzc1IDEuMjM2MzI4MDEsNC4xNjIxMDkxOCAxLjI1OTc2NTYyLDQuMjAxMTcxODggQzEuMjc1MzkwNyw0LjIyODUxNTc2IDEuMjgzMjAzMTIsNC4yNTU4NTkyNCAxLjI4MzIwMzEyLDQuMjgzMjAzMTIgQzAuODY1MjMyMjg1LDQuMjgzMjAzMTIgMC41NDY4NzYwOTQsNC4xOTYyODk5MyAwLjMyODEyNSw0LjAyMjQ2MDk0IEMwLjEwOTM3MzkwNiwzLjg0ODYzMTk0IDAsMy41NjQ0NTUxIDAsMy4xNjk5MjE4OCBDMCwyLjkwMDM4OTI4IDAuMDUyNzMzODQ3NywyLjYzMzc5MDM4IDAuMTU4MjAzMTI1LDIuMzcwMTE3MTkgQzAuMjYzNjcyNDAyLDIuMTA2NDQzOTkgMC40MTYwMTQ2MjksMS44NTU0Njk5NCAwLjYxNTIzNDM3NSwxLjYxNzE4NzUgQzAuODEwNTQ3ODUyLDEuMzgyODExMzMgMS4wNDU4OTcwNiwxLjE2Njk5MzE3IDEuMzIxMjg5MDYsMC45Njk3MjY1NjIgQzEuNTk2NjgxMDYsMC43NzI0NTk5NTEgMS44OTg0MzU4NiwwLjYwMTU2MzIyMyAyLjIyNjU2MjUsMC40NTcwMzEyNSBDMi45MjE4Nzg0OCwwLjE1MjM0MjIyNyAzLjY2Nzk2NDc3LDAgNC40NjQ4NDM3NSwwIEM1LjIwMzEyODY5LDAgNS44MjQyMTYyMywwLjE2MjEwNzc1NCA2LjMyODEyNSwwLjQ4NjMyODEyNSBDNi43ODkwNjQ4LDAuNzg3MTEwODc5IDcuMTMyODExMzcsMS4yMDUwNzU0NSA3LjM1OTM3NSwxLjc0MDIzNDM4IEM3LjU2NjQwNzI5LDIuMjQ4MDQ5NDEgNy42Njk5MjE4OCwyLjgyMDMwOTMyIDcuNjY5OTIxODgsMy40NTcwMzEyNSBDNy42Njk5MjE4OCwzLjkwNjI1MjI1IDcuNjI5ODgzMjEsNC4zNjEzMjU4MiA3LjU0OTgwNDY5LDQuODIyMjY1NjIgQzcuNDY5NzI2MTYsNS4yODMyMDU0MyA3LjM1NTQ2OTQ5LDUuNzI4NTEzNDggNy4yMDcwMzEyNSw2LjE1ODIwMzEyIEM3LjA1ODU5MzAxLDYuNTgwMDgwMjMgNi44ODE4MzY5Niw2Ljk3MzYzMDk5IDYuNjc2NzU3ODEsNy4zMzg4NjcxOSBDNi40NzE2Nzg2Niw3LjcwNDEwMzM5IDYuMjQ2MDk0OTgsOC4wMjE0ODMwMyA2LDguMjkxMDE1NjIgQzUuNzQ2MDkyNDgsOC41NjgzNjA3NiA1LjQ3OTQ5MzU4LDguNzgyMjI1ODEgNS4yMDAxOTUzMSw4LjkzMjYxNzE5IEM0LjkyMDg5NzA0LDkuMDgzMDA4NTYgNC42MzY3MjAyLDkuMTU4MjAzMTIgNC4zNDc2NTYyNSw5LjE1ODIwMzEyIFogTTkuMzU1NzE3MzYsMyBMMTEuMDg0MjMzLDMgTDEwLjkzMTg4OTIsMy43NDQxNDA2MiBDMTEuMjA1MzI4MSwzLjUwMTk1MTkxIDExLjQyNzk4MjEsMy4zMzAwNzg2MyAxMS41OTk4NTgsMy4yMjg1MTU2MiBDMTEuODY1NDg0MywzLjA3NjE3MTExIDEyLjEyNTI0NzMsMyAxMi4zNzkxNTQ5LDMgQzEyLjYzNjk2ODcsMyAxMi44NDM5OTc4LDMuMDkxNzk1OTYgMTMuMDAwMjQ4NiwzLjI3NTM5MDYyIEMxMy4wNzA1NjE1LDMuMzU3NDIyMjkgMTMuMTIzMjk1MywzLjQ1MjE0NzkgMTMuMTU4NDUxNywzLjU1OTU3MDMxIEMxMy4xOTM2MDgyLDMuNjY2OTkyNzIgMTMuMjExMTg2MSwzLjc4MTI0OTM5IDEzLjIxMTE4NjEsMy45MDIzNDM3NSBDMTMuMjExMTg2MSw0LjAxMTcxOTMgMTMuMTkzNjA4Miw0LjExNzE4Njk5IDEzLjE1ODQ1MTcsNC4yMTg3NSBDMTMuMTIzMjk1Myw0LjMyMDMxMzAxIDEzLjA3MDU2MTUsNC40MTIxMDg5NiAxMy4wMDAyNDg2LDQuNDk0MTQwNjIgQzEyLjkyMjEyMzIsNC41ODAwNzg1NSAxMi44MjczOTc2LDQuNjQ4NDM3MjUgMTIuNzE2MDY4OSw0LjY5OTIxODc1IEMxMi42MDQ3NDAyLDQuNzUwMDAwMjUgMTIuNDgwNzE4LDQuNzc1MzkwNjIgMTIuMzQzOTk4Niw0Ljc3NTM5MDYyIEMxMi4yMzg1MjkzLDQuNzc1MzkwNjIgMTIuMTU0NTQ1OCw0Ljc1NzgxMjY4IDEyLjA5MjA0NTUsNC43MjI2NTYyNSBDMTIuMDI5NTQ1Miw0LjY4NzQ5OTgyIDExLjk4MDcxNzUsNC42MzY3MTkwOCAxMS45NDU1NjExLDQuNTcwMzEyNSBDMTEuOTE0MzExLDQuNTAzOTA1OTIgMTEuODkyODI2OCw0LjQzOTQ1MzQ0IDExLjg4MTEwOCw0LjM3Njk1MzEyIEMxMS44NDU5NTE2LDQuMjA4OTgzNTQgMTEuODEwNzk1Nyw0LjA5NzY1NjUyIDExLjc3NTYzOTIsNC4wNDI5Njg3NSBDMTEuNzQ4Mjk1Myw0LjAwMzkwNjA1IDExLjcwNTMyNywzLjk4NDM3NSAxMS42NDY3MzMsMy45ODQzNzUgQzExLjQ3ODc2MzQsMy45ODQzNzUgMTEuMzM2MTg2Nyw0LjAxOTUzMDkgMTEuMjE4OTk4Niw0LjA4OTg0Mzc1IEMxMS4xMDE4MTA1LDQuMTYwMTU2NiAxMC45NTMzNzQ1LDQuMjc3MzQyOTMgMTAuNzczNjg2MSw0LjQ0MTQwNjI1IEw5LjgxMjc0ODYxLDkgTDguMDg0MjMyOTksOSBMOS4zNTU3MTczNiwzIFogTTE1LjE0ODkzNDcsOS4wNzAzMTI1IEMxNC42OTE5MDEyLDkuMDcwMzEyNSAxNC4zMjI3NjQzLDguOTI3NzM1OCAxNC4wNDE1MTI4LDguNjQyNTc4MTIgQzEzLjcxMzM4NjIsOC4zMDY2Mzg5NSAxMy41NDkzMjUzLDcuODA2NjQzOTUgMTMuNTQ5MzI1Myw3LjE0MjU3ODEyIEMxMy41NDkzMjUzLDYuODYxMzI2NzIgMTMuNTc3NjQ1NCw2LjU2NDQ1NDY5IDEzLjYzNDI4NjMsNi4yNTE5NTMxMiBDMTMuNjkwOTI3Miw1LjkzOTQ1MTU2IDEzLjc3MzkzNDIsNS42MzA4NjA5IDEzLjg4MzMwOTcsNS4zMjYxNzE4OCBDMTQuMTMzMzExLDQuNjM4NjY4NDQgMTQuNDc1MTA0NCw0LjA4Mzk4NjQ4IDE0LjkwODcwMDMsMy42NjIxMDkzOCBDMTUuNDA4NzAyOCwzLjE4MTYzODIyIDE1Ljk4NDg2OSwyLjk0MTQwNjI1IDE2LjYzNzIxNiwyLjk0MTQwNjI1IEMxNi45NjE0MzYzLDIuOTQxNDA2MjUgMTcuMjA0NTk4LDIuOTk3MDY5NzYgMTcuMzY2NzA4MiwzLjEwODM5ODQ0IEMxNy41Mjg4MTgzLDMuMjE5NzI3MTIgMTcuNjA5ODcyMiwzLjM2NzE4NjU4IDE3LjYwOTg3MjIsMy41NTA3ODEyNSBMMTcuNjA5ODcyMiwzLjYzODY3MTg4IEwxNy43Mzg3Nzg1LDMgTDE5LjQ2NzI5NDEsMyBMMTguNjA1OTY2LDcuMDc4MTI1IEMxOC41NzA4MDk1LDcuMTk1MzEzMDkgMTguNTUzMjMxNiw3LjMyNDIxODA1IDE4LjU1MzIzMTYsNy40NjQ4NDM3NSBDMTguNTUzMjMxNiw3LjgwODU5NTQ3IDE4LjcxNzI5MjUsNy45ODA0Njg3NSAxOS4wNDU0MTkxLDcuOTgwNDY4NzUgQzE5LjI2NDE3MDIsNy45ODA0Njg3NSAxOS40NjMzODY5LDcuODY5MTQxNzQgMTkuNjQzMDc1Myw3LjY0NjQ4NDM4IEMxOS43OTU0MTk5LDcuNDU4OTgzNDQgMTkuOTIwNDE4Niw3LjE5MzM2MTA5IDIwLjAxODA3NTMsNi44NDk2MDkzOCBMMjAuNTIxOTgxNiw2Ljg0OTYwOTM4IEMyMC4zMDcxMzY4LDcuNDU4OTg3NDIgMjAuMDQ3MzczNyw3Ljk0MTQwNDQ3IDE5Ljc0MjY4NDcsOC4yOTY4NzUgQzE5LjQ4NDg3MDksOC41ODk4NDUyMSAxOS4xOTM4NTgyLDguODAwNzgwNjEgMTguODY5NjM3OCw4LjkyOTY4NzUgQzE4LjYzMTM1NTQsOS4wMjM0Mzc5NyAxOC4zNzk0MDQ4LDkuMDcwMzEyNSAxOC4xMTM3Nzg1LDkuMDcwMzEyNSBDMTcuNzczOTMzLDkuMDcwMzEyNSAxNy41MDM0Mjc5LDguOTc3NTM5OTkgMTcuMzAyMjU1LDguNzkxOTkyMTkgQzE3LjEwMTA4MjIsOC42MDY0NDQzOCAxNi45NzkwMTMxLDguMzMyMDMzMDcgMTYuOTM2MDQ0MSw3Ljk2ODc1IEMxNi43MDk0ODA1LDguMjg5MDY0MSAxNi40NzEyMDE2LDguNTM5MDYxNiAxNi4yMjEyMDAzLDguNzE4NzUgQzE1LjkwMDg4NjIsOC45NTMxMjYxNyAxNS41NDM0Njc5LDkuMDcwMzEyNSAxNS4xNDg5MzQ3LDkuMDcwMzEyNSBaIE0xNS45MjgyMzE2LDcuOTEwMTU2MjUgQzE2LjAxODA3NTgsNy45MTAxNTYyNSAxNi4xMTI4MDE0LDcuODg2NzE4OTggMTYuMjEyNDExMyw3LjgzOTg0Mzc1IEMxNi4zMTIwMjEyLDcuNzkyOTY4NTIgMTYuNDA4Njk5OSw3LjcyNjU2MjkzIDE2LjUwMjQ1MDMsNy42NDA2MjUgQzE2LjcxMzM4ODksNy40Mzc0OTg5OCAxNi44NTQwMTI1LDcuMTczODI5NzUgMTYuOTI0MzI1Myw2Ljg0OTYwOTM4IEwxNy40OTg1NDQxLDQuMTQyNTc4MTIgQzE3LjQ5ODU0NDEsNC4xMDM1MTU0MyAxNy40ODk3NTUxLDQuMDU3NjE3NDUgMTcuNDcyMTc2OSw0LjAwNDg4MjgxIEMxNy40NTQ1OTg3LDMuOTUyMTQ4MTcgMTcuNDMwMTg0OSwzLjkwMjM0Mzk4IDE3LjM5ODkzNDcsMy44NTU0Njg3NSBDMTcuMzA1MTg0MywzLjc0MjE4NjkzIDE3LjE3NDMyNjIsMy42ODU1NDY4OCAxNy4wMDYzNTY2LDMuNjg1NTQ2ODggQzE2Ljg0NjE5OTUsMy42ODU1NDY4OCAxNi42OTA5Mjc3LDMuNzM4MjgwNzIgMTYuNTQwNTM2MywzLjg0Mzc1IEMxNi4zOTAxNDQ5LDMuOTQ5MjE5MjggMTYuMjQ4NTQ0OCw0LjA5NTcwMjE5IDE2LjExNTczMTYsNC4yODMyMDMxMiBDMTUuODgxMzU1NCw0LjYyMzA0ODU3IDE1LjY4Nzk5OCw1LjA2NjQwMzUyIDE1LjUzNTY1MzUsNS42MTMyODEyNSBDMTUuNDY1MzQwNiw1Ljg1NTQ2OTk2IDE1LjQxMjYwNjgsNi4wOTQ3MjUzOCAxNS4zNzc0NTAzLDYuMzMxMDU0NjkgQzE1LjM0MjI5MzksNi41NjczODM5OSAxNS4zMjQ3MTYsNi43ODEyNDkwNCAxNS4zMjQ3MTYsNi45NzI2NTYyNSBDMTUuMzI0NzE2LDcuMzcxMDk1NzQgMTUuMzk4OTM0LDcuNjQwNjI0MyAxNS41NDczNzIyLDcuNzgxMjUgQzE1LjU5ODE1MzcsNy44MzU5Mzc3NyAxNS42NTQ3OTM4LDcuODcxMDkzNjcgMTUuNzE3Mjk0MSw3Ljg4NjcxODc1IEMxNS43Nzk3OTQ0LDcuOTAyMzQzODMgMTUuODUwMTA2Miw3LjkxMDE1NjI1IDE1LjkyODIzMTYsNy45MTAxNTYyNSBaIE0yMi43OTM3MTQ2LDEyIEMyMi42MDYyMTM2LDEyIDIyLjQzMTQxMDcsMTEuOTc1NTg2MiAyMi4yNjkzMDA1LDExLjkyNjc1NzggQzIyLjEwNzE5MDMsMTEuODc3OTI5NCAyMS45Njc1NDMzLDExLjgwNDY4OCAyMS44NTAzNTUyLDExLjcwNzAzMTIgQzIxLjcyNTM1NDYsMTEuNjA5Mzc0NSAyMS42Mjc2OTkzLDExLjQ4NzMwNTQgMjEuNTU3Mzg2NSwxMS4zNDA4MjAzIEMyMS40ODcwNzM2LDExLjE5NDMzNTIgMjEuNDUxOTE3NywxMS4wMjUzOTE2IDIxLjQ1MTkxNzcsMTAuODMzOTg0NCBDMjEuNDUxOTE3NywxMC4zODA4NTcxIDIxLjY2NDgwNjIsOS45OTIxODkxMiAyMi4wOTA1ODk2LDkuNjY3OTY4NzUgQzIyLjQxMDkwMzcsOS40Mjk2ODYzMSAyMi44NTAzNTI0LDkuMjIyNjU3MTMgMjMuNDA4OTQ5LDkuMDQ2ODc1IEwyMy41NTU0MzMzLDguNDE0MDYyNSBDMjMuMTQ1Mjc1LDguODUxNTY0NjkgMjIuNjY0ODExMSw5LjA3MDMxMjUgMjIuMTE0MDI3MSw5LjA3MDMxMjUgQzIxLjY1Njk5MzUsOS4wNzAzMTI1IDIxLjI4Nzg1NjYsOC45Mjc3MzU4IDIxLjAwNjYwNTIsOC42NDI1NzgxMiBDMjAuNjc4NDc4Niw4LjMwNjYzODk1IDIwLjUxNDQxNzcsNy44MDY2NDM5NSAyMC41MTQ0MTc3LDcuMTQyNTc4MTIgQzIwLjUxNDQxNzcsNi44NjEzMjY3MiAyMC41NDI3Mzc3LDYuNTY0NDU0NjkgMjAuNTk5Mzc4Niw2LjI1MTk1MzEyIEMyMC42NTYwMTk2LDUuOTM5NDUxNTYgMjAuNzM5MDI2NSw1LjYzMDg2MDkgMjAuODQ4NDAyMSw1LjMyNjE3MTg4IEMyMS4wOTg0MDMzLDQuNjM4NjY4NDQgMjEuNDQwMTk2OCw0LjA4Mzk4NjQ4IDIxLjg3Mzc5MjcsMy42NjIxMDkzOCBDMjIuMzczNzk1MiwzLjE4MTYzODIyIDIyLjk0OTk2MTMsMi45NDE0MDYyNSAyMy42MDIzMDgzLDIuOTQxNDA2MjUgQzIzLjkyNjUyODcsMi45NDE0MDYyNSAyNC4xNjk2OTAzLDIuOTk3MDY5NzYgMjQuMzMxODAwNSwzLjEwODM5ODQ0IEMyNC40OTM5MTA3LDMuMjE5NzI3MTIgMjQuNTc0OTY0NiwzLjM2NzE4NjU4IDI0LjU3NDk2NDYsMy41NTA3ODEyNSBMMjQuNTc0OTY0NiwzLjYyMTA5Mzc1IEwyNC43MDM4NzA4LDMgTDI2LjQzMjM4NjUsMyBMMjUuMjQyOTMzMyw4LjU2NjQwNjI1IEMyNS42MjE4NDE1LDguNDQxNDA1NjMgMjUuOTI0NTcyOCw4LjI1MzkwNzUgMjYuMTUxMTM2NSw4LjAwMzkwNjI1IEMyNi4zOTcyMzE0LDcuNzM0MzczNjUgMjYuNTk4NDAxMyw3LjM0OTYxMTg3IDI2Ljc1NDY1MjEsNi44NDk2MDkzOCBMMjcuMjU4NTU4Myw2Ljg0OTYwOTM4IEMyNy4wNDM3MTM1LDcuNTYwNTUwNDMgMjYuNzIzNDA0Miw4LjEwOTM3MzA3IDI2LjI5NzYyMDgsOC40OTYwOTM3NSBDMjUuOTg1MTE5Myw4Ljc3NzM0NTE2IDI1LjU5ODQwNDQsOC45NzY1NjE5MSAyNS4xMzc0NjQ2LDkuMDkzNzUgTDI0Ljk1NTgyNCw5Ljk2MDkzNzUgQzI0LjgwMzQ3OTQsMTAuNzI2NTY2MyAyNC40OTg3OTUsMTEuMjgxMjQ4MyAyNC4wNDE3NjE1LDExLjYyNSBDMjMuNzA5NzI4NSwxMS44NzUwMDEyIDIzLjI5MzcxNzEsMTIgMjIuNzkzNzE0NiwxMiBaIE0yMi44OTMzMjQsNy45MTAxNTYyNSBDMjMuMDY1MTk5OCw3LjkxMDE1NjI1IDIzLjI0NjgzODYsNy44MzAwNzg5MyAyMy40MzgyNDU4LDcuNjY5OTIxODggQzIzLjY0NTI3ODEsNy40OTAyMzM0OCAyMy43ODM5NDg2LDcuMjU3ODEzOTMgMjMuODU0MjYxNSw2Ljk3MjY1NjI1IEwyNC40NjM2MzY1LDQuMTMwODU5MzggQzI0LjQ2MzYzNjUsNC4wOTE3OTY2OCAyNC40NTQ4NDc1LDQuMDQ2ODc1MjUgMjQuNDM3MjY5MywzLjk5NjA5Mzc1IEMyNC40MTk2OTExLDMuOTQ1MzEyMjUgMjQuMzk1Mjc3MiwzLjg5ODQzNzcxIDI0LjM2NDAyNzEsMy44NTU0Njg3NSBDMjQuMjcwMjc2NiwzLjc0MjE4NjkzIDI0LjEzOTQxODUsMy42ODU1NDY4OCAyMy45NzE0NDksMy42ODU1NDY4OCBDMjMuODExMjkxOSwzLjY4NTU0Njg4IDIzLjY1NjAyLDMuNzM4MjgwNzIgMjMuNTA1NjI4NiwzLjg0Mzc1IEMyMy4zNTUyMzczLDMuOTQ5MjE5MjggMjMuMjEzNjM3MSw0LjA5NTcwMjE5IDIzLjA4MDgyNCw0LjI4MzIwMzEyIEMyMi44NDY0NDc4LDQuNjIzMDQ4NTcgMjIuNjUzMDkwMyw1LjA2NjQwMzUyIDIyLjUwMDc0NTgsNS42MTMyODEyNSBDMjIuNDMwNDMzLDUuODU1NDY5OTYgMjIuMzc3Njk5MSw2LjA5NDcyNTM4IDIyLjM0MjU0MjcsNi4zMzEwNTQ2OSBDMjIuMzA3Mzg2Myw2LjU2NzM4Mzk5IDIyLjI4OTgwODMsNi43ODEyNDkwNCAyMi4yODk4MDgzLDYuOTcyNjU2MjUgQzIyLjI4OTgwODMsNy4zNzEwOTU3NCAyMi4zNjQwMjYzLDcuNjQwNjI0MyAyMi41MTI0NjQ2LDcuNzgxMjUgQzIyLjU2MzI0NjEsNy44MzU5Mzc3NyAyMi42MTk4ODYxLDcuODcxMDkzNjcgMjIuNjgyMzg2NSw3Ljg4NjcxODc1IEMyMi43NDQ4ODY4LDcuOTAyMzQzODMgMjIuODE1MTk4Niw3LjkxMDE1NjI1IDIyLjg5MzMyNCw3LjkxMDE1NjI1IFogTTIyLjUxODMyNCwxMS4wNjI1IEMyMi42NDMzMjQ2LDExLjA2MjUgMjIuNzcyMjI5NSwxMC45NzQ2MTAzIDIyLjkwNTA0MjcsMTAuNzk4ODI4MSBDMjMuMDM3ODU1OSwxMC42MjY5NTIzIDIzLjE0MTM3MDUsMTAuMzU5Mzc2OCAyMy4yMTU1ODk2LDkuOTk2MDkzNzUgTDIzLjI4NTkwMjEsOS42NTAzOTA2MiBDMjIuOTIyNjE5LDkuNzg3MTEwMDYgMjIuNjUxMTM3NCw5LjkyNTc4MDU1IDIyLjQ3MTQ0OSwxMC4wNjY0MDYyIEMyMi4yMzMxNjY1LDEwLjI0NjA5NDYgMjIuMTE0MDI3MSwxMC40NDcyNjQ1IDIyLjExNDAyNzEsMTAuNjY5OTIxOSBDMjIuMTE0MDI3MSwxMC43NzUzOTEyIDIyLjE0NzIyOTksMTAuODYzMjgwOSAyMi4yMTM2MzY1LDEwLjkzMzU5MzggQzIyLjI4Nzg1NTYsMTEuMDE5NTMxNyAyMi4zODk0MTcxLDExLjA2MjUgMjIuNTE4MzI0LDExLjA2MjUgWiBNMzMuNDQ4NTA4NywwLjk4NDM3NSBDMzMuMjAyNDEzNywwLjk5MjE4NzUzOSAzMi45ODY1OTU1LDEuMDM4MDg1NTIgMzIuODAxMDQ3NywxLjEyMjA3MDMxIEMzMi42MTU0OTk5LDEuMjA2MDU1MTEgMzIuNDU2MzIxOCwxLjMzNzg4OTczIDMyLjMyMzUwODcsMS41MTc1NzgxMiBDMzIuMDM0NDQ0NywxLjkxMjExMTM1IDMxLjg4OTkxNDksMi41NjI0OTU0NyAzMS44ODk5MTQ5LDMuNDY4NzUgQzMxLjg4OTkxNDksMy43MjY1NjM3OSAzMS45MTkyMTE1LDMuOTI1NzgwNTUgMzEuOTc3ODA1Niw0LjA2NjQwNjI1IEMzMS45OTM0MzA2LDQuMTE3MTg3NzUgMzIuMDEyOTYxNyw0LjE2MjEwOTE4IDMyLjAzNjM5OTMsNC4yMDExNzE4OCBDMzIuMDUyMDI0NCw0LjIyODUxNTc2IDMyLjA1OTgzNjgsNC4yNTU4NTkyNCAzMi4wNTk4MzY4LDQuMjgzMjAzMTIgQzMxLjYzMDE0NzIsNC4yODMyMDMxMiAzMS4zMTE3OTEsNC4xOTcyNjY0OCAzMS4xMDQ3NTg3LDQuMDI1MzkwNjIgQzMwLjg4MjEwMTMsMy44Mzc4ODk2OSAzMC43NzA3NzQzLDMuNTM1MTU4MzQgMzAuNzcwNzc0MywzLjExNzE4NzUgQzMwLjc3MDc3NDMsMi43MDMxMjI5MyAzMC44NDc5MjIsMi4zMTA1NDg3MyAzMS4wMDIyMTk2LDEuOTM5NDUzMTIgQzMxLjE1NjUxNzMsMS41NjgzNTc1MiAzMS4zOTE4NjY1LDEuMjQyMTg4OTEgMzEuNzA4Mjc0MywwLjk2MDkzNzUgQzMyLjA0ODExOTgsMC42NTYyNDg0NzcgMzIuNDgwNzMyNiwwLjQxOTkyMjcxNSAzMy4wMDYxMjU5LDAuMjUxOTUzMTI1IEMzMy41MzE1MTkxLDAuMDgzOTgzNTM1MiAzNC4xNTE2MzAxLDAgMzQuODY2NDc3NCwwIEMzNS4wMDMxOTY5LDAgMzUuMTM5OTE0MiwwLjAwNzgxMjQyMTg4IDM1LjI3NjYzMzcsMC4wMjM0Mzc1IEwzNS41ODEzMjEyLDAuMDUyNzM0Mzc1IEMzNS45NDQ2MDQyLDAuMDkxNzk3MDcwMyAzNi4xODA5MywwLjExNTIzNDMzNiAzNi4yOTAzMDU2LDAuMTIzMDQ2ODc1IEMzNi40NTgyNzUxLDAuMTM4NjcxOTUzIDM2LjY0NzcyNjQsMC4xNDY0ODQzNzUgMzYuODU4NjY0OSwwLjE0NjQ4NDM3NSBDMzcuMjg0NDQ4MywwLjE0NjQ4NDM3NSAzNy42NDM4MTk3LDAuMDk3NjU2NzM4MyAzNy45MzY3ODk5LDAgQzM3LjkwMTYzMzUsMC4xMDE1NjMwMDggMzcuODY0NTI0NSwwLjIzNjMyNzI4NSAzNy44MjU0NjE4LDAuNDA0Mjk2ODc1IEMzNy43Mzk1MjM5LDAuNzQwMjM2MDU1IDM3LjU3OTM2OTIsMS4wMDU4NTg0IDM3LjM0NDk5MzEsMS4yMDExNzE4OCBDMzcuMjA4MjczNiwxLjMxNDQ1MzY5IDM3LjAyNjYzNDgsMS4zOTQ1MzEwMiAzNi44MDAwNzEyLDEuNDQxNDA2MjUgQzM2LjMxNTY5MzgsMS40NDE0MDYyNSAzNS43NTUxNTI1LDEuMzY1MjM1MTQgMzUuMTE4NDMwNiwxLjIxMjg5MDYyIEwzNC42MTQ1MjQzLDMuNTk3NjU2MjUgTDM2LjM2NjQ3NzQsMy41OTc2NTYyNSBMMzYuMTczMTE4MSw0LjQ4ODI4MTI1IEwzNC40MjExNjQ5LDQuNDg4MjgxMjUgTDMzLjQ0ODUwODcsOSBMMzEuNzE5OTkzMSw5IEwzMy40NDg1MDg3LDAuOTg0Mzc1IFogTTM4LjU3OTYxNjcsOS4wNDY4NzUgQzM3Ljk4NTg2MzcsOS4wNDY4NzUgMzcuNTI2ODgzOSw4LjkwMjM0NTIgMzcuMjAyNjYzNSw4LjYxMzI4MTI1IEMzNi44MzkzODA1LDguMjkyOTY3MTUgMzYuNjU3NzQxNyw3LjgwNjY0Mzg5IDM2LjY1Nzc0MTcsNy4xNTQyOTY4OCBDMzYuNjU3NzQxNyw2LjkwODIwMTg5IDM2LjY4MzEzMiw2LjYzNTc0MzY4IDM2LjczMzkxMzUsNi4zMzY5MTQwNiBDMzYuNzg0Njk1LDYuMDM4MDg0NDQgMzYuODYyODE5Myw1LjczNjMyOTY1IDM2Ljk2ODI4ODUsNS40MzE2NDA2MiBDMzcuMjEwNDc3Myw0LjcwNTA3NDQ5IDM3LjU1NjE3NjksNC4xMjUwMDIxNyAzOC4wMDUzOTc5LDMuNjkxNDA2MjUgQzM4LjU0ODM2OTQsMy4xNjAxNTM1OSAzOS4xOTQ4NDczLDIuODk0NTMxMjUgMzkuOTQ0ODUxLDIuODk0NTMxMjUgQzQwLjk3MjE5OTksMi44OTQ1MzEyNSA0MS40ODU4NjY3LDMuNTMzMTk2NzQgNDEuNDg1ODY2Nyw0LjgxMDU0Njg4IEw0MS40ODU4NjY3LDQuODIyMjY1NjIgQzQxLjUwOTMwNDMsNC44MzAwNzgxNiA0MS41Mjg4MzUzLDQuODMzOTg0MzggNDEuNTQ0NDYwNCw0LjgzMzk4NDM4IEw0MS42MTQ3NzI5LDQuODMzOTg0MzggQzQxLjg4MDM5OTIsNC44MzM5ODQzOCA0Mi4xOTQ4NDkyLDQuNzU5NzY2MzcgNDIuNTU4MTMyMyw0LjYxMTMyODEyIEM0Mi44Nzg0NDY0LDQuNDc4NTE0OTYgNDMuMTgxMTc3Nyw0LjMxMjUwMSA0My40NjYzMzU0LDQuMTEzMjgxMjUgTDQzLjU3MTgwNDIsNC40NDE0MDYyNSBDNDMuMzM3NDI4LDQuNjg3NTAxMjMgNDMuMDM1NjczMiw0Ljg5NjQ4MzUyIDQyLjY2NjUzMDcsNS4wNjgzNTkzOCBDNDIuMjk3Mzg4Myw1LjI0MDIzNTIzIDQxLjg5MDE2NTgsNS4zNjMyODA4OCA0MS40NDQ4NTEsNS40Mzc1IEM0MS4zOTc5NzU4LDUuOTgwNDcxNDYgNDEuMjkyNTA4MSw2LjQ3NTU4MzcgNDEuMTI4NDQ0OCw2LjkyMjg1MTU2IEM0MC45NjQzODE1LDcuMzcwMTE5NDIgNDAuNzUzNDQ2MSw3Ljc1MzkwNDY1IDQwLjQ5NTYzMjMsOC4wNzQyMTg3NSBDNDAuMjQxNzI0OCw4LjM4NjcyMDMxIDM5Ljk1MDcxMjEsOC42MjY5NTIyOSAzOS42MjI1ODU0LDguNzk0OTIxODggQzM5LjI5NDQ1ODgsOC45NjI4OTE0NiAzOC45NDY4MDYsOS4wNDY4NzUgMzguNTc5NjE2Nyw5LjA0Njg3NSBaIE0zOS4wNjAwODU0LDcuOTY4NzUgQzM5LjIwMDcxMTEsNy45Njg3NSAzOS4zNDQyNjQ0LDcuOTA1Mjc0MDcgMzkuNDkwNzQ5NSw3Ljc3ODMyMDMxIEMzOS42MzcyMzQ2LDcuNjUxMzY2NTUgMzkuNzc0OTI4NSw3LjQ3NDYxMDUxIDM5LjkwMzgzNTQsNy4yNDgwNDY4OCBDNDAuMDMyNzQyMyw3LjAyMTQ4MzI0IDQwLjE0NDA2OTMsNi43NTU4NjA5IDQwLjIzNzgxOTgsNi40NTExNzE4OCBDNDAuMzMxNTcwMyw2LjE0NjQ4Mjg1IDQwLjQwMTg4MjEsNS44MjAzMTQyNCA0MC40NDg3NTczLDUuNDcyNjU2MjUgQzQwLjMzMTU2OTIsNS40NDE0MDYwOSA0MC4yNDg1NjIyLDUuMzgyODEyOTMgNDAuMTk5NzMzOSw1LjI5Njg3NSBDNDAuMTUwOTA1NSw1LjIxMDkzNzA3IDQwLjEyNjQ5MTcsNS4xMDE1NjMxNiA0MC4xMjY0OTE3LDQuOTY4NzUgQzQwLjEyNjQ5MTcsNC44MDQ2ODY2OCA0MC4xNTk2OTQ1LDQuNjY3OTY5MyA0MC4yMjYxMDEsNC41NTg1OTM3NSBDNDAuMjkyNTA3Niw0LjQ0OTIxODIgNDAuMzg0MzAzNiw0LjM2OTE0MDg4IDQwLjUwMTQ5MTcsNC4zMTgzNTkzOCBDNDAuNDg1ODY2Niw0LjA2NDQ1MTg2IDQwLjQ0NDg1MTQsMy44ODI4MTMwNSA0MC4zNzg0NDQ4LDMuNzczNDM3NSBDNDAuMzQzMjg4NCwzLjcxODc0OTczIDQwLjI5OTM0MzUsMy42Nzk2ODc2MiA0MC4yNDY2MDg5LDMuNjU2MjUgQzQwLjE5Mzg3NDIsMy42MzI4MTIzOCA0MC4xMjY0OTIxLDMuNjIxMDkzNzUgNDAuMDQ0NDYwNCwzLjYyMTA5Mzc1IEMzOS43NzQ5Mjc4LDMuNjIxMDkzNzUgMzkuNTExMjU4NiwzLjgyNDIxNjcyIDM5LjI1MzQ0NDgsNC4yMzA0Njg3NSBDMzkuMDE1MTYyMyw0LjU5NzY1ODA5IDM4LjgxOTg1MTgsNS4wNTA3Nzg1NSAzOC42Njc1MDczLDUuNTg5ODQzNzUgQzM4LjUxOTA2OSw2LjExNzE5MDE0IDM4LjQ0NDg1MSw2LjU4NTkzNTQ1IDM4LjQ0NDg1MSw2Ljk5NjA5Mzc1IEMzOC40NDQ4NTEsNy4xOTUzMTM1IDM4LjQ1NTU5MzEsNy4zNTc0MjEyNSAzOC40NzcwNzc2LDcuNDgyNDIxODggQzM4LjQ5ODU2MjEsNy42MDc0MjI1IDM4LjUzNDY5NDUsNy43MDUwNzc3NyAzOC41ODU0NzYsNy43NzUzOTA2MiBDMzguNjMyMzUxMyw3Ljg0NTcwMzQ4IDM4LjY5Mjg5NzUsNy44OTU1MDc2NyAzOC43NjcxMTY3LDcuOTI0ODA0NjkgQzM4Ljg0MTMzNTgsNy45NTQxMDE3MSAzOC45Mzg5OTExLDcuOTY4NzUgMzkuMDYwMDg1NCw3Ljk2ODc1IFogTTQ0LjQ2NjU4NCw5LjA3MDMxMjUgQzQzLjg3NjczNzMsOS4wNzAzMTI1IDQzLjQyMTY2MzgsOC45MjE4NzY0OCA0My4xMDEzNDk3LDguNjI1IEM0Mi43NjE1MDQyLDguMzA4NTkyMTcgNDIuNTkxNTg0LDcuODIyMjY4OTEgNDIuNTkxNTg0LDcuMTY2MDE1NjIgQzQyLjU5MTU4NCw2LjkxOTkyMDY0IDQyLjYxNTk5NzgsNi42NDU1MDkzMyA0Mi42NjQ4MjYyLDYuMzQyNzczNDQgQzQyLjcxMzY1NDYsNi4wNDAwMzc1NSA0Mi43ODg4NDkxLDUuNzM4MjgyNzUgNDIuODkwNDEyMiw1LjQzNzUgQzQzLjEyODY5NDYsNC43MDcwMjc2IDQzLjQ2NjU4MTgsNC4xMjUwMDIxNyA0My45MDQwODQsMy42OTE0MDYyNSBDNDQuNDQzMTQ5MiwzLjE2MDE1MzU5IDQ1LjA4MTgxNDcsMi44OTQ1MzEyNSA0NS44MjAwOTk3LDIuODk0NTMxMjUgQzQ2LjMwMDU3MDgsMi44OTQ1MzEyNSA0Ni42NTYwMzYsMy4wMDk3NjQ0NyA0Ni44ODY1MDU5LDMuMjQwMjM0MzggQzQ3LjA2NjE5NDMsMy40MjM4MjkwNCA0Ny4xNTYwMzcyLDMuNjc1Nzc5NjUgNDcuMTU2MDM3MiwzLjk5NjA5Mzc1IEM0Ny4xNTYwMzcyLDQuMjc3MzQ1MTYgNDcuMDkzNTM3OCw0LjQ5NjA5Mjk3IDQ2Ljk2ODUzNzIsNC42NTIzNDM3NSBDNDYuODUxMzQ5MSw0Ljc5Njg3NTcyIDQ2LjcwMDk1OTksNC44NjkxNDA2MiA0Ni41MTczNjUzLDQuODY5MTQwNjIgQzQ2LjM4NDU1MjEsNC44NjkxNDA2MiA0Ni4yNDM5Mjg1LDQuODIyMjY2MDkgNDYuMDk1NDkwMyw0LjcyODUxNTYyIEM0Ni4xOTMxNDcsNC40NzQ2MDgxMSA0Ni4yNDE5NzQ3LDQuMjM4MjgyMzQgNDYuMjQxOTc0Nyw0LjAxOTUzMTI1IEM0Ni4yNDE5NzQ3LDMuODY3MTg2NzQgNDYuMjEzNjU0NiwzLjc0NzA3MDc1IDQ2LjE1NzAxMzcsMy42NTkxNzk2OSBDNDYuMTAwMzcyOCwzLjU3MTI4ODYyIDQ2LjAxNzM2NTgsMy41MjczNDM3NSA0NS45MDc5OTAzLDMuNTI3MzQzNzUgQzQ1LjY3MzYxNDEsMy41MjczNDM3NSA0NS40Mjk0NzU5LDMuNzM0MzcyOTMgNDUuMTc1NTY4NCw0LjE0ODQzNzUgQzQ0Ljk0NTA5ODUsNC41MTU2MjY4NCA0NC43NTM2OTQyLDQuOTgyNDE5MDQgNDQuNjAxMzQ5Nyw1LjU0ODgyODEyIEM0NC40NDUwOTg5LDYuMTAzNTE4NCA0NC4zNjY5NzQ3LDYuNjA1NDY2NSA0NC4zNjY5NzQ3LDcuMDU0Njg3NSBDNDQuMzY2OTc0Nyw3LjQ0NTMxNDQ1IDQ0LjQ0MTE5MjcsNy43MTQ4NDMwMSA0NC41ODk2MzA5LDcuODYzMjgxMjUgQzQ0LjcxODUzNzgsNy45OTYwOTQ0MSA0NC45MzMzNzk0LDguMDYyNSA0NS4yMzQxNjIyLDguMDYyNSBDNDUuNjY3NzU4MSw4LjA2MjUgNDYuMDY0MjM4NSw3Ljk0NTMxMzY3IDQ2LjQyMzYxNTMsNy43MTA5Mzc1IEM0Ni41NzU5NTk4LDcuNjEzMjgwNzYgNDYuNzIyNDQyNyw3LjQ5NzA3MDk5IDQ2Ljg2MzA2ODQsNy4zNjIzMDQ2OSBDNDcuMDAzNjk0MSw3LjIyNzUzODM5IDQ3LjE2Nzc1NSw3LjA1NjY0MTY2IDQ3LjM1NTI1NTksNi44NDk2MDkzOCBMNDcuNzY1NDEyMiw2Ljg0OTYwOTM4IEM0Ny4zODY1MDQsNy40OTAyMzc1OCA0Ni45NTA5NjE1LDcuOTk5OTk4MTEgNDYuNDU4NzcxNSw4LjM3ODkwNjI1IEM0NS44NTMyOTk3LDguODM5ODQ2MDUgNDUuMTg5MjQzOSw5LjA3MDMxMjUgNDQuNDY2NTg0LDkuMDcwMzEyNSBaIE00OS4xOTkyNTQ1LDkuMDcwMzEyNSBDNDguODE2NDQwMSw5LjA3MDMxMjUgNDguNTEzNzA4OCw4Ljk1NzAzMjM4IDQ4LjI5MTA1MTQsOC43MzA0Njg3NSBDNDguMDQxMDUwMSw4LjQ4MDQ2NzUgNDcuOTE2MDUxNCw4LjExNTIzNjc4IDQ3LjkxNjA1MTQsNy42MzQ3NjU2MiBDNDcuOTE2MDUxNCw3LjQwODIwMTk5IDQ3Ljk0NzMwMTEsNy4xNDY0ODU4NiA0OC4wMDk4MDE0LDYuODQ5NjA5MzggTDQ4LjgyNDI1NDUsMyBMNTAuNTUyNzcwMSwzIEw0OS42OTE0NDIsNy4wNzgxMjUgQzQ5LjY2ODAwNDQsNy4xOTkyMTkzNiA0OS42NTYyODU4LDcuMzEyNDk5NDcgNDkuNjU2Mjg1OCw3LjQxNzk2ODc1IEM0OS42NTYyODU4LDcuNzQ2MDk1MzkgNDkuNzc1NDI1Miw3LjkxMDE1NjI1IDUwLjAxMzcwNzYsNy45MTAxNTYyNSBDNTAuMjMyNDU4Nyw3LjkxMDE1NjI1IDUwLjQyOTcyMjQsNy44MTA1NDc4NyA1MC42MDU1MDQ1LDcuNjExMzI4MTIgQzUwLjc0NjEzMDIsNy40NDMzNTg1NCA1MC44NjkxNzU5LDcuMTg5NDU0ODIgNTAuOTc0NjQ1MSw2Ljg0OTYwOTM4IEw1MS43ODkwOTgzLDMgTDUzLjUxNzYxMzksMyBMNTIuNjU2Mjg1OCw3LjA3ODEyNSBDNTIuNjIxMTI5Myw3LjE5NTMxMzA5IDUyLjYwMzU1MTQsNy4zMjQyMTgwNSA1Mi42MDM1NTE0LDcuNDY0ODQzNzUgQzUyLjYwMzU1MTQsNy42Mjg5MDcwNyA1Mi42NDI2MTM1LDcuNzQ0MTQwMjkgNTIuNzIwNzM4OSw3LjgxMDU0Njg4IEM1Mi43OTg4NjQzLDcuODc2OTUzNDYgNTIuOTIzODYzLDcuOTEwMTU2MjUgNTMuMDk1NzM4OSw3LjkxMDE1NjI1IEM1My4zMTgzOTYzLDcuOTEwMTU2MjUgNTMuNTE3NjEzLDcuODEwNTQ3ODcgNTMuNjkzMzk1MSw3LjYxMTMyODEyIEM1My44NDk2NDU5LDcuNDM1NTQ2IDUzLjk3NDY0NDcsNy4xODE2NDIyOSA1NC4wNjgzOTUxLDYuODQ5NjA5MzggTDU0LjU3MjMwMTQsNi44NDk2MDkzOCBDNTQuMzU3NDU2Niw3LjQ1ODk4NzQyIDU0LjA5NzY5MzUsNy45NDE0MDQ0NyA1My43OTMwMDQ1LDguMjk2ODc1IEM1My41MzUxOTA3LDguNTg5ODQ1MjEgNTMuMjQ0MTc4LDguODAwNzgwNjEgNTIuOTE5OTU3Niw4LjkyOTY4NzUgQzUyLjY4MTY3NTIsOS4wMjM0Mzc5NyA1Mi40Mjk3MjQ2LDkuMDcwMzEyNSA1Mi4xNjQwOTgzLDkuMDcwMzEyNSBDNTEuODIwMzQ2NSw5LjA3MDMxMjUgNTEuNTQ2OTExOCw4Ljk3NDYxMDMzIDUxLjM0Mzc4NTgsOC43ODMyMDMxMiBDNTEuMTQwNjU5Nyw4LjU5MTc5NTkyIDUxLjAxNzYxNDEsOC4zMDg1OTU2MiA1MC45NzQ2NDUxLDcuOTMzNTkzNzUgQzUwLjcwMTIwNjMsOC4zNzEwOTU5NCA1MC4zOTI2MTU2LDguNjgzNTkyODEgNTAuMDQ4ODYzOSw4Ljg3MTA5Mzc1IEM0OS44MDI3Njg5LDkuMDAzOTA2OTEgNDkuNTE5NTY4Niw5LjA3MDMxMjUgNDkuMTk5MjU0NSw5LjA3MDMxMjUgWiBNNTYuMDg4MTc1LDkuMDcwMzEyNSBDNTUuNzk5MTExMSw5LjA3MDMxMjUgNTUuNTQzMjU0Miw5LjAyNjM2NzYzIDU1LjMyMDU5NjksOC45Mzg0NzY1NiBDNTUuMDk3OTM5NSw4Ljg1MDU4NTUgNTQuOTEwNDQxNCw4LjcyODUxNjQxIDU0Ljc1ODA5NjksOC41NzIyNjU2MiBDNTQuNjE3NDcxMiw4LjQyNzczMzY1IDU0LjUxMjAwMzUsOC4yNjY2MDI0NSA1NC40NDE2OTA2LDguMDg4ODY3MTkgQzU0LjM3MTM3NzgsNy45MTExMzE5MiA1NC4zMzYyMjE5LDcuNzI2NTYzNDYgNTQuMzM2MjIxOSw3LjUzNTE1NjI1IEM1NC4zMzYyMjE5LDcuMjczNDM2MTkgNTQuNDAyNjI3NSw3LjAzNzExMDQzIDU0LjUzNTQ0MDYsNi44MjYxNzE4OCBDNTQuNjUyNjI4Nyw2LjYzODY3MDk0IDU0Ljc5OTExMTYsNi41MDM5MDY2NiA1NC45NzQ4OTM3LDYuNDIxODc1IEM1NS4yODczOTUzLDUuODY3MTg0NzMgNTUuNTU4ODc3LDUuMzA0NjkwMzUgNTUuNzg5MzQ2OSw0LjczNDM3NSBDNTYuMDE5ODE2OCw0LjE2NDA1OTY1IDU2LjI0MDUxNzcsMy41NDEwMTkgNTYuNDUxNDU2MiwyLjg2NTIzNDM4IEw1OC4yMjY4NDY5LDIuNjMwODU5MzggQzU4LjI3MzcyMjEsMy42NDY0ODk0NSA1OC4zMTY2OTA0LDQuNDI1Nzc4NTQgNTguMzU1NzUzMSw0Ljk2ODc1IEM1OC4zOTQ4MTU4LDUuNTI3MzQ2NTQgNTguNDI4MDE4Niw1LjkzNzQ5ODY5IDU4LjQ1NTM2MjUsNi4xOTkyMTg3NSBDNTguNDc4ODAwMSw2LjUwMzkwNzc3IDU4LjQ5MDUxODcsNi43Njk1MzAxMiA1OC40OTA1MTg3LDYuOTk2MDkzNzUgQzU4LjQ5MDUxODcsNy4xOTkyMTk3NyA1OC40NzQ4OTM5LDcuMzUxNTYxOTkgNTguNDQzNjQzNyw3LjQ1MzEyNSBDNTguODAzMDIwNSw3LjI0MjE4NjQ1IDU5LjA5MDEyNyw3LjA0MTAxNjU4IDU5LjMwNDk3MTksNi44NDk2MDkzOCBMNTkuODA4ODc4MSw2Ljg0OTYwOTM4IEM1OS41MjM3MjA0LDcuMTgxNjQyMjkgNTkuMjI5Nzc4MSw3LjQ2Njc5NTY4IDU4LjkyNzA0MjIsNy43MDUwNzgxMiBDNTguNjI0MzA2Myw3Ljk0MzM2MDU3IDU4LjMwNjkyNjcsOC4xNTgyMDIxNyA1Ny45NzQ4OTM3LDguMzQ5NjA5MzggQzU3LjczNjYxMTMsOC41OTk2MTA2MiA1Ny40Mzc3ODYyLDguNzg1MTU1NjQgNTcuMDc4NDA5NCw4LjkwNjI1IEM1Ni43NjU5MDc4LDkuMDE1NjI1NTUgNTYuNDM1ODMzLDkuMDcwMzEyNSA1Ni4wODgxNzUsOS4wNzAzMTI1IFogTTU1LjcwNzMxNTYsOC4xMjEwOTM3NSBDNTYuMDA4MDk4NCw4LjEyMTA5Mzc1IDU2LjI0ODMzMDQsOC4wMzkwNjMzMiA1Ni40MjgwMTg3LDcuODc1IEM1Ni42NDI4NjM2LDcuNjc5Njg2NTIgNTYuNzUwMjg0NCw3LjM5MDYyNjkxIDU2Ljc1MDI4NDQsNy4wMDc4MTI1IEM1Ni43NTAyODQ0LDYuODQ3NjU1NDUgNTYuNzQwNTE4OCw2LjY0NjQ4NTU5IDU2LjcyMDk4NzUsNi40MDQyOTY4OCBMNTYuNjkxNjkwNiw2LjA0Njg3NSBDNTYuNjU2NTM0Miw1LjczODI3OTcxIDU2LjYyMTM3ODMsNS4zODA4NjE0MSA1Ni41ODYyMjE5LDQuOTc0NjA5MzggTDU2LjUyMTc2ODcsNC4xNjYwMTU2MiBDNTYuNDA4NDg2OSw0LjUyOTI5ODY5IDU2LjI3MzcyMjcsNC44ODk2NDY2NSA1Ni4xMTc0NzE5LDUuMjQ3MDcwMzEgQzU1Ljk2MTIyMTEsNS42MDQ0OTM5NyA1NS43NzE3Njk5LDUuOTk5OTk3ODMgNTUuNTQ5MTEyNSw2LjQzMzU5Mzc1IEM1NS43MzI3MDcyLDYuNTM1MTU2NzYgNTUuODI0NTAzMSw2LjY3MzgyNzI1IDU1LjgyNDUwMzEsNi44NDk2MDkzOCBDNTUuODI0NTAzMSw3LjAwNTg2MDE2IDU1Ljc3NzYyODYsNy4xNDA2MjQ0MyA1NS42ODM4NzgxLDcuMjUzOTA2MjUgQzU1LjU4MjMxNTEsNy4zNzg5MDY4NyA1NS40NTM0MTAyLDcuNDQxNDA2MjUgNTUuMjk3MTU5NCw3LjQ0MTQwNjI1IEM1NS4yMTkwMzQsNy40NDE0MDYyNSA1NS4xNTM2MDQ5LDcuNDMwNjY0MTcgNTUuMTAwODcwMyw3LjQwOTE3OTY5IEM1NS4wNDgxMzU3LDcuMzg3Njk1MjEgNTUuMDA2MTQzOSw3LjM0NTcwMzQ0IDU0Ljk3NDg5MzcsNy4yODMyMDMxMiBDNTQuOTc0ODkzNyw3LjU3MjI2NzA3IDU1LjAzMTUzMzgsNy43ODQxNzkwMSA1NS4xNDQ4MTU2LDcuOTE4OTQ1MzEgQzU1LjI1ODA5NzQsOC4wNTM3MTE2MSA1NS40NDU1OTU2LDguMTIxMDkzNzUgNTUuNzA3MzE1Niw4LjEyMTA5Mzc1IFogTTY1Ljk3NTM5MSwxLjM2NTIzNDM4IEw2Ny43NTA3ODE2LDEuMTMwODU5MzggTDY2LjkwMTE3MjIsNS4xMzg2NzE4OCBDNjcuMjgwMDgwNCw1LjExMTMyNzk5IDY3LjY0MTQwNDksNC45MzU1NDg1IDY3Ljk4NTE1NjYsNC42MTEzMjgxMiBDNjguMjk3NjU4Miw0LjMxODM1NzkxIDY4LjU0NTcwMjYsMy45NDcyNjc4NyA2OC43MjkyOTcyLDMuNDk4MDQ2ODggQzY4LjkwODk4NTYsMy4wNjgzNTcyMyA2OC45OTg4Mjg1LDIuNjMwODYxNiA2OC45OTg4Mjg1LDIuMTg1NTQ2ODggQzY4Ljk5ODgyODUsMS43MTY3OTQ1MyA2OC44ODM1OTUyLDEuMzMyMDMyNzUgNjguNjUzMTI1MywxLjAzMTI1IEM2OC41MjgxMjQ3LDAuODc4OTA1NDg4IDY4LjM2OTkyMzIsMC43NjA3NDI2MDcgNjguMTc4NTE2LDAuNjc2NzU3ODEyIEM2Ny45ODcxMDg4LDAuNTkyNzczMDE4IDY3Ljc2NDQ1NDcsMC41NTA3ODEyNSA2Ny41MTA1NDcyLDAuNTUwNzgxMjUgQzY3LjAyNjE2OTgsMC41NTA3ODEyNSA2Ni41OTE2MDM4LDAuNjE3MTg2ODM2IDY2LjIwNjgzNjMsMC43NSBDNjUuODIyMDY4NywwLjg4MjgxMzE2NCA2NS40OTQ5MjM2LDEuMDc0MjE3NSA2NS4yMjUzOTEsMS4zMjQyMTg3NSBDNjQuOTU1ODU4NCwxLjU3NDIyIDY0Ljc1MTc1ODksMS44ODA4NTc1NiA2NC42MTMwODYzLDIuMjQ0MTQwNjIgQzY0LjQ3NDQxMzcsMi42MDc0MjM2OSA2NC40MDUwNzg1LDMuMDE1NjIyNzMgNjQuNDA1MDc4NSwzLjQ2ODc1IEM2NC40MDUwNzg1LDMuNzE4NzUxMjUgNjQuNDMyNDIxOSwzLjkxNzk2ODAxIDY0LjQ4NzEwOTcsNC4wNjY0MDYyNSBDNjQuNTAyNzM0OCw0LjExNzE4Nzc1IDY0LjUyMjI2NTksNC4xNjIxMDkxOCA2NC41NDU3MDM1LDQuMjAxMTcxODggQzY0LjU2MTMyODUsNC4yMjg1MTU3NiA2NC41NjkxNDEsNC4yNTU4NTkyNCA2NC41NjkxNDEsNC4yODMyMDMxMiBDNjQuMTM1NTQ1MSw0LjI4MzIwMzEyIDYzLjgxOTE0Miw0LjE5NzI2NjQ4IDYzLjYxOTkyMjIsNC4wMjUzOTA2MiBDNjMuMzk3MjY0OSwzLjgzNzg4OTY5IDYzLjI4NTkzNzgsMy41MzUxNTgzNCA2My4yODU5Mzc4LDMuMTE3MTg3NSBDNjMuMjg1OTM3OCwyLjg1NTQ2NzQ0IDYzLjM0MjU3NzksMi41OTY2ODA5NyA2My40NTU4NTk3LDIuMzQwODIwMzEgQzYzLjU2OTE0MTUsMi4wODQ5NTk2NiA2My43MjkyOTYyLDEuODM3ODkxODIgNjMuOTM2MzI4NSwxLjU5OTYwOTM4IEM2NC4xMzE2NDE5LDEuMzczMDQ1NzQgNjQuMzY1MDM4MSwxLjE2MTEzMzggNjQuNjM2NTIzOCwwLjk2Mzg2NzE4OCBDNjQuOTA4MDA5NSwwLjc2NjYwMDU3NiA2NS4yMDE5NTE5LDAuNTk1NzAzODQ4IDY1LjUxODM1OTcsMC40NTExNzE4NzUgQzY2LjE4MjQyNTUsMC4xNTAzODkxMjEgNjYuODQyNTc1MiwwIDY3LjQ5ODgyODUsMCBDNjguNDI0NjE0MywwIDY5LjE0MzM1NzIsMC4yNDAyMzE5NzMgNjkuNjU1MDc4NSwwLjcyMDcwMzEyNSBDNjkuODgxNjQyMSwwLjkzNTU0Nzk0OSA3MC4wNTA1ODU3LDEuMTgzNTkyMzQgNzAuMTYxOTE0NCwxLjQ2NDg0Mzc1IEM3MC4yNzMyNDMxLDEuNzQ2MDk1MTYgNzAuMzI4OTA2NiwyLjA0NDkyMDI5IDcwLjMyODkwNjYsMi4zNjEzMjgxMiBDNzAuMzI4OTA2NiwyLjc0ODA0ODgxIDcwLjI0OTgwNTgsMy4xMzI4MTA1OSA3MC4wOTE2MDE5LDMuNTE1NjI1IEM2OS45MzMzOTgsMy44OTg0Mzk0MSA2OS43MDU4NjEyLDQuMjQwMjMyODcgNjkuNDA4OTg0Nyw0LjU0MTAxNTYyIEM2OS4wOTY0ODMyLDQuODYxMzI5NzMgNjguNzI0NDE2Niw1LjExNDI1Njg4IDY4LjI5Mjc3MzgsNS4yOTk4MDQ2OSBDNjcuODYxMTMxLDUuNDg1MzUyNDkgNjcuMzg1NTQ5OCw1LjU3ODEyNSA2Ni44NjYwMTYsNS41NzgxMjUgTDY2LjgwMTU2MjgsNS41NzgxMjUgTDY2LjA2OTE0MSw5IEw2NC4zNDY0ODQ3LDkgTDY1Ljk3NTM5MSwxLjM2NTIzNDM4IFogTTcyLjUwMTAzMDIsOS4wNDY4NzUgQzcxLjkwNzI3NzIsOS4wNDY4NzUgNzEuNDQ4Mjk3NSw4LjkwMjM0NTIgNzEuMTI0MDc3MSw4LjYxMzI4MTI1IEM3MC43NjA3OTQsOC4yOTI5NjcxNSA3MC41NzkxNTUyLDcuODA2NjQzODkgNzAuNTc5MTU1Miw3LjE1NDI5Njg4IEM3MC41NzkxNTUyLDYuOTA4MjAxODkgNzAuNjA0NTQ1Niw2LjYzNTc0MzY4IDcwLjY1NTMyNzEsNi4zMzY5MTQwNiBDNzAuNzA2MTA4Niw2LjAzODA4NDQ0IDcwLjc4NDIzMjgsNS43MzYzMjk2NSA3MC44ODk3MDIxLDUuNDMxNjQwNjIgQzcxLjEzMTg5MDgsNC43MDUwNzQ0OSA3MS40Nzc1OTA1LDQuMTI1MDAyMTcgNzEuOTI2ODExNSwzLjY5MTQwNjI1IEM3Mi40Njk3ODI5LDMuMTYwMTUzNTkgNzMuMTE2MjYwOCwyLjg5NDUzMTI1IDczLjg2NjI2NDYsMi44OTQ1MzEyNSBDNzQuODkzNjEzNSwyLjg5NDUzMTI1IDc1LjQwNzI4MDIsMy41MzMxOTY3NCA3NS40MDcyODAyLDQuODEwNTQ2ODggTDc1LjQwNzI4MDIsNC44MjIyNjU2MiBDNzUuNDMwNzE3OCw0LjgzMDA3ODE2IDc1LjQ1MDI0ODksNC44MzM5ODQzOCA3NS40NjU4NzQsNC44MzM5ODQzOCBMNzUuNTM2MTg2NSw0LjgzMzk4NDM4IEM3NS44MDE4MTI4LDQuODMzOTg0MzggNzYuMTE2MjYyOCw0Ljc1OTc2NjM3IDc2LjQ3OTU0NTgsNC42MTEzMjgxMiBDNzYuNzk5ODU5OSw0LjQ3ODUxNDk2IDc3LjEwMjU5MTMsNC4zMTI1MDEgNzcuMzg3NzQ5LDQuMTEzMjgxMjUgTDc3LjQ5MzIxNzcsNC40NDE0MDYyNSBDNzcuMjU4ODQxNSw0LjY4NzUwMTIzIDc2Ljk1NzA4NjcsNC44OTY0ODM1MiA3Ni41ODc5NDQzLDUuMDY4MzU5MzggQzc2LjIxODgwMTgsNS4yNDAyMzUyMyA3NS44MTE1NzkzLDUuMzYzMjgwODggNzUuMzY2MjY0Niw1LjQzNzUgQzc1LjMxOTM4OTMsNS45ODA0NzE0NiA3NS4yMTM5MjE3LDYuNDc1NTgzNyA3NS4wNDk4NTgzLDYuOTIyODUxNTYgQzc0Ljg4NTc5NSw3LjM3MDExOTQyIDc0LjY3NDg1OTYsNy43NTM5MDQ2NSA3NC40MTcwNDU4LDguMDc0MjE4NzUgQzc0LjE2MzEzODMsOC4zODY3MjAzMSA3My44NzIxMjU2LDguNjI2OTUyMjkgNzMuNTQzOTk5LDguNzk0OTIxODggQzczLjIxNTg3MjMsOC45NjI4OTE0NiA3Mi44NjgyMTk1LDkuMDQ2ODc1IDcyLjUwMTAzMDIsOS4wNDY4NzUgWiBNNzIuOTgxNDk5LDcuOTY4NzUgQzczLjEyMjEyNDcsNy45Njg3NSA3My4yNjU2Nzc5LDcuOTA1Mjc0MDcgNzMuNDEyMTYzLDcuNzc4MzIwMzEgQzczLjU1ODY0ODEsNy42NTEzNjY1NSA3My42OTYzNDIxLDcuNDc0NjEwNTEgNzMuODI1MjQ5LDcuMjQ4MDQ2ODggQzczLjk1NDE1NTksNy4wMjE0ODMyNCA3NC4wNjU0ODI5LDYuNzU1ODYwOSA3NC4xNTkyMzMzLDYuNDUxMTcxODggQzc0LjI1Mjk4MzgsNi4xNDY0ODI4NSA3NC4zMjMyOTU2LDUuODIwMzE0MjQgNzQuMzcwMTcwOCw1LjQ3MjY1NjI1IEM3NC4yNTI5ODI3LDUuNDQxNDA2MDkgNzQuMTY5OTc1OCw1LjM4MjgxMjkzIDc0LjEyMTE0NzQsNS4yOTY4NzUgQzc0LjA3MjMxOSw1LjIxMDkzNzA3IDc0LjA0NzkwNTIsNS4xMDE1NjMxNiA3NC4wNDc5MDUyLDQuOTY4NzUgQzc0LjA0NzkwNTIsNC44MDQ2ODY2OCA3NC4wODExMDgsNC42Njc5NjkzIDc0LjE0NzUxNDYsNC41NTg1OTM3NSBDNzQuMjEzOTIxMiw0LjQ0OTIxODIgNzQuMzA1NzE3MSw0LjM2OTE0MDg4IDc0LjQyMjkwNTIsNC4zMTgzNTkzOCBDNzQuNDA3MjgwMSw0LjA2NDQ1MTg2IDc0LjM2NjI2NDksMy44ODI4MTMwNSA3NC4yOTk4NTgzLDMuNzczNDM3NSBDNzQuMjY0NzAxOSwzLjcxODc0OTczIDc0LjIyMDc1NywzLjY3OTY4NzYyIDc0LjE2ODAyMjQsMy42NTYyNSBDNzQuMTE1Mjg3OCwzLjYzMjgxMjM4IDc0LjA0NzkwNTYsMy42MjEwOTM3NSA3My45NjU4NzQsMy42MjEwOTM3NSBDNzMuNjk2MzQxNCwzLjYyMTA5Mzc1IDczLjQzMjY3MjEsMy44MjQyMTY3MiA3My4xNzQ4NTgzLDQuMjMwNDY4NzUgQzcyLjkzNjU3NTksNC41OTc2NTgwOSA3Mi43NDEyNjUzLDUuMDUwNzc4NTUgNzIuNTg4OTIwOCw1LjU4OTg0Mzc1IEM3Mi40NDA0ODI2LDYuMTE3MTkwMTQgNzIuMzY2MjY0Niw2LjU4NTkzNTQ1IDcyLjM2NjI2NDYsNi45OTYwOTM3NSBDNzIuMzY2MjY0Niw3LjE5NTMxMzUgNzIuMzc3MDA2Nyw3LjM1NzQyMTI1IDcyLjM5ODQ5MTEsNy40ODI0MjE4OCBDNzIuNDE5OTc1Niw3LjYwNzQyMjUgNzIuNDU2MTA4MSw3LjcwNTA3Nzc3IDcyLjUwNjg4OTYsNy43NzUzOTA2MiBDNzIuNTUzNzY0OCw3Ljg0NTcwMzQ4IDcyLjYxNDMxMTEsNy44OTU1MDc2NyA3Mi42ODg1MzAyLDcuOTI0ODA0NjkgQzcyLjc2Mjc0OTMsNy45NTQxMDE3MSA3Mi44NjA0MDQ2LDcuOTY4NzUgNzIuOTgxNDk5LDcuOTY4NzUgWiBNNzguNjc1MTA2OSwyLjM0OTYwOTM4IEM3OC41NDYyLDIuMzQ5NjA5MzggNzguNDIzMTU0NCwyLjMyNTE5NTU2IDc4LjMwNTk2NjMsMi4yNzYzNjcxOSBDNzguMTg4Nzc4MiwyLjIyNzUzODgyIDc4LjA4NzIxNjcsMi4xNjAxNTY2OCA3OC4wMDEyNzg4LDIuMDc0MjE4NzUgQzc3LjkxNTM0MDksMS45OTIxODcwOSA3Ny44NDc5NTg3LDEuODkyNTc4NzEgNzcuNzk5MTMwNCwxLjc3NTM5MDYyIEM3Ny43NTAzMDIsMS42NTgyMDI1NCA3Ny43MjU4ODgyLDEuNTM1MTU2ODkgNzcuNzI1ODg4MiwxLjQwNjI1IEM3Ny43MjU4ODgyLDEuMjc3MzQzMTEgNzcuNzUwMzAyLDEuMTU0Mjk3NDYgNzcuNzk5MTMwNCwxLjAzNzEwOTM4IEM3Ny44NDc5NTg3LDAuOTE5OTIxMjg5IDc3LjkxNTM0MDksMC44MTY0MDY2OTkgNzguMDAxMjc4OCwwLjcyNjU2MjUgQzc4LjA4NzIxNjcsMC42MzY3MTgzMDEgNzguMTg4Nzc4MiwwLjU2NzM4MzA1NyA3OC4zMDU5NjYzLDAuNTE4NTU0Njg4IEM3OC40MjMxNTQ0LDAuNDY5NzI2MzE4IDc4LjU0NjIsMC40NDUzMTI1IDc4LjY3NTEwNjksMC40NDUzMTI1IEM3OC44MDQwMTM4LDAuNDQ1MzEyNSA3OC45MjcwNTk1LDAuNDY5NzI2MzE4IDc5LjA0NDI0NzYsMC41MTg1NTQ2ODggQzc5LjE2MTQzNTcsMC41NjczODMwNTcgNzkuMjY0OTUwMiwwLjYzNjcxODMwMSA3OS4zNTQ3OTQ0LDAuNzI2NTYyNSBDNzkuNDQ0NjM4NiwwLjgxNjQwNjY5OSA3OS41MTM5NzM5LDAuOTE5OTIxMjg5IDc5LjU2MjgwMjMsMS4wMzcxMDkzOCBDNzkuNjExNjMwNiwxLjE1NDI5NzQ2IDc5LjYzNjA0NDQsMS4yNzczNDMxMSA3OS42MzYwNDQ0LDEuNDA2MjUgQzc5LjYzNjA0NDQsMS41MzUxNTY4OSA3OS42MTE2MzA2LDEuNjU4MjAyNTQgNzkuNTYyODAyMywxLjc3NTM5MDYyIEM3OS41MTM5NzM5LDEuODkyNTc4NzEgNzkuNDQ0NjM4NiwxLjk5MjE4NzA5IDc5LjM1NDc5NDQsMi4wNzQyMTg3NSBDNzkuMjY0OTUwMiwyLjE2MDE1NjY4IDc5LjE2MTQzNTcsMi4yMjc1Mzg4MiA3OS4wNDQyNDc2LDIuMjc2MzY3MTkgQzc4LjkyNzA1OTUsMi4zMjUxOTU1NiA3OC44MDQwMTM4LDIuMzQ5NjA5MzggNzguNjc1MTA2OSwyLjM0OTYwOTM4IFogTTc3Ljg2MDY1MzgsOS4wNzAzMTI1IEM3Ny40Nzc4Mzk0LDkuMDcwMzEyNSA3Ny4xNzUxMDgxLDguOTU3MDMyMzggNzYuOTUyNDUwNyw4LjczMDQ2ODc1IEM3Ni43MDI0NDk0LDguNDgwNDY3NSA3Ni41Nzc0NTA3LDguMTE1MjM2NzggNzYuNTc3NDUwNyw3LjYzNDc2NTYyIEM3Ni41Nzc0NTA3LDcuNDA4MjAxOTkgNzYuNjA4NzAwNCw3LjE0NjQ4NTg2IDc2LjY3MTIwMDcsNi44NDk2MDkzOCBMNzcuNDg1NjUzOCwzIEw3OS4yMTQxNjk0LDMgTDc4LjM1Mjg0MTMsNy4wNzgxMjUgQzc4LjMyMTU5MTIsNy4xNzk2ODgwMSA3OC4zMDU5NjYzLDcuMzA4NTkyOTcgNzguMzA1OTY2Myw3LjQ2NDg0Mzc1IEM3OC4zMDU5NjYzLDcuNjI4OTA3MDcgNzguMzQ0MDUxOSw3Ljc0NDE0MDI5IDc4LjQyMDIyNDEsNy44MTA1NDY4OCBDNzguNDk2Mzk2NCw3Ljg3Njk1MzQ2IDc4LjYyMDQxODYsNy45MTAxNTYyNSA3OC43OTIyOTQ0LDcuOTEwMTU2MjUgQzc4LjkwOTQ4MjUsNy45MTAxNTYyNSA3OS4wMjM3MzkyLDcuODgzNzg5MzMgNzkuMTM1MDY3OSw3LjgzMTA1NDY5IEM3OS4yNDYzOTY2LDcuNzc4MzIwMDUgNzkuMzQ4OTM0Niw3LjcwNTA3ODU5IDc5LjQ0MjY4NTEsNy42MTEzMjgxMiBDNzkuNjM0MDkyMyw3LjQxOTkyMDkyIDc5Ljc3ODYyMjEsNy4xNjYwMTcyMSA3OS44NzYyNzg4LDYuODQ5NjA5MzggTDgwLjM4MDE4NTEsNi44NDk2MDkzOCBDODAuMTY1MzQwMiw3LjQ1NTA4MTE1IDc5Ljg5NTgxMTcsNy45Mzc0OTgyIDc5LjU3MTU5MTMsOC4yOTY4NzUgQzc5LjI5ODE1MjUsOC41ODk4NDUyMSA3OC45ODk1NjE4LDguODAwNzgwNjEgNzguNjQ1ODEwMSw4LjkyOTY4NzUgQzc4LjM5NTgwODgsOS4wMjM0Mzc5NyA3OC4xMzQwOTI3LDkuMDcwMzEyNSA3Ny44NjA2NTM4LDkuMDcwMzEyNSBaIE04NC44NjA5MDI0LDkuMDcwMzEyNSBDODQuMzY0ODA2Miw5LjA3MDMxMjUgODMuOTk3NjIyNCw4LjkyOTY4ODkxIDgzLjc1OTMzOTksOC42NDg0Mzc1IEM4My41NTIzMDc2LDguNDA2MjQ4NzkgODMuNDQ4NzkzMSw4LjA5NTcwNTAyIDgzLjQ0ODc5MzEsNy43MTY3OTY4OCBDODMuNDQ4NzkzMSw3LjUzNzEwODQ4IDgzLjQ3MTI1MzgsNy4zMjgxMjYxOSA4My41MTYxNzU5LDcuMDg5ODQzNzUgQzgzLjU2MTA5OCw2Ljg1MTU2MTMxIDgzLjYyODQ4MDEsNi41NDQ5MjM3NSA4My43MTgzMjQzLDYuMTY5OTIxODggQzgzLjgwODE2ODUsNS43ODcxMDc0NiA4My44NzU1NTA2LDUuNDgxNDQ2NDYgODMuOTIwNDcyNyw1LjI1MjkyOTY5IEM4My45NjUzOTQ4LDUuMDI0NDEyOTIgODMuOTg3ODU1Niw0LjgyNjE3MjcxIDgzLjk4Nzg1NTYsNC42NTgyMDMxMiBDODMuOTg3ODU1Niw0LjI0ODA0NDgyIDgzLjg0MzMyNTcsNC4wNDI5Njg3NSA4My41NTQyNjE4LDQuMDQyOTY4NzUgQzgzLjM1MTEzNTgsNC4wNDI5Njg3NSA4My4xNjM2Mzc3LDQuMTUwMzg5NTUgODIuOTkxNzYxOCw0LjM2NTIzNDM4IEM4Mi44NDcyMjk4LDQuNTQ4ODI5MDQgODIuNzIyMjMxMSw0LjgxMDU0NTE4IDgyLjYxNjc2MTgsNS4xNTAzOTA2MiBMODEuODAyMzA4Nyw5IEw4MC4wNzM3OTMxLDkgTDgxLjM0NTI3NzQsMyBMODMuMDczNzkzMSwzIEw4Mi45NDQ4ODY4LDMuNjIxMDkzNzUgQzgzLjE3OTI2MywzLjM1OTM3MzY5IDgzLjQzMTIxMzYsMy4xNzU3ODE3OCA4My43MDA3NDYyLDMuMDcwMzEyNSBDODMuODk5OTY1OSwyLjk5MjE4NzExIDg0LjExNDgwNzUsMi45NTMxMjUgODQuMzQ1Mjc3NCwyLjk1MzEyNSBDODQuNzUxNTI5NSwyLjk1MzEyNSA4NS4wNzE4Mzg4LDMuMDU4NTkyNyA4NS4zMDYyMTQ5LDMuMjY5NTMxMjUgQzg1LjU1NjIxNjIsMy41MDAwMDExNSA4NS42ODEyMTQ5LDMuODQ1NzAwODIgODUuNjgxMjE0OSw0LjMwNjY0MDYyIEM4NS42ODEyMTQ5LDQuNTgzOTg1NzYgODUuNjMwNDM0Miw0Ljk0NTMxMDI3IDg1LjUyODg3MTIsNS4zOTA2MjUgQzg1LjUwMTUyNzMsNS41MTk1MzE4OSA4NS40NTY2MDU5LDUuNzEyODg5MzQgODUuMzk0MTA1Niw1Ljk3MDcwMzEyIEM4NS4yODA4MjM3LDYuNDA0Mjk5MDQgODUuMTk4NzkzMyw2Ljc0OTk5ODcxIDg1LjE0ODAxMTgsNy4wMDc4MTI1IEM4NS4xMTY3NjE2LDcuMTcxODc1ODIgODUuMTAxMTM2OCw3LjMwNDY4Njk5IDg1LjEwMTEzNjgsNy40MDYyNSBDODUuMTAxMTM2OCw3LjU2NjQwNzA1IDg1LjEzNzI2OTMsNy42OTA0MjkyNSA4NS4yMDk1MzUyLDcuNzc4MzIwMzEgQzg1LjI4MTgwMTIsNy44NjYyMTEzOCA4NS40MDU4MjM0LDcuOTEwMTU2MjUgODUuNTgxNjA1Niw3LjkxMDE1NjI1IEM4NS44MTk4ODgsNy45MTAxNTYyNSA4Ni4wMjEwNTc5LDcuODEyNTAwOTggODYuMTg1MTIxMiw3LjYxNzE4NzUgQzg2LjMxMDEyMTgsNy40Njg3NDkyNiA4Ni40NDQ4ODYxLDcuMjEyODkyNDQgODYuNTg5NDE4MSw2Ljg0OTYwOTM4IEw4Ny4wOTMzMjQzLDYuODQ5NjA5MzggQzg2Ljc5NjQ0NzgsNy43Mjg1MjAwMiA4Ni40MjE0NTE2LDguMzQzNzQ4MjQgODUuOTY4MzI0Myw4LjY5NTMxMjUgQzg1LjY0ODAxMDIsOC45NDUzMTM3NSA4NS4yNzg4NzMzLDkuMDcwMzEyNSA4NC44NjA5MDI0LDkuMDcwMzEyNSBaIE04OC40MzM0MTY3LDkuMDcwMzEyNSBDODguMDUwNjAyMyw5LjA3MDMxMjUgODcuNzQ3ODcwOSw4Ljk1NzAzMjM4IDg3LjUyNTIxMzUsOC43MzA0Njg3NSBDODcuMjc1MjEyMyw4LjQ4MDQ2NzUgODcuMTUwMjEzNSw4LjExNTIzNjc4IDg3LjE1MDIxMzUsNy42MzQ3NjU2MiBDODcuMTUwMjEzNSw3LjQwODIwMTk5IDg3LjE4MTQ2MzIsNy4xNDY0ODU4NiA4Ny4yNDM5NjM1LDYuODQ5NjA5MzggTDg3Ljk2NDY2NjcsMy40ODA0Njg3NSBMODcuNTY2MjI5MiwzLjQ4MDQ2ODc1IEw4Ny42NjU4Mzg1LDMgTDg4LjA1ODQxNjcsMyBMODguNDIxNjk3OSwxLjM0MTc5Njg4IEw5MC4xOTcwODg1LDEuMTAxNTYyNSBMODkuNzg2OTMyMywzIEw5MC41MDc2MzU0LDMgTDkwLjQxMzg4NTQsMy40ODA0Njg3NSBMODkuNjkzMTgyMywzLjQ4MDQ2ODc1IEw4OC45MjU2MDQyLDcuMDc4MTI1IEM4OC44OTQzNTQsNy4xNzk2ODgwMSA4OC44Nzg3MjkyLDcuMzA4NTkyOTcgODguODc4NzI5Miw3LjQ2NDg0Mzc1IEM4OC44Nzg3MjkyLDcuNjI4OTA3MDcgODguOTE2ODE0Nyw3Ljc0NDE0MDI5IDg4Ljk5Mjk4Nyw3LjgxMDU0Njg4IEM4OS4wNjkxNTkyLDcuODc2OTUzNDYgODkuMTkzMTgxNCw3LjkxMDE1NjI1IDg5LjM2NTA1NzMsNy45MTAxNTYyNSBDODkuNDgyMjQ1NCw3LjkxMDE1NjI1IDg5LjU5NjUwMiw3Ljg4Mzc4OTMzIDg5LjcwNzgzMDcsNy44MzEwNTQ2OSBDODkuODE5MTU5NCw3Ljc3ODMyMDA1IDg5LjkyMTY5NzQsNy43MDUwNzg1OSA5MC4wMTU0NDc5LDcuNjExMzI4MTIgQzkwLjIwNjg1NTEsNy40MTk5MjA5MiA5MC4zNTEzODQ5LDcuMTY2MDE3MjEgOTAuNDQ5MDQxNyw2Ljg0OTYwOTM4IEw5MC45NTI5NDc5LDYuODQ5NjA5MzggQzkwLjczODEwMzEsNy40NTUwODExNSA5MC40Njg1NzQ1LDcuOTM3NDk4MiA5MC4xNDQzNTQyLDguMjk2ODc1IEM4OS44NzA5MTUzLDguNTg5ODQ1MjEgODkuNTYyMzI0Niw4LjgwMDc4MDYxIDg5LjIxODU3MjksOC45Mjk2ODc1IEM4OC45Njg1NzE3LDkuMDIzNDM3OTcgODguNzA2ODU1NSw5LjA3MDMxMjUgODguNDMzNDE2Nyw5LjA3MDMxMjUgWiIgaWQ9InBhdGgtMyI+PC9wYXRoPgogICAgICAgIDxmaWx0ZXIgeD0iLTYuNiUiIHk9Ii0xNi43JSIgd2lkdGg9IjEwOC44JSIgaGVpZ2h0PSIxNjYuNyUiIGZpbHRlclVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgaWQ9ImZpbHRlci00Ij4KICAgICAgICAgICAgPGZlT2Zmc2V0IGR4PSItMiIgZHk9IjIiIGluPSJTb3VyY2VBbHBoYSIgcmVzdWx0PSJzaGFkb3dPZmZzZXRPdXRlcjEiPjwvZmVPZmZzZXQ+CiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjEiIGluPSJzaGFkb3dPZmZzZXRPdXRlcjEiIHJlc3VsdD0ic2hhZG93Qmx1ck91dGVyMSI+PC9mZUdhdXNzaWFuQmx1cj4KICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdmFsdWVzPSIwIDAgMCAwIDAgICAwIDAgMCAwIDAgICAwIDAgMCAwIDAgIDAgMCAwIDAuMjE1OTE5Mzg0IDAiIHR5cGU9Im1hdHJpeCIgaW49InNoYWRvd0JsdXJPdXRlcjEiPjwvZmVDb2xvck1hdHJpeD4KICAgICAgICA8L2ZpbHRlcj4KICAgIDwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJHcm91cC0yIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0LjAwMDAwMCwgMC4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMy4wMDAwMDAsIDcuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0iRmlsbC0yOCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzQuMDAwMDAwLCAyNS4wMDAwMDApIHNjYWxlKDEsIC0xKSByb3RhdGUoLTcxLjAwMDAwMCkgdHJhbnNsYXRlKC0zNC4wMDAwMDAsIC0yNS4wMDAwMDApICI+CiAgICAgICAgICAgICAgICAgICAgPHVzZSBmaWxsPSJibGFjayIgZmlsbC1vcGFjaXR5PSIxIiBmaWx0ZXI9InVybCgjZmlsdGVyLTIpIiB4bGluazpocmVmPSIjcGF0aC0xIj48L3VzZT4KICAgICAgICAgICAgICAgICAgICA8dXNlIGZpbGw9IiNGRkZGRkYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgeGxpbms6aHJlZj0iI3BhdGgtMSI+PC91c2U+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuOTMxMTg1NCw5LjY3ODA5NDQ2IEMyMi4yNTI1NDA4LDkuNDM1MzQ3NTkgMjIuNTY4OTQyNyw5LjE4Njk5ODg2IDIyLjg5NzcyODMsOC45NTM1ODg0IEMyMy4yMjg5OTA2LDguNzE4OTMzMDkgMjMuNTYyMTEwNCw4LjQ4NzM4OTkxIDIzLjg5MzM3MjcsOC4yNTI3MzQ2IEMyNC41NTgzNzQsNy43Nzk2ODk0MSAyNS4yNDM4MDgyLDcuMzM0NjUzNDYgMjUuOTEzMTQzOCw2Ljg2NzgzMjU1IEMyNi41NzM4MTA4LDYuNDA4NDgwNzcgMjcuMjQ5MzM4Miw1Ljk3MTUzNjM5IDI3LjkxMDYyNDQsNS41MTM0Mjk0NiBDMjguMjY3ODkyMyw1LjI2Njk0ODAyIDI4LjYyMDgyNiw1LjAxNDg2NDcyIDI4Ljk3Mzc1OTYsNC43NjI3ODE0MyBDMjkuMjkxMzk5OSw0LjUzNDk3MjgyIDI5LjYyMTQyMzgsNC4zMjUyMTQ2MiAyOS45NDIxNiw0LjEwMzAwNzg3IEMzMC4yODc2NjM0LDMuODYzMzczMTMgMzAuNjIzMjYsMy42MTE5MTIyNiAzMC45NjYyODY3LDMuMzY3OTIwNTMgQzMxLjMxODYwMTIsMy4xMTY0NTk2NyAzMS42NzUyNDk5LDIuODY3NDg4NTEgMzIuMDI2OTQ1MiwyLjYxNDE2MDM2IEMzMi42OTUwNDI0LDIuMTMyNDAxMTcgMzMuMzYyNTIwNCwxLjY0OTM5NzEzIDM0LjAzMDYxNzYsMS4xNjgyNjAzNyBDMzQuMzU4MTY0OCwwLjkzMjM2MDIwNSAzNC42OTQ5OTk3LDAuNzEwMTUzNDQ4IDM1LjAyNjg4MTIsMC40Nzk4NTUxMyBDMzUuMzQwODA2NCwwLjI2MTM4Mjk0MSAzNS42NDM1ODYzLDAuMDI2MTA1MTk5MSAzNS45NTkzNjksLTAuMTg5ODc3Mjc4IEMzNi4zNjI0NTY0LC0wLjQ2NDk5MDQwNSAzNi43NzIzNTQ4LC0wLjcyOTUyMjI1NyAzNy4xNzExMDc5LC0xLjAwOTYxNDgxIEMzNy41ODg0MzY0LC0xLjMwNDAyMzIgMzguMDExMzM3NiwtMS41OTAzNDAwMyAzOC40MzMwMDA0LC0xLjg3ODUyNDE0IEMzOC42NTU5MDU5LC0yLjAzMTY0MTQgMzguODc4MTkyMiwtMi4xODcyNDgzNyAzOS4xMDI5NTUyLC0yLjMzODQ5ODM1IEMzOS4xMDI5NTUyLC0yLjMzMzUxODkzIDM5LjEwMjMzNiwtMi4zMjg1Mzk1IDM5LjEwMTcxNjgsLTIuMzIyOTM3NjUgQzM5LjA1NDAzOTgsLTEuNzU1MjgzNDIgMzkuMDU1ODk3NCwtMS4xODM4OTQ2MiAzOS4wNDE2NTYyLC0wLjYxNDM3MzA5OCBDMzguOTY2MTE2LDAuOTgyMTU0NDM2IDM4LjgyMjQ2NTgsMi41NzY4MTQ2OSAzOC43NzQ3ODg4LDQuMTc1MjA5NSBDMzguNzUxMjU5OSw0Ljk3MDA0OTkyIDM4Ljc1MzExNzQsNS43NjgwMDI0NyAzOC44MTU2NTQ4LDYuNTYwOTc1NiBDMzguODgwMDQ5Nyw3LjM3Njk3ODU2IDM4Ljk1NDk3MDcsOC4xOTI5ODE1MiAzOS4wMjM2OTk5LDkuMDA4OTg0NDggQzM5LjE1NTU4NTYsMTAuNTczNzY4MiAzOS4yOTE4MDU2LDEyLjEzODU1MTkgMzkuNDcyNjA2NywxMy42OTc3MzM4IEMzOS41MjA5MDI5LDE0LjExMjg5MzIgMzkuNTY3OTYwNywxNC41MjgwNTI2IDM5LjYyMjQ0ODcsMTQuOTQyNTg5NSBDMzkuNjczODQwOCwxNS4zMzIyMjk0IDM5Ljc0NjI4NTEsMTUuNzE5Mzc5NSAzOS44MTA2OCwxNi4xMDY1Mjk3IEMzOS45MzUxMzU2LDE2Ljg1NDA2NTYgNDAuMDU1MjU2OCwxNy41OTk3MzQyIDQwLjIxOTk1OTIsMTguMzM5ODAxIEM0MC4zNDkzNjgyLDE4LjkxODY1ODkgNDAuNDgxODczMSwxOS40OTYyNzIgNDAuNjMxMDk1OSwyMC4wNzA3NzI5IEM0MC42NTgzMzk5LDIwLjE3NzIwODEgNDAuNjg4MDYwNywyMC4yODM2NDMzIDQwLjcxNjU0MywyMC4zOTAwNzg0IEM0MC41ODc3NTMyLDIwLjM2NjQyNjIgNDAuNDU4OTYzNCwyMC4zNDQwMTg4IDQwLjMzMDE3MzYsMjAuMzE4NDk5MiBDMzkuNzk4OTE1NiwyMC4yMTI2ODY1IDM5LjI3Mzg0OTQsMjAuMDgwNzMxOCAzOC43NDU2ODczLDE5Ljk2MTg0OCBDMzguMjM2MTAwNiwxOS44NDczMjEzIDM3LjcyNTg5NDgsMTkuNzI0MDgwNiAzNy4yMjA2NDI0LDE5LjU5MDI1ODYgQzM2LjgxMDEyNDksMTkuNDgwNzExMyAzNi4zOTcxMzA2LDE5LjQzNTI3NCAzNS45Nzg1NjM3LDE5LjQxNTk3ODggQzM1Ljg4ODc4MjMsMTkuMzY2MTg0NSAzNS43OTE1NzA3LDE5LjMzMDcwNjIgMzUuNjg5NDA1NywxOS4zMTIwMzMzIEMzNS42MzYxNTYxLDE5LjMwMjY5NjkgMzUuNTgxNjY4MSwxOS4yOTgzMzk5IDM1LjUyNzc5OTMsMTkuMjk4MzM5OSBDMzUuMzM1MjMzNywxOS4yOTgzMzk5IDM1LjE0NDUyNTcsMTkuMzU3NDcwNiAzNC45ODUzOTYsMTkuNDY5NTA3NiBDMzQuNzk0MDY4OCwxOS42MDM5NTIgMzQuNjIxMzE3MSwxOS44NDA0NzQ2IDM0LjU5NzE2OSwyMC4wODEzNTQyIEMzNC41MDY3Njg0LDIwLjk4MzI1MjIgMzQuNDc1ODA5NCwyMS44OTI2MTkzIDM0LjUxMjM0MTEsMjIuNzk4MjUxOSBDMzQuNTIwMzkwNCwyMy4wMDQ4OTggMzQuNTMzMzkzMywyMy4yMTA5MjE2IDM0LjU1MTM0OTUsMjMuNDE2OTQ1MiBDMzQuNDM2ODAwOSwyMy41OTQzMzcyIDM0LjM4MjkzMjEsMjMuODA5MDc0OCAzNC40MDI3NDU5LDI0LjAyMDcwMDMgQzM0LjQyNTAzNjQsMjQuMjYyMjAyMyAzNC41NDIwNjE4LDI0LjQ4ODE0MzYgMzQuNzI0MTAxMywyNC42NDc0ODUyIEMzNC43NjkzMDE1LDI0Ljg3NDA0ODkgMzQuODIxOTMyLDI1LjA5OTM2NzggMzQuODgzMjMxLDI1LjMyMjgxOTQgQzM0Ljk5NTMwMjksMjUuNzI3Mzk3NiAzNS4xMTE3MDkxLDI2LjEyOTQ4NiAzNS4yNjk2MDA1LDI2LjUxOTEyNTggQzM1LjQ0OTc4MjQsMjYuOTYyOTE2OSAzNS42NDY2ODIyLDI3LjQwMTEwNjIgMzUuODczMzAyNywyNy44MjM3MzQ3IEMzNi4yNjc3MjE2LDI4LjU1Njk1NDcgMzYuNzE4NDg1OSwyOS4yNDM0OTI3IDM3LjI2Mzk4NTEsMjkuODcyMTQ0OSBDMzcuNjAxNDM5MiwzMC4yNjA1Mzk5IDM3Ljk1OTMyNjMsMzAuNjQ1ODIyNyAzOC4zNzI5Mzk4LDMwLjk1NDU0NyBDMzguODI3NDE5MywzMS4yOTI1MjUzIDM5LjMwMTcxMjUsMzEuNjAwMDA0NyAzOS43ODU5MTI3LDMxLjg5Mzc5MDcgQzQwLjYwNTA5MDMsMzIuMzkzNjAwMyA0MS41MjgyOTA0LDMyLjY5MzYxMDUgNDIuNDM5MTA2OSwzMi45ODE3OTQ2IEM0Mi41MjE0NTgxLDMzLjAwOTgwMzkgNDIuNjAxOTUxNywzMy4wMzkwNTggNDIuNjgxMjA3LDMzLjA3MjY2OTEgQzQyLjY4MTgyNjIsMzMuMDcyNjY5MSA0Mi42ODE4MjYyLDMzLjA3MzI5MTUgNDIuNjgxODI2MiwzMy4wNzMyOTE1IEM0Mi43NDQ5ODI3LDMzLjQ3NDc1NzUgNDIuNzMxOTc5OSwzMy44OTQyNzM5IDQyLjc0Njg0MDMsMzQuMjk3NjA3MiBDNDIuNzYyMzE5OCwzNC43MTQwMTE0IDQyLjc4NzA4NzEsMzUuMTI5NzkzMyA0Mi44MTI0NzM1LDM1LjU0NjgxOTkgQzQyLjg2MzI0NjQsMzYuMzY2NTU3NSA0Mi45NDI1MDE3LDM3LjE4NDQyNzcgNDMuMDAxMzI0LDM4LjAwNDc4NzcgQzQzLjExNzExMSwzOS42NDE3NzMgNDMuMTQxMjU5MSw0MS4yODA2MjU2IDQzLjEzMzgyODksNDIuOTIxMzQ1NiBDNDMuMTI2Mzk4Nyw0NC41NDE1MjU0IDQzLjA5ODUzNTUsNDYuMTU5ODM3OSA0My4wNTE0Nzc3LDQ3Ljc3ODc3MjggQzQyLjc1MzAzMjEsNDcuNzY2MzI0MiA0Mi40NTIxMDk3LDQ3Ljc2NjMyNDIgNDIuMTU0OTAyNCw0Ny43NjI1ODk3IEM0MS43ODQ2MzE3LDQ3Ljc1Njk4NzggNDEuNDE0MzYxLDQ3Ljc0OTUxODcgNDEuMDQ0MDkwMiw0Ny43MzU4MjUzIEM0MC4xOTcwNDk1LDQ3LjY5MzUwMDIgMzkuMzYxNzczMiw0Ny42MDIwMDMzIDM4LjUyNjQ5NjksNDcuNDUxMzc1NyBDMzcuNzA5MTc2OSw0Ny4zMDI2MTU1IDM2Ljg5NjgxMDMsNDcuMTAwOTQ4OCAzNi4xMDI0LDQ2Ljg1NjMzNDcgQzM1LjE1ODc2NjksNDYuNTE2NDg5IDM0LjIzMjQ3MDksNDYuMTM0OTQwNyAzMy4zMDkyNzA4LDQ1Ljc0MzQzMzYgQzMyLjgzOTkzMSw0NS41NDQ4NzkxIDMyLjM3OTg3ODksNDUuMzIxNDI3NSAzMS45MzE1OTEyLDQ1LjA3OTkyNTUgQzMxLjUyNjY0NjMsNDQuODYyMDc1NyAzMS4xMzcxODA5LDQ0LjYyMjQ0MSAzMC43NTAxOTIzLDQ0LjM3NTMzNzEgQzI5Ljk0Mjc3OTIsNDMuODEzMjg0NyAyOS4xNDA5Mzg3LDQzLjIzNDQyNjggMjguNDEzNCw0Mi41Njc4MDY1IEMyOC4wMjU3OTIyLDQyLjIxMjQwMDIgMjcuNjMxMzczNCw0MS44NjAxMDYgMjcuMjU5MjQ1MSw0MS40ODc4OTQxIEMyNi45MTU1OTkyLDQxLjE0NDkzNjQgMjYuNTc5MzgzNSw0MC43OTg4NjY1IDI2LjI0Njg4MjgsNDAuNDQ1MzI3NCBDMjYuMTA1NzA5NCw0MC4yNzc4OTQzIDI1Ljk2NTE1NTEsNDAuMTA5ODM4OCAyNS44MjQ2MDA4LDM5Ljk0MjQwNTcgQzI1LjY3MjkwMTMsMzkuNzYyNTI0IDI1LjUzOTE1OCwzOS41NjM5Njk1IDI1LjM5Nzk4NDUsMzkuMzc0NzUxNCBDMjUuMTMzNTkzOSwzOS4wMjA1OSAyNC44OTc2ODU2LDM4LjY0MjE1MzggMjQuNjYwNTM5LDM4LjI2ODY5NzEgQzI0LjE3MzI0MjksMzcuNTAxODY1OSAyMy43MjE4NTkzLDM2LjcxNTczOTUgMjMuMjgyODU5NCwzNS45MjAyNzY3IEMyMi45MDc2MzUyLDM1LjE4MjY5OTYgMjIuNTQ0MTc1NSwzNC40Mzk1MjA3IDIyLjIzODkxODgsMzMuNjY4MzMyNiBDMjIuMDc3MzEyNCwzMy4yNTg3NzUgMjEuOTA5NTE0MSwzMi44NDYxMDUzIDIxLjc4MzgyMDIsMzIuNDIyODU0NCBDMjEuNjU1NjQ5NSwzMS45ODUyODc2IDIxLjUzNjc2NjYsMzEuNTQ3NzIwOCAyMS40MjM0NTYzLDMxLjEwNTc5NyBDMjEuMjU3NTE1NiwzMC4zMjE1Mzc4IDIxLjEwODkxMiwyOS41MzU0MTE0IDIxLjAzMzk5MSwyOC43MzYyMTQgQzIwLjk1NDczNTcsMjcuODgyODY1MyAyMC44NzExNDYyLDI3LjAyODI3MTkgMjAuODkyMTk4MywyNi4xNzE4MTExIEMyMC45MjYyNTMzLDI1LjU3NDkwMjcgMjAuOTc3NjQ1NCwyNC45NzkyMzkyIDIxLjA0NTEzNjIsMjQuMzg0MTk4MiBDMjEuMDUzODA0OCwyNC4zMDk1MDY4IDIxLjA1NjI4MTUsMjQuMjM3MzA1MiAyMS4wNTI1NjY0LDI0LjE2NTcyNiBDMjEuMDY2ODA3NiwyNC4wMzk5OTU2IDIxLjA4MTA0ODgsMjMuOTEzNjQyNyAyMS4wOTk2MjQyLDIzLjc4NzI4OTggQzIxLjEzODAxMzUsMjMuNTIyNzU4IDIxLjE5NzQ1NSwyMy4yNjEzMzgzIDIxLjI1NTY1ODEsMjMuMDAwNTQxIEMyMS4zNjQ2MzQxLDIyLjUwOTQ0NTQgMjEuNTAyMDkyNCwyMi4wMjUxOTY1IDIxLjY1MTMxNTMsMjEuNTQ0NjgyMiBDMjEuODM0NTkzMSwyMC45NzE0MjYxIDIyLjAyNDA2MjcsMjAuNDAxMjgyMSAyMi4yNDQ0OTE1LDE5Ljg0MDQ3NDYgQzIyLjQ5MTU0NSwxOS4yMTEyIDIyLjc1MjgzOTcsMTguNTg2OTA0OCAyMy4wMzE0NzE2LDE3Ljk3MTMyMzcgQzIzLjI4NzgxMjgsMTcuNDAzNjY5NCAyMy41NjcwNjM4LDE2Ljg1MDk1MzUgMjMuODc1NDE2NCwxNi4zMDk0NDEyIEMyNC4xNjQ1NzQzLDE1LjgwMDkxNzYgMjQuNDc0MTY1MiwxNS4zMDI5NzUzIDI0Ljc4NzQ3MTIsMTQuODA4NzY3NSBDMjQuODI0NjIyMSwxNC43NTA4ODE4IDI0Ljg2MTc3MzEsMTQuNjkyOTk2IDI0Ljg5OTU0MzEsMTQuNjM1MTEwMiBDMjQuOTcxOTg3NCwxNC40NzcwMTM1IDI1LjAwMTA4OSwxNC4zMTE0NDc3IDI0Ljk4NjIyODYsMTQuMTM5MDM1MSBDMjQuOTg1NjA5NCwxNC4xMjkwNzYzIDI0Ljk4MzEzMjcsMTQuMTE5NzM5OSAyNC45ODE4OTQzLDE0LjExMDQwMzUgQzI0Ljk4MzEzMjcsMTQuMDcxMTkwNSAyNC45ODMxMzI3LDE0LjAzMTk3NzUgMjQuOTc5NDE3NiwxMy45OTI3NjQ2IEMyNC45NTUyNjk1LDEzLjczMjU4OTcgMjQuODMwMTk0OCwxMy41MzgzOTIyIDI0LjY1MTI1MTIsMTMuMzU5NzU1NCBDMjQuNDcwNDUwMSwxMy4xODA0OTYyIDI0LjI5MzM2NDEsMTIuOTk3NTAyNCAyNC4xMDIwMzY5LDEyLjgzMDA2OTMgQzIzLjkwODIzMywxMi42NjI2MzYyIDIzLjY5MzM3NjksMTIuNTI2MzI0NSAyMy40OTAyODUzLDEyLjM3MTk2MjQgQzIzLjA4NDcyMTIsMTIuMDY1MTA1NCAyMi42OTMzOTgzLDExLjczNjQ2MzUgMjIuMjgxMDIzMiwxMS40MzgzMjA1IEMyMS44NzU0NTkxLDExLjE0NTE1NyAyMS40NjM3MDMyLDEwLjg1NzU5NTMgMjEuMDc0MjM3OCwxMC41NDIwMjQ0IEMyMS4wMTM1NTgsMTAuNDkzNDc1IDIwLjk1MTYzOTgsMTAuNDQ2NzkyOSAyMC44OTA5NiwxMC4zOTg4NjYgQzIxLjI0NTc1MTIsMTAuMTcwNDM0OSAyMS41OTQ5Njk3LDkuOTMxNDIyNjIgMjEuOTMxMTg1NCw5LjY3ODA5NDQ2IFogTTQyLjEyMzk0MzMsLTAuNjAwNjc5Njg1IEM0Mi40ODk4Nzk4LC0wLjI1NDYwOTc3OSA0Mi44NTM5NTg3LDAuMDg4OTcwNDE1OCA0My4xOTg4NDMsMC40NTU1ODA0NDIgQzQzLjIxNjE4MDEsMC42MjM2MzU5NzIgNDMuMjE0MzIyNSwwLjc5MjkzNjM1OCA0My4yMTYxODAxLDAuOTYyODU5MTcxIEM0My4yMTc0MTg0LDEuMTU1ODExODIgNDMuMjE5ODk1MiwxLjM0ODE0MjAzIDQzLjIyMTc1MjcsMS41NDA0NzIyNSBDNDMuMjI2NzA2MiwxLjkzMzIyNDI1IDQzLjIzMjg5OCwyLjMyNTM1MzgyIDQzLjI0MDMyODIsMi43MTc0ODMzOSBDNDMuMjU3MDQ2MSwzLjU1NDAyNjQ3IDQzLjI3MTkwNjQsNC4zODk5NDcxMiA0My4yNzk5NTU4LDUuMjI3MTEyNjMgQzQzLjI5NzI5MjksNi45MTQ1MTQ2NCA0My4zMTg5NjQzLDguNjA2ODk2MDcgNDMuNDQxNTYyMywxMC4yOTExODU5IEM0My41NjcyNTYyLDEyLjAwNjU5NzIgNDMuODE2MTY3MywxMy43MTM5MTY5IDQ0LjA0NDAyNjIsMTUuNDE3NTAyIEM0NC4xNDkyODcxLDE2LjE5OTg5MzkgNDQuMjQ4OTc1NCwxNi45ODIyODU3IDQ0LjM0MTIzMzUsMTcuNzY1OTIyNCBDNDQuNDQwMzAyNiwxOC42MTc0MDM4IDQ0LjUzMzc5OSwxOS40Njc2NDAzIDQ0LjU3NTI4NDIsMjAuMzI0MTAxMSBDNDQuNjAxMjg5OCwyMC44ODMwNDEzIDQ0LjYwNjg2MjUsMjEuNDQwNzM2NyA0NC42MDI1MjgyLDIyLjAwMDI5OTQgQzQ0LjU5OTQzMjMsMjIuMDczNzQ1OSA0NC41OTYzMzY0LDIyLjE0NjU2OTkgNDQuNTkyMDAyMSwyMi4yMjAwMTY0IEM0NC41ODAyMzc3LDIyLjIxMzE2OTcgNDQuNTY4NDczMiwyMi4yMDYzMjMgNDQuNTU3MzI3OSwyMi4xOTk0NzYzIEM0NC4yOTE2OTg5LDIyLjA0NTExNDIgNDQuMDI3MzA4MywyMS44ODg4ODQ4IDQzLjc2MjI5ODUsMjEuNzMzOTAwMiBDNDMuNDUzOTQ1OSwyMS41NTMzOTYxIDQzLjE0NjgzMTcsMjEuMzcxMDI0OCA0Mi44Mzk3MTc1LDIxLjE4OTI3NTggQzQyLjgzMTA0OSwyMS4xMzEzOSA0Mi44MjA1MjI5LDIxLjA3MzUwNDIgNDIuODA4MTM5MywyMS4wMTQzNzM2IEM0Mi43Mzg3OTA5LDIwLjY4NTEwOTIgNDIuNjUzOTYzLDIwLjM1ODMzNDYgNDIuNTY2MDM5MiwyMC4wMzM0MjcyIEM0Mi40MDg3NjcsMTkuNDUwMjEyMyA0Mi4yNjA3ODI1LDE4Ljg2NTc1MjUgNDIuMTI0NTYyNSwxOC4yNzgxODA2IEM0MS45Njc5MDk1LDE3LjU3NDIxNDcgNDEuODQxNTk2NCwxNi44NjY1MTQxIDQxLjcyNTgwOTQsMTYuMTUzODM0MiBDNDEuNjYzODkxMiwxNS43NzUzOTgxIDQxLjU5MzkyMzcsMTUuMzk2OTYxOSA0MS41MzY5NTksMTUuMDE2NjU4NSBDNDEuNDczMTgzMiwxNC41OTQ2NTI0IDQxLjQyNjc0NDYsMTQuMTY5NTM0MSA0MS4zNzY1OTA5LDEzLjc0NTAzODMgQzQxLjE5NTc4OTgsMTIuMTg4MzQ2MSA0MS4wNTg5NTA2LDEwLjYyNzkxOTQgNDAuOTIyMTExNCw5LjA2Njg3MDI4IEM0MC44NDQwOTQ1LDguMTcxODE4OTcgNDAuNzY0MjIsNy4yNzczOTAxIDQwLjY5MzYzMzMsNi4zODE3MTYzNyBDNDAuNjI2NzYxNyw1LjUyOTYxMjU5IDQwLjYzMzU3MjcsNC42NzUwMTkxIDQwLjY1NzcyMDgsMy44MjE2NzA0NiBDNDAuNjk4NTg2OCwyLjk1NTg3MzI3IDQwLjc2MTEyNDEsMi4wOTEzMjA5MyA0MC44MTI1MTYyLDEuMjI2MTQ2MTcgQzQwLjg0MTYxNzgsMC43NTA2MTEyNjEgNDAuODY2Mzg1LDAuMjc0NDUzOTI3IDQwLjg5NDg2NzQsLTAuMjAyMzI1ODM2IEM0MC45MjM5Njg5LC0wLjY5MDMwOTMwMSA0MC45MjQ1ODgxLC0xLjE3ODkxNTE5IDQwLjkzODgyOTMsLTEuNjY4MTQzNTEgQzQwLjk0MTMwNiwtMS43MTIzMzU4OSA0MC45NDU2NDAzLC0xLjc1NjUyODI3IDQwLjk0ODczNjIsLTEuODAwNzIwNjUgQzQxLjMyODkxMzksLTEuMzg5OTE4MjUgNDEuNzE2NTIxNywtMC45ODQ3MTc2OTIgNDIuMTIzOTQzMywtMC42MDA2Nzk2ODUgWiBNNDIuMjg3NDA3MywtMy4xMTUyODgzNSBDNDIuMjcxOTI3OCwtMy4xMzIwOTM5MSA0Mi4yNTY0NDgyLC0zLjE0ODI3NzAzIDQyLjI0MTU4NzksLTMuMTY1MDgyNTggQzQyLjI0MTU4NzksLTMuMTY1NzA1MDEgNDIuMjQwOTY4NywtMy4xNjU3MDUwMSA0Mi4yNDA5Njg3LC0zLjE2NTcwNTAxIEM0Mi4yNTY0NDgyLC0zLjE0ODg5OTQ2IDQyLjI3MTkyNzgsLTMuMTMyMDkzOTEgNDIuMjg3NDA3MywtMy4xMTUyODgzNSBaIE00NS4yNTUxNDU5LDIyLjU4NDEzNjcgQzQ1LjI1MjA0OTksMjIuNTg0MTM2NyA0NS4yNDg5NTQsMjIuNTgzNTE0MyA0NS4yNDU4NTgxLDIyLjU4MzUxNDMgQzQ1LjI0NTg1ODEsMjIuNTgzNTE0MyA0NS4yNDU4NTgxLDIyLjU4MzUxNDMgNDUuMjQ1MjM4OSwyMi41ODM1MTQzIEM0NS4yNDgzMzQ5LDIyLjU4MzUxNDMgNDUuMjUyMDQ5OSwyMi41ODM1MTQzIDQ1LjI1NTE0NTksMjIuNTg0MTM2NyBaIE00MS4wMTQzNjk1LDIzLjIzODMwODQgQzQwLjI2NTE1OTUsMjMuMTgwNDIyNiAzOS41MTQ3MTExLDIzLjEzNDM2MyAzOC43NjQyNjI3LDIzLjA5NzYzOTcgQzM4LjAwNTE0NTgsMjMuMDYwMjk0MSAzNy4yNDY2NDgsMjMuMDE3MzQ2NSAzNi40ODc1MzExLDIyLjk5NzQyODggQzM2LjQ2MTUyNTUsMjIuOTk3NDI4OCAzNi40MzYxMzksMjIuOTk3NDI4OCAzNi40MTAxMzM0LDIyLjk5NjE4NCBDMzYuMzcyMzYzMywyMi40NDg0NDc1IDM2LjM2Njc5MDcsMjEuODk3NTk4OCAzNi4zODQxMjc4LDIxLjM0ODYxNzQgQzM2LjM4NDEyNzgsMjEuMzQ3OTk0OSAzNi4zODQxMjc4LDIxLjM0Nzk5NDkgMzYuMzg0MTI3OCwyMS4zNDczNzI1IEMzNi40MjI1MTcsMjEuMzUzNTk2OCAzNi40NjA5MDYzLDIxLjM1NzMzMTQgMzYuNDk4Njc2NCwyMS4zNjQ4MDA1IEMzNi43Mjk2MzEyLDIxLjQwODk5MjkgMzYuOTU1NjMyNiwyMS40NzQ5NzAyIDM3LjE4NDExMDcsMjEuNTMwMzY2MyBDMzcuNjY5NTQ5MiwyMS42NTExMTczIDM4LjE1NTYwNywyMS43Njc1MTEzIDM4LjY0MjkwMzEsMjEuODc5NTQ4NCBDMzkuMTEyODYyMSwyMS45ODcyMjg0IDM5LjU4MDk2MzYsMjIuMTAzNjIyNCA0MC4wNTQwMTg1LDIyLjE5NTExOTMgQzQwLjQzMTcxOTQsMjIuMjY4NTY1OCA0MC44MDk0MjAzLDIyLjMzMzkyMDcgNDEuMTg3NzQwNCwyMi4zOTkyNzU2IEM0MS4yMTkzMTg3LDIyLjQyMTA2MDYgNDEuMjUxNTE2MSwyMi40NDE2MDA3IDQxLjI4NjE5MDMsMjIuNDYyMTQwOSBDNDEuODIxNzgyNiwyMi43Nzk1NzkxIDQyLjM1OTIzMjQsMjMuMDk1NzcyNSA0Mi44OTYwNjMxLDIzLjQxMTk2NTggQzQyLjI2NzU5MzUsMjMuMzYzNDE2NCA0MS42NDI4MzkxLDIzLjI4NzQ4MDIgNDEuMDE0MzY5NSwyMy4yMzgzMDg0IFogTTQ2LjkwNzc0MjIsMzUuNDA5ODg1OCBDNDYuOTg4ODU1LDM1LjQ2NzE0OTIgNDcuMDY2ODcxOSwzNS41MjQ0MTI1IDQ3LjE0MjQxMjEsMzUuNTg3Mjc3NyBDNDcuMTQ0ODg4OCwzNS41OTQ3NDY5IDQ3LjE0Nzk4NDcsMzUuNjAyMjE2IDQ3LjE1MDQ2MTQsMzUuNjA5Njg1MiBDNDcuMTk2MjgwOSwzNS45NTY5OTk5IDQ3LjE5NDQyMzQsMzYuMzA4MDQ5MiA0Ny4yMDEyMzQ0LDM2LjY1ODQ3NjEgQzQ3LjIwODY2NDUsMzcuMDU2ODMgNDcuMjE3OTUyMywzNy40NTU4MDYzIDQ3LjIzMDMzNTksMzcuODU1NDA1IEM0Ny4yNTUxMDMyLDM4LjY1NzA5MjEgNDcuMzA2NDk1MywzOS40NTc1MzQ0IDQ3LjM0NTUwMzcsNDAuMjU5MjIxNSBDNDcuNDI1OTk3NCw0MS44OTQ5NjIgNDcuNTU1NDA2NCw0My41Mjk0NTc2IDQ3LjYxNjA4NjIsNDUuMTY1ODIwNSBDNDcuNjU4ODA5Nyw0Ni4zNjA4ODIxIDQ3LjY0NTgwNjksNDcuNTU4NDMzMyA0Ny42MDA2MDY2LDQ4Ljc1Mjg3MjQgQzQ3LjU3NTIyMDIsNDkuMjg0NDI1OSA0Ny41NDQ4ODAzLDQ5LjgyMDMzNjMgNDcuNDcxMTk3Niw1MC4zNDgxNTUxIEM0Ny4zNjkwMzI2LDUwLjI4NTI4OTkgNDcuMjY2ODY3Niw1MC4yMjE4MDIzIDQ3LjE2NTk0MSw1MC4xNTcwNjk4IEM0Ni42NDM5NzA3LDQ5LjgwOTEzMjYgNDYuMTMwMDQ5OCw0OS40NTE4NTkgNDUuNjAzNzQ1Miw0OS4xMTA3Njg1IEM0NS4zNjkwNzUzLDQ4Ljk1ODI3MzYgNDUuMTMzMTY3LDQ4LjgwODI2ODUgNDQuODk3ODc3OSw0OC42NTc2NDEgQzQ0LjkwNjU0NjUsNDguNTg4NTUxNSA0NC45MTAyNjE2LDQ4LjUxNzU5NDcgNDQuOTA0MDY5OCw0OC40NDUzOTMxIEM0NC45NjIyNzI4LDQ2LjcxNjkxMDggNDUuMDAxMjgxMyw0NC45ODkwNTEgNDUuMDA5MzMwNyw0My4yNTk5NDYzIEM0NS4wMTMwNDU4LDQyLjQzMjExNzIgNDUuMDI1NDI5NCw0MS42MDM2NjU3IDQ1LjAwODA5MjMsNDAuNzc1MjE0MiBDNDQuOTkwMTM2LDM5LjkzNDMxNDEgNDQuOTU0ODQyNywzOS4wOTI3OTE2IDQ0LjkwNjU0NjUsMzguMjUzMTM2NCBDNDQuODQzMzg5OSwzNy4xNzYzMzYxIDQ0LjczMTMxOCwzNi4xMDMyNzA1IDQ0LjY3MDAxOSwzNS4wMjU4NDc4IEM0NC42NTUxNTg3LDM0Ljc3Mzc2NDUgNDQuNjQzMzk0MiwzNC41MjIzMDM2IDQ0LjYzMjg2ODEsMzQuMjcwMjIwMyBDNDQuNzkxOTk3OCwzNC4zNDc0MDE0IDQ0Ljk1MzYwNDMsMzQuNDE5NjAzIDQ1LjExODMwNjcsMzQuNDg2ODI1MiBDNDUuNzQ0Mjk5NSwzNC43NDEzOTgyIDQ2LjMzNTYxODIsMzUuMDUzODU3IDQ2LjkwNzc0MjIsMzUuNDA5ODg1OCBaIE00Ny4zMzA2NDM0LDUyLjkwMzg0NCBDNDcuMTg2Mzc0LDUyLjk3MTY4ODcgNDcuMDM5NjI3OSw1My4wMzIwNjQyIDQ2Ljg4NzMwOTIsNTMuMDc5OTkxMSBDNDYuNjQ4OTI0Miw1My4xMTU0Njk1IDQ2LjQxMjM5NjcsNTMuMTEyMzU3NCA0Ni4xNjc4MTk5LDUzLjEwODAwMDQgQzQ1LjkyNDQ4MTQsNTMuMTAzNjQzNCA0NS42ODExNDMsNTMuMDk2Nzk2NyA0NS40MzcxODUzLDUzLjA4NzQ2MDMgQzQ0LjkyMzI2NDQsNTMuMDYzMTg1NiA0NC40MDkzNDM1LDUzLjAyNjQ2MjMgNDMuODk3ODk5Myw1Mi45NjY3MDkyIEM0My4yOTkxNTA0LDUyLjg5NjM3NDkgNDIuNzA3ODMxOCw1Mi43OTE4MDcgNDIuMTE2NTEzMiw1Mi42NzQ3OTA2IEM0MS4wNzAwOTU5LDUyLjQ2OTM4OTQgNDAuMDQyMjU0LDUyLjE3NjIyNTggMzkuMDI0OTM4Myw1MS44NTY5MjAzIEMzOC4zNTYyMjE5LDUxLjYzNTk1ODQgMzcuNjk3NDEyNCw1MS4zOTI1ODkxIDM3LjA0NjY1MjMsNTEuMTIxODMzIEMzNi4zNTA2OTE5LDUwLjgzMjQwNCAzNS42Njg5NzI3LDUwLjUwOTk4NjQgMzQuOTg0MTU3Niw1MC4xOTgxNSBDMzMuNjk1NjQwMiw0OS42MTE4MjI5IDMyLjQzMTI3MDksNDguOTg0NDE1NiAzMS4yMzYyNSw0OC4yMjM4MDg3IEMzMC40ODMzMjQ5LDQ3LjcxNDY2MjcgMjkuNzM2NTkxNiw0Ny4xODkzMzM2IDI5LjAxNjQ4MzEsNDYuNjM1MzcyOCBDMjguNjU3OTc2OSw0Ni4zNjAyNTk2IDI4LjMxMzcxMTgsNDYuMDcyMDc1NSAyNy45Njc1ODkxLDQ1Ljc4MjY0NjYgQzI3LjY0ODcxMDUsNDUuNTE2ODY5OSAyNy4zNDUzMTE0LDQ1LjI0MzAwMTYgMjcuMDYwNDg3Nyw0NC45NDExMjQxIEMyNi40NzQ3NDE3LDQ0LjI4MDEwNTYgMjUuOTM3MjkxOSw0My41NzgwMDcgMjUuNDg0NjcsNDIuODE2Nzc3NyBDMjUuMjU1NTcyNyw0Mi40MzE0OTQ4IDI1LjAzMjY2NzIsNDIuMDQyNDc3NCAyNC44MTQ3MTUyLDQxLjY1MDk3MDIgQzI1LjI1MzcxNTIsNDIuMTQ1ODAwNCAyNS43MTEyOTA1LDQyLjYyMzgyNSAyNi4xOTE3NzU2LDQzLjA4MDA2NDcgQzI2LjgyMjcyMTksNDMuNjc4ODQwMyAyNy40NTkyNDA4LDQ0LjI2NzY1NzEgMjguMTQyMTk4NCw0NC44MDY2Nzk2IEMyOC40NTU1MDQ0LDQ1LjA1MzE2MTEgMjguNzczMTQ0Nyw0NS4yOTQ2NjMxIDI5LjEwMDA3MjcsNDUuNTIxODQ5MyBDMjkuNTA3NDk0Myw0NS44MDU2NzY0IDI5LjkxNjc3MzUsNDYuMDkzODYwNSAzMC4zNDQ2MjgyLDQ2LjM0NjU2NjIgQzMxLjA2NjU5NDIsNDYuNzczNTUxOCAzMS44MDQwMzk3LDQ3LjE2MDcwMTkgMzIuNTc2Nzc4Nyw0Ny40ODg3MjE0IEMzMy4zNjI1MjA0LDQ3LjgyMjM0MjggMzQuMTQ5NTAwNSw0OC4xNTg0NTM4IDM0Ljk1MjU3OTQsNDguNDQ2NjM3OSBDMzUuMzMwODk5NSw0OC41ODIzMjcyIDM1LjcxMTY5NjMsNDguNzE2MTQ5MiAzNi4wOTk5MjMzLDQ4LjgyMjU4NDQgQzM2LjQ0OTc2MSw0OC45MTc4MTU4IDM2LjgwMjA3NTUsNDkuMDA4MDY3OSAzNy4xNTU2MjgzLDQ5LjA5NDU4NTQgQzM3LjgxNjI5NTMsNDkuMjU1MTcxOCAzOC40ODc0ODg0LDQ5LjM4NzEyNjUgMzkuMTYxNzc3NSw0OS40NzIzOTkxIEM0MC40MjQ5MDg0LDQ5LjYzMjM2MzEgNDEuNjk1NDY5NSw0OS42MjYxMzg4IDQyLjk2NTQxMTQsNDkuNjYyMjM5NiBDNDIuOTg0NjA2MSw0OS42NzI4MjA5IDQzLjAwMzE4MTUsNDkuNjg0NjQ3IDQzLjAyMzYxNDUsNDkuNjk1MjI4MyBDNDMuNTg5NTQ2Nyw1MC4wNTMxMjQzIDQ0LjE1NjcxNzMsNTAuNDExMDIwMyA0NC43MTg5MzQ0LDUwLjc3Mzg5NTggQzQ1LjQyMTA4NjYsNTEuMjM1NzM3MyA0Ni4xMDQwNDQxLDUxLjcyNDM0MzIgNDYuODIzNTMzNCw1Mi4xNjAwNDI3IEM0Ni45ODAxODY0LDUyLjI1NDY1MTcgNDcuMTM3NDU4Niw1Mi4zNDkyNjA4IDQ3LjI5NjU4ODQsNTIuNDQyMDAyNSBDNDcuNDQwMjM4NSw1Mi41MjU0MDc5IDQ3LjU5NDQxNDgsNTIuNTgwMTgxNSA0Ny43NTQ3ODI5LDUyLjYyMDYzOTMgQzQ3LjczNjgyNjYsNTIuNjMzMDg3OSA0Ny43MTgyNTEyLDUyLjY0NDI5MTYgNDcuNzAwMjk0OSw1Mi42NTY3NDAyIEM0Ny41Nzc2OTY5LDUyLjc0MjAxMjggNDcuNDU3NTc1Niw1Mi44MjcyODU0IDQ3LjMzMDY0MzQsNTIuOTAzODQ0IFogTTIwLjkyNDM5NTgsMTIuNzg1ODc2OSBDMjAuOTcwMjE1MiwxMi44MTg4NjU2IDIxLjAxNjAzNDcsMTIuODUxMjMxOCAyMS4wNjEyMzUsMTIuODg0MjIwNSBDMjEuNDYzNzAzMiwxMy4xNzQ4OTQzIDIxLjg0Njk3NjcsMTMuNDk0ODIyMyAyMi4yNDI2MzM5LDEzLjc5NjA3NzQgQzIyLjQzOTUzMzcsMTMuOTQ2NzA0OSAyMi42NTI1MzIzLDE0LjA3NjE2OTkgMjIuODM5NTI1MiwxNC4yMzkyNDYgQzIyLjg1OTk1ODIsMTQuMjU2Njc0IDIyLjg3ODUzMzYsMTQuMjc1OTY5MyAyMi44OTgzNDc1LDE0LjI5NDAxOTcgQzIyLjcxODc4NDcsMTQuNTgwOTU4OSAyMi41NDI5MzcxLDE0Ljg3MDM4NzkgMjIuMzcxNDIzNywxNS4xNjIzMDY2IEMyMi4zNDE3MDMsMTUuMTE2ODY5NCAyMi4zMTMyMjA2LDE1LjA3MDE4NzMgMjIuMjgzNDk5OSwxNS4wMjQ3NSBDMjEuOTk0OTYxMiwxNC41OTI3ODUxIDIxLjcyNjIzNjMsMTQuMTQ5NjE2NCAyMS40NTkzNjg5LDEzLjcwMzk1OCBDMjEuMjc3MzI5NCwxMy40MDAyMTMyIDIxLjA5OTYyNDIsMTMuMDkzMzU2MyAyMC45MjQzOTU4LDEyLjc4NTg3NjkgWiBNMTkuOTAyNzQ1OCwxNC43NzIwNDQzIEMyMC4xNjQ2NTk3LDE1LjIxMDIzMzUgMjAuNDI4NDMxMSwxNS42NDQ2ODgyIDIwLjcxMDc3ODEsMTYuMDcwNDI4OSBDMjAuODYwMDAwOSwxNi4yOTM4ODA1IDIxLjAwNzk4NTMsMTYuNTE3MzMyMSAyMS4xNDc5MjA0LDE2Ljc0NzYzMDQgQzIxLjIxNzg4OCwxNi44NjI3Nzk2IDIxLjI4NjYxNzIsMTYuOTc5Nzk2IDIxLjM1NTk2NTUsMTcuMDk1NTY3NiBDMjEuMjc5ODA2MiwxNy4yNjIzNzgzIDIxLjIwNTUwNDMsMTcuNDI5ODExNCAyMS4xMzI0NDA5LDE3LjU5Nzg2NjkgQzIwLjgyMTYxMTYsMTguMzA0OTQ1IDIwLjUyMzc4NTEsMTkuMDIzMjI2OCAyMC4yNjkzMDE0LDE5Ljc1MzMzNDcgQzE5Ljk4NzU3MzcsMjAuNTYzNzM1OCAxOS43MjAwODcxLDIxLjM4NDcxODIgMTkuNTA4OTQ2MSwyMi4yMTY5MDQzIEMxOS40MjUzNTY2LDIyLjU0Njc5MTEgMTkuMzQ5ODE2NCwyMi44Nzg1NDUxIDE5LjI4MzU2MzksMjMuMjEyMTY2NSBDMTkuMjA4NjQyOSwyMy41OTM3MTQ4IDE5LjE3NTgyNjMsMjMuOTgzMzU0NiAxOS4xNDExNTIxLDI0LjM3MTEyNzIgQzE5LjEzNTU3OTUsMjQuNDM2NDgyMSAxOS4xMzMxMDI4LDI0LjUwMDU5MjIgMTkuMTM0OTYwMywyNC41NjI4MzUgQzE5LjEwNzA5NzEsMjQuODM3OTQ4MSAxOS4wODEwOTE1LDI1LjExNDMwNjEgMTkuMDYzMTM1MiwyNS4zOTA2NjQxIEMxOS4wMzA5Mzc3LDI1Ljg3MTE3ODQgMTguOTk1NjQ0NCwyNi4zNTQ4MDQ5IDE5LjAwODY0NzIsMjYuODM1OTQxNiBDMTkuMDMyMTc2MSwyNy42NTQ0MzQzIDE5LjA5NzE5MDIsMjguNDc4NTI4OCAxOS4yMDA1OTM2LDI5LjI5MTQxOTcgQzE5LjI0MTQ1OTYsMjkuNjE1MDgyMiAxOS4yOTIyMzI1LDI5LjkzNjg3NzQgMTkuMzQ3MzM5NywzMC4yNTc0Mjc3IEMxOS4yODEwODcyLDMwLjQwMjQ1MzQgMTkuMjUwMTI4MSwzMC41NjU1Mjk1IDE5LjI2NjIyNjgsMzAuNzMyOTYyNiBDMTkuMjk3MTg1OSwzMS4wNjQwOTQzIDE5LjMyMTMzNCwzMS4zOTgzMzgxIDE5LjM2NTkxNTEsMzEuNzI3NjAyNCBDMTkuNDEzNTkyMSwzMi4wNzkyNzQyIDE5LjQ5NDA4NTgsMzIuNDIzNDc2OCAxOS41Nzg5MTM3LDMyLjc2ODMwMTggQzE5LjY0OTUwMDQsMzMuMTEyNTA0NSAxOS42OTkwMzQ5LDMzLjQ2MTA2NDEgMTkuNzcwMjQwOSwzMy44MDQ2NDQzIEMxOS44NjM3MzczLDM0LjI1MDMwMjYgMTkuOTY4Mzc5LDM0LjY5MDM1OTIgMjAuMTA3MDc1OCwzNS4xMjQxOTE0IEMyMC4zNDY2OTkxLDM1Ljg3Mjk3MjEgMjAuNTk0OTkxMSwzNi42MTk4ODU2IDIwLjg1MDA5NCwzNy4zNjMwNjQ1IEMyMS4wODk3MTczLDM4LjA1OTU2MTMgMjEuMzc1Nzc5MywzOC43MzU1MTggMjEuNjUzNzkyLDM5LjQxNzA3NjUgQzIxLjc5MTg2OTUsMzkuNzU1MDU0OSAyMS45MjYyMzIsNDAuMDk0Mjc4MSAyMi4wNzYwNzQsNDAuNDI3Mjc3IEMyMi4yNTc0OTQzLDQwLjgyOTM2NTQgMjIuNDUzNzc0OSw0MS4yMjA4NzI2IDIyLjY1ODcyNDEsNDEuNjEwNTEyNCBDMjMuMDAyOTg5Miw0Mi4yNjM0MzkzIDIzLjM1ODM5OTYsNDIuOTA4ODk3IDIzLjcyOTI4OTUsNDMuNTQ2ODg1NiBDMjMuOTI4NjY2LDQzLjg5MDQ2NTggMjQuMTM1NDcyOCw0NC4yMjk2ODkgMjQuMzU2NTIwNyw0NC41NjA4MjA2IEMyNC41NjgyODA5LDQ0Ljg3NzYzNjQgMjQuODA0ODA4Myw0NS4xNzcwMjQyIDI1LjA0NTY3MDEsNDUuNDcyNjc3NSBDMjUuMzQ3MjExNiw0NS44NDQyNjY5IDI1LjY2NDIzMjcsNDYuMjA0MDMwMiAyNS45OTQyNTY2LDQ2LjU1MDEwMDEgQzI2LjIzNTczNzUsNDYuODAzNDI4MyAyNi41MDQ0NjI1LDQ3LjAyNTYzNTEgMjYuNzcyNTY4Miw0Ny4yNDkwODY3IEMyNy4wNjQyMDI4LDQ3LjQ5MzA3ODQgMjcuMzUyNzQxNiw0Ny43Mzk1NTk4IDI3LjY1NDI4MzEsNDcuOTcxNzI1NCBDMjcuOTg1NTQ1NCw0OC4yMjY5MjA5IDI4LjMyMzYxODcsNDguNDczNDAyMyAyOC42NjM1NDk1LDQ4LjcxODAxNjUgQzI5LjM2NTcwMTcsNDkuMjIxNTYwNiAzMC4wNjg0NzMxLDQ5LjcyMDc0NzggMzAuODAzNDQxOSw1MC4xNzQ0OTc3IEMzMS40OTM4Mjk3LDUwLjYwMDg2MDggMzIuMjEyNjk5OCw1MC45NzgwNTIxIDMyLjk0MjA5Niw1MS4zMzA5Njg4IEMzMy43MTM1OTY1LDUxLjcwNDQyNTUgMzQuNDk1MDA0LDUyLjA1NjcxOTcgMzUuMjc1MTczMSw1Mi40MTAyNTg3IEMzNi4wMTUwOTU0LDUyLjc0NjM2OTggMzYuNzYzMDY3LDUzLjA2OTQwOTkgMzcuNTMwMjMzMyw1My4zMzc2NzYzIEMzOC4zNTk5MzcsNTMuNjI4MzUwMSAzOS4xOTk1NDc1LDUzLjg4OTE0NzQgNDAuMDQ3MjA3NSw1NC4xMjE5MzU0IEM0MC44NDU5NTIsNTQuMzQxNjUyNSA0MS42NDk2NTAxLDU0LjUxOTY2NjggNDIuNDYzODc0Miw1NC42NzA5MTY4IEM0My4yMzA0MjEzLDU0LjgxNDY5NzYgNDQuMDA4MTEzNiw1NC44ODg3NjY2IDQ0Ljc4NTE4NjgsNTQuOTM3OTM4NCBDNDUuMjQ5NTczMiw1NC45NjcxOTI1IDQ1LjcxNTgxNzEsNTQuOTgwODg1OSA0Ni4xODAyMDM1LDU0Ljk5MjA4OTYgQzQ2LjM2ODQzNDgsNTQuOTk3MDY5IDQ2LjU1NjY2NjEsNTUuMDAxNDI2IDQ2Ljc0NDg5NzMsNTQuOTk5NTU4NyBDNDYuOTk2OTA0Myw1NC45OTcwNjkgNDcuMjQ3NjczLDU0Ljk0MDQyODEgNDcuNDg5NzczMSw1NC44NzM4MjgzIEM0Ny44ODE3MTUyLDU0Ljc2Njc3MDcgNDguMjY0OTg4Nyw1NC41NjU3MjY1IDQ4LjU5OTM0NjksNTQuMzM4NTQwMyBDNDguNzUwNDI3Myw1NC4yMzUyMTczIDQ4Ljg5OTAzMDksNTQuMTMwNjQ5NCA0OS4wNTM4MjY0LDU0LjAzMTY4MzQgQzQ5LjE5NTYxOSw1My45NDA4MDg5IDQ5LjMyMzc4OTcsNTMuODMxODg0IDQ5LjQ0MzI5MTgsNTMuNzEzMDAwMyBDNDkuNTAyNzMzMiw1My42NTQ0OTIxIDQ5LjU0OTE3MTksNTMuNTk3ODUxMSA0OS41OTQ5OTEzLDUzLjUyNzUxNjggQzQ5LjY2MDYyNDYsNTMuNDQwMzc2OSA0OS43MTc1ODkzLDUzLjM0NzYzNTEgNDkuNzY1MjY2Myw1My4yNDkyOTE1IEM0OS44MDkyMjgyLDUzLjE0NTk2ODUgNDkuODQ1MTQwOCw1My4wMzg5MTA5IDQ5Ljg3MzAwNCw1Mi45MjkzNjM2IEM0OS45OTU2MDIsNTIuNTI0MTYzIDUwLjAwMzAzMjEsNTIuMDgwMzcxOSA0OS45OTkzMTcsNTEuNjYwODU1NSBDNDkuOTk3NDU5NSw1MS40Nzg0ODQyIDQ5Ljk4MTM2MDgsNTEuMjk2NzM1MiA0OS45NzE0NTM5LDUxLjExNDk4NjMgQzQ5Ljk2NTg4MTIsNTEuMDIyODY3IDQ5Ljk2MjE2NjEsNTAuOTMxOTkyNSA0OS45NTY1OTM1LDUwLjg0MDQ5NTYgQzQ5Ljk0MTczMzEsNTAuNjIwNzc4NSA0OS44ODc4NjQzLDUwLjQwODUzMDYgNDkuODM0NjE0Nyw1MC4xOTU2NjAzIEM0OS44MjY1NjUzLDUwLjE2NDUzODkgNDkuODE1NDIsNTAuMTM0NjYyNCA0OS44MDE3OTgsNTAuMTA0Nzg1OCBDNDkuNzgxMzY1LDQ5LjI2MjAxODUgNDkuNzcwMjE5OCw0OC40MTg2Mjg3IDQ5Ljc2ODk4MTQsNDcuNTc0NjE2NSBDNDkuNzY3MTIzOSw0NS45NzY4NDQxIDQ5LjgwMzY1NTYsNDQuMzc0NzE0NyA0OS43MTc1ODkzLDQyLjc3ODE4NzEgQzQ5LjY3OTIsNDIuMDgyOTM1MiA0OS42NDIwNDkxLDQxLjM4NzY4MzIgNDkuNjA2NzU1OCw0MC42OTE4MDg5IEM0OS41OTAwMzc5LDQwLjM0ODg1MTEgNDkuNTgwMTMwOSw0MC4wMDUyNzA5IDQ5LjU1NDc0NDUsMzkuNjYzNTU4IEM0OS41Mjg3Mzg5LDM5LjMxNjg2NTcgNDkuNDkzNDQ1NSwzOC45NzE0MTgyIDQ5LjQ2MDAwOTcsMzguNjI0NzI1OCBDNDkuMzk3NDcyMywzNy45NzU1MzM2IDQ5LjM1MzUxMDQsMzcuMzI1MDk2NCA0OS4yODY2Mzg4LDM2LjY3NzE0OSBDNDkuMjE3OTA5NiwzNi4wMDM2ODIgNDkuMTM2MTc3NiwzNS4zMDkwNTI1IDQ4Ljk0Nzk0NjMsMzQuNjU3OTkyOSBDNDguODgxNjkzOCwzNC40MzAxODQzIDQ4LjY3NjEyNTUsMzQuMjI5NzYyNSA0OC40Njc0NjEyLDM0LjEzMDc5NjUgQzQ4LjQwNDMwNDYsMzQuMTAwOTIgNDguMzM3NDMzLDM0LjA3Nzg5MDEgNDguMjY5MzIzLDM0LjA2Mjk1MTggQzQ4LjIyNzIxODYsMzQuMDMxODMwNSA0OC4xODUxMTQzLDM0LjAwMjU3NjMgNDguMTQyMzkwNywzMy45NzMzMjIyIEM0Ny45ODYzNTY5LDMzLjg2NzUwOTUgNDcuODI3ODQ2NCwzMy43NjM1NjQgNDcuNjY3NDc4MywzMy42NjU4NDI5IEM0Ny4yNjYyNDg0LDMzLjQxODczOSA0Ni44NTUxMTE3LDMzLjE4NDcwNjEgNDYuNDI3MjU3MSwzMi45ODczOTY1IEM0Ni4wNjY4OTMyLDMyLjgyMDU4NTggNDUuNjkyMjg4MiwzMi42ODkyNTM1IDQ1LjMzNjg3NzksMzIuNTA5MzcxOCBDNDQuOTkzMjMxOSwzMi4zMzUwOTIgNDQuNjYzMjA4LDMyLjEyNTk1NjMgNDQuMzMxMzI2NiwzMS45Mjc0MDE4IEM0NC4yNTUxNjcyLDMxLjg3Mzg3MyA0NC4xNzU5MTE5LDMxLjgzMTU0NzkgNDQuMDk1NDE4MywzMS43OTczMTQzIEM0My44OTM1NjUsMzEuNTc1MTA3NiA0My42NDUyNzMxLDMxLjQwNzY3NDUgNDMuMzU0MjU3NiwzMS4zMDM3MjkgQzQzLjE4ODMxNjksMzEuMjQzOTc1OSA0My4wMTg2NjExLDMxLjE5MjkzNjkgNDIuODUwMjQzNiwzMS4xNDEyNzUzIEM0Mi4zODc3MTQ4LDMwLjk5MDAyNTQgNDEuOTIwMjMyNSwzMC44MzU2NjMyIDQxLjQ3NzUxNzUsMzAuNjM1MjQxNSBDNDEuMDAwNzQ3NSwzMC40MjA1MDM4IDQwLjU1NDkzNjYsMzAuMTYxNTczOCA0MC4xMTUzMTc1LDI5Ljg4MjEwMzcgQzM5Ljg2ODI2MzksMjkuNzEwOTM2MSAzOS42MjM2ODcxLDI5LjUzODUyMzUgMzkuMzkyNzMyMywyOS4zNDU1NzA5IEMzOS4xNzQxNjExLDI5LjE2MjU3NzEgMzguOTc2NjQyMSwyOC45NjA5MTA0IDM4Ljc4MjIxOSwyOC43NTQyNjQ0IEMzOC41Mzc2NDIyLDI4LjQ2OTE5MjQgMzguMjk4NjM4LDI4LjE3Nzg5NjIgMzguMDkxODMxMiwyNy44NjM1NzAxIEMzNy44NzgyMTM1LDI3LjUzODA0MDMgMzcuNjc4ODM3LDI3LjIxMDY0MzIgMzcuNDkxMjI0OSwyNi44NzA3OTc2IEMzNy4zMDg1NjYyLDI2LjQ5NTQ3MzYgMzcuMTIzNDMwOSwyNi4xMTc2NTk5IDM2Ljk4NDExNSwyNS43MjM2NjMgQzM2Ljg4NjI4NDIsMjUuNDQ4NTQ5OSAzNi44MDA4MzcxLDI1LjE3MDk0NyAzNi43MjA5NjI3LDI0Ljg5MTQ3NjkgQzM2Ljg4OTk5OTMsMjQuODk1MjExNSAzNy4wNTkwMzYsMjQuODk3NzAxMiAzNy4yMjg2OTE4LDI0LjkwMzkyNTUgQzM4LjMxNDczNjcsMjQuOTUxODUyNCAzOS40MDIwMiwyNS4wMDYwMDM2IDQwLjQ4NjIwNzQsMjUuMDkwMDMxNCBDNDEuMTIwMjQ5NiwyNS4xMzg1ODA4IDQxLjc1MTgxNTEsMjUuMjEzODk0NiA0Mi4zODY0NzY0LDI1LjI2ODA0NTggQzQyLjc1NjEyOCwyNS4yOTkxNjcyIDQzLjEyNjM5ODcsMjUuMzE3MjE3NiA0My40OTc5MDc4LDI1LjMyMjE5NyBDNDMuOTIzMjg1NywyNS4zMjg0MjEzIDQ0LjMzMDA4ODIsMjUuMjM0NDM0NyA0NC43Mjg4NDEzLDI1LjA5MTI3NjMgQzQ1LjEzNTAyNDYsMjQuOTQ1NjI4MSA0NS40ODMwMDQ4LDI0LjcwMjI1ODggNDUuODI2NjUwNywyNC40NDgzMDgzIEM0Ni4wODIzNzI4LDI0LjI2MDMzNSA0Ni4yMjQxNjU0LDIzLjk2NTkyNjYgNDYuMjI2MDIzLDIzLjY2NjUzODggQzQ2LjIyNjY0MjEsMjMuNjY0MDQ5MSA0Ni4yMjg0OTk3LDIzLjY2MjE4MTggNDYuMjI5NzM4MSwyMy42NTk2OTIxIEM0Ni4yOTI4OTQ2LDIzLjUyMzM4MDQgNDYuMzI4ODA3MiwyMy4zNjkwMTgzIDQ2LjM2NTk1ODEsMjMuMjIzMzcwMiBDNDYuMzkyNTgyOSwyMy4xMjAwNDcxIDQ2LjQwODA2MjQsMjMuMDExNzQ0NyA0Ni40MTkyMDc3LDIyLjkwNDY4NzEgQzQ2LjU5MDEwMTksMjEuMTMzMjU3MyA0Ni40MjQxNjEyLDE5LjM0NzUxMTcgNDYuMjE4NTkyOCwxNy41ODcyODU2IEM0Ni4wMjI5MzEzLDE1LjkxNDE5OTUgNDUuNzgyMDY5NiwxNC4yNDczMzc2IDQ1LjU3NDY0MzcsMTIuNTc2MTE4NyBDNDUuNDczNzE3LDExLjc1NjM4MTIgNDUuMzc5NjAxNCwxMC45MzUzOTg4IDQ1LjMxOTU0MDgsMTAuMTExOTI2NyBDNDUuMjU4MjQxOCw5LjI3MTAyNjYzIDQ1LjIyNDgwNTksOC40MjgyNTkyNiA0NS4yMDQzNzI5LDcuNTg1NDkxOSBDNDUuMTYyMjY4Niw1LjkwMzA2OTMyIDQ1LjE1MDUwNDEsNC4yMjA2NDY3NCA0NS4xMTgzMDY3LDIuNTM4ODQ2NTggQzQ1LjExMDg3NjUsMi4xNDYwOTQ1OSA0NS4xMDQ2ODQ3LDEuNzUzOTY1MDIgNDUuMDk5NzMxMiwxLjM2MjQ1Nzg4IEM0NS4wOTcyNTQ1LDEuMTc4MjE5MjIgNDUuMDk1Mzk2OSwwLjk5NDYwMjk5MyA0NS4wOTM1Mzk0LDAuODEwMzY0MzM4IEM0NS4wOTE2ODE5LDAuNTc2MzMxNDUyIDQ1LjA5NjYzNTMsMC4zNDM1NDM0MjIgNDUuMDUzMjkyNiwwLjExMjAwMDI0OCBDNDQuOTk5NDIzOCwtMC4xODY3NjUxMzkgNDQuODk2MDIwNCwtMC40NTQ0MDkxMzEgNDQuNjk3MjYzLC0wLjY4NjU3NDczMyBDNDQuNTkxMzgyOSwtMC44MDk4MTU0NTUgNDQuNDc4MDcyNywtMC45MjgwNzY3NTQgNDQuMzY4NDc3NSwtMS4wNDc1ODI5MSBDNDQuMjI5MTYxNiwtMS4yMDAwNzc3NCA0NC4wODI0MTU1LC0xLjM0NDQ4MTAxIDQzLjkzMzgxMTgsLTEuNDg4ODg0MjggQzQzLjY0NzEzMDYsLTEuNzY4MzU0NCA0My4zNTExNjE3LC0yLjAzNzg2NTY4IDQzLjA2Mzg2MTQsLTIuMzE1NDY4NTIgQzQyLjc3Nzc5OTMsLTIuNTkyNDQ4OTMgNDIuNTA1MzU5MywtMi44ODMxMjI3NSA0Mi4yMzQ3NzY5LC0zLjE3NTA0MTQzIEM0Mi4yMDA3MjE5LC0zLjIyMTcyMzUyIDQyLjE2Mjk1MTgsLTMuMjY0NjcxMDUgNDIuMTIyMDg1OCwtMy4zMDM4ODQgQzQyLjA4NjE3MzIsLTMuMzQ5MzIxMjQgNDIuMDQ3MTY0OCwtMy4zOTA0MDE0OCA0Mi4wMDUwNjA0LC0zLjQyODM2OTU4IEM0Mi4wMDEzNDUzLC0zLjQzMTQ4MTcyIDQxLjk5ODI0OTQsLTMuNDM0NTkzODYgNDEuOTk1MTUzNSwtMy40Mzc3MDYgQzQxLjc2NjY3NTQsLTMuNjkxNjU2NTggNDEuNTM4ODE2NSwtMy45NDQ5ODQ3MyA0MS4zMDYwMDQxLC00LjE5NDU3ODMxIEM0MS4yMzQxNzksLTQuMjcyMzgxOCA0MS4xMzI2MzMyLC00LjMyOTAyMjc0IDQxLjAyMzAzOCwtNC4zNjU3NDU5OCBDNDAuOTk3MDMyNCwtNC40MzA0Nzg0OCA0MC45NjU0NTQxLC00LjQ5Mzk2NjEzIDQwLjkyMjczMDYsLTQuNTUxODUxOTIgQzQwLjgxMTI3NzksLTQuNzAxODU3MDQgNDAuNjk3OTY3NiwtNC44MjA3NDA3NyA0MC41MjcwNzM0LC00LjkwMjI3ODgyIEM0MC4zOTcwNDUyLC00Ljk2NDUyMTYxIDQwLjIzMjM0MjgsLTUgNDAuMDgyNTAwOCwtNSBDNDAuMDU0NjM3NywtNSA0MC4wMjY3NzQ1LC00Ljk5ODc1NTE0IDQwLjAwMDE0OTcsLTQuOTk2MjY1NDMgQzM5Ljc3ODQ4MjYsLTQuOTc1MTAyODggMzkuNjI3NDAyMiwtNC44ODI5ODM1NiAzOS40MzczMTM0LC00Ljc4MDkwNTM4IEMzOS4zMTQ3MTU0LC00LjcxNTU1MDQ1IDM5LjE5NzY5LC00LjY0MjcyNjM5IDM5LjA4MDA0NTUsLTQuNTY5Mjc5OSBDMzguNzk0NjAyNiwtNC4zOTEyNjU1MyAzOC41MDkxNTk4LC00LjIxMTM4Mzg3IDM4LjIyNjE5MzcsLTQuMDI4MzkwMDcgQzM3LjkxMjI2ODUsLTMuODI2MTAxIDM3LjYwODg2OTQsLTMuNjA4MjUxMjQgMzcuMzAwNTE2OSwtMy4zOTcyNDgxOSBDMzYuOTU5MzQ3NywtMy4xNjMyMTUzIDM2LjYxNjk0MDEsLTIuOTMxNjcyMTMgMzYuMjc3NjI4NSwtMi42OTQ1MjcxIEMzNS42NDExMDk2LC0yLjI1MTM1ODQ0IDM0Ljk4NjYzNDQsLTEuODM0MzMxNzYgMzQuMzYxMjYwNywtMS4zNzQ5Nzk5OCBDMzMuNzA1NTQ3MiwtMC44OTM4NDMyMiAzMy4wMjc1NDMsLTAuNDQ1MDcyNzEyIDMyLjM3MTgyOTUsMC4wMzY2ODY0NzMyIEMzMS43MDg2ODU3LDAuNTI0MDQ3NTEgMzEuMDM4MTExOCwxLjAwMzkzOTQxIDMwLjM2MzgyMjgsMS40NzYzNjIxOCBDMzAuMDIyMDM0NCwxLjcxNTk5NjkyIDI5LjY4NDU4MDMsMS45NjEyMzM1IDI5LjM0NTg4NzksMi4yMDcwOTI1MiBDMjkuMDA5MDUzLDIuNDUxMDg0MjUgMjguNjY0MTY4NywyLjY4MjAwNSAyOC4zMTg2NjUyLDIuOTE0MTcwNiBDMjcuOTY4MjA4MywzLjE1MDY5MzIgMjcuNjI1ODAwOCwzLjQwMDkwOTIxIDI3LjI4MTUzNTcsMy42NDU1MjMzNyBDMjYuOTQ1MzE5OSwzLjg4NTc4MDU0IDI2LjYwMTY3NCw0LjExNDgzNCAyNi4yNTkyNjY0LDQuMzQ4MjQ0NDYgQzI1LjYzNjk4ODcsNC43NzE0OTU0MiAyNS4wMDk3NTc1LDUuMTg5NzY2OTYgMjQuMzkyNDMzMiw1LjYyMTEwOTQ5IEMyMy43ODEzMDA4LDYuMDQ5OTYyMyAyMy4xNTUzMDc5LDYuNDU1MTYyODYgMjIuNTQ2NjUyMiw2Ljg4Nzc1MDI0IEMyMi4yNDYzNDksNy4xMDEyNDMwMSAyMS45NDA0NzMyLDcuMzA3MjY2NjQgMjEuNjQzMjY1OSw3LjUyNTExNjQgQzIxLjM1MjI1MDQsNy43Mzg2MDkxNiAyMS4wNzExNDE5LDcuOTY3MDQwMiAyMC43NzgyNjg5LDguMTc4NjY1NjggQzIwLjE0MTEzMDgsOC42MzkyNjIzMiAxOS40NzkyMjU0LDkuMDY2ODcwMjggMTguODAwNjAyMSw5LjQ2MjczNDQyIEMxOC41OTM3OTU0LDkuNTgyODYzIDE4LjQ1MjYyMTksOS44NDU1Mjc1NyAxOC40MTIzNzUxLDEwLjA3Mzk1ODYgQzE4LjM5NjI3NjQsMTAuMTY2NzAwNCAxOC4zOTM3OTk2LDEwLjI2MTMwOTQgMTguNDA0OTQ0OSwxMC4zNTI4MDYzIEMxOC40MDI0NjgyLDEwLjM1NDY3MzYgMTguMzk5OTkxNSwxMC4zNTU5MTg0IDE4LjM5NzUxNDcsMTAuMzU3Nzg1NyBDMTguMTkzODAzOSwxMC41MDA5NDQxIDE4LjA1MzI0OTYsMTAuNzIxOTA2IDE4LjAxMDUyNjEsMTAuOTY5MDA5OSBDMTguMDA2ODExLDExLjA1MzY2MDEgMTguMDAzNzE1MSwxMS4xMzgzMTAzIDE4LDExLjIyMjk2MDUgQzE4LjAxNjcxNzksMTEuMzg5MTQ4NyAxOC4wNzE4MjUxLDExLjU0MDM5ODcgMTguMTY2NTU5OSwxMS42NzczMzI4IEMxOC43MzE4NzI5LDEyLjcxNjc4NzQgMTkuMjk2NTY2OCwxMy43NTU2MTk2IDE5LjkwMjc0NTgsMTQuNzcyMDQ0MyBaIiBpZD0iRmlsbC0yOC1Db3B5IiBmaWxsPSIjMDAwMDAwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNC4wMDAwMDAsIDI1LjAwMDAwMCkgc2NhbGUoMSwgLTEpIHJvdGF0ZSgtNzEuMDAwMDAwKSB0cmFuc2xhdGUoLTM0LjAwMDAwMCwgLTI1LjAwMDAwMCkgIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPGcgaWQ9IkRyYWctRm9jdXMtUG9pbnQiPgogICAgICAgICAgICAgICAgPHVzZSBmaWxsPSJibGFjayIgZmlsbC1vcGFjaXR5PSIxIiBmaWx0ZXI9InVybCgjZmlsdGVyLTQpIiB4bGluazpocmVmPSIjcGF0aC0zIj48L3VzZT4KICAgICAgICAgICAgICAgIDx1c2UgZmlsbD0iIzAwMDAwMCIgZmlsbC1ydWxlPSJldmVub2RkIiB4bGluazpocmVmPSIjcGF0aC0zIj48L3VzZT4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+);width:97px;height:58px;position:absolute;top:24px;right:2px;z-index:999;pointer-events:none}.attachment-info.attachment-info .thumbnail{padding:5px;background:#fff}
/*# sourceMappingURL=better-smart-thumbnails.min.css.map */
{"version":3,"sources":["better-smart-thumbnails.css"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"better-smart-thumbnails.min.css","sourcesContent":["/***\n*** Focus Point Styles\n**/\n.bt-focus-point {\n    position: relative;\n    display: inline-block;\n}\n\n.bt-focus-point,\n.bt-focus-point img {\n    -webkit-touch-callout: none; /* iOS Safari */\n    -webkit-user-select: none; /* Safari */\n    -khtml-user-select: none; /* Konqueror HTML */\n    -moz-user-select: none; /* Firefox */\n    -ms-user-select: none; /* Internet Explorer/Edge */\n    user-select: none;\n}\n\n.bt-focus-point-marker {\n    position: absolute;\n    top: 0;\n    left: 100px;\n    z-index: 99;\n}\n\n.bt-focus-point-marker:after {\n    background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMzhweCIgaGVpZ2h0PSIzOHB4IiB2aWV3Qm94PSIwIDAgMzggMzgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDQ5ICg1MTAwMikgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAgICA8dGl0bGU+U2hhcGUgQ29weTwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPgogICAgICAgIDxwYXRoIGQ9Ik0xNy40OTU3ODcxLDMyLjU0OTg4OTEgTDE3LjQ5NTc4NzEsMzUuMiBMMTkuNzA0MjEyOSwzNS4yIEwxOS43MDQyMTI5LDMyLjU0OTg4OTEgQzI2LjU2MjU3MzMsMzIuMDA5ODg1OCAzMi4wMDk4ODU4LDI2LjU2MjU3MzMgMzIuNTQ5ODg5MSwxOS43MDQyMTI5IEwzNS4yLDE5LjcwNDIxMjkgTDM1LjIsMTcuNDk1Nzg3MSBMMzIuNTQ5ODg5MSwxNy40OTU3ODcxIEMzMi4wMDk4ODU4LDEwLjYzNzQyNjcgMjYuNTYyNTczMyw1LjE5MDExNDE2IDE5LjcwNDIxMjksNC42NTAxMTA4NiBMMTkuNzA0MjEyOSwyIEwxNy40OTU3ODcxLDIgTDE3LjQ5NTc4NzEsNC42NTAxMTA4NiBDMTAuNjM3NDI2Nyw1LjE5MDExNDE2IDUuMTkwMTE0MTYsMTAuNjM3NDI2NyA0LjY1MDExMDg2LDE3LjQ5NTc4NzEgTDIsMTcuNDk1Nzg3MSBMMiwxOS43MDQyMTI5IEw0LjY1MDExMDg2LDE5LjcwNDIxMjkgQzUuMTkwMTE0MTYsMjYuNTYyNTczMyAxMC42Mzc0MjY3LDMyLjAwOTg4NTggMTcuNDk1Nzg3MSwzMi41NDk4ODkxIFogTTYuODU4NTM2NTksMTkuNzA0MjEyOSBMMTIuMjMyMzcyNSwxOS43MDQyMTI5IEMxMi43MDMxMjI3LDIyLjM5MjE2MDQgMTQuODA3ODM5NiwyNC40OTY4NzczIDE3LjQ5NTc4NzEsMjQuOTY3NjI3NSBMMTcuNDk1Nzg3MSwzMC4zNDE0NjM0IEMxMS44NTI1OTI5LDI5LjgxNjc2MTcgNy4zODMyMzgyNywyNS4zNDc0MDcxIDYuODU4NTM2NTksMTkuNzA0MjEyOSBaIE0xOC42LDE0LjMzMDM3NjkgQzIwLjk1ODA0NzcsMTQuMzMwMzc2OSAyMi44Njk2MjMxLDE2LjI0MTk1MjMgMjIuODY5NjIzMSwxOC42IEMyMi44Njk2MjMxLDIwLjk1ODA0NzcgMjAuOTU4MDQ3NywyMi44Njk2MjMxIDE4LjYsMjIuODY5NjIzMSBDMTYuMjQxOTUyMywyMi44Njk2MjMxIDE0LjMzMDM3NjksMjAuOTU4MDQ3NyAxNC4zMzAzNzY5LDE4LjYgQzE0LjMzMDM3NjksMTYuMjQxOTUyMyAxNi4yNDE5NTIzLDE0LjMzMDM3NjkgMTguNiwxNC4zMzAzNzY5IFogTTE5LjcwNDIxMjksMzAuMzQxNDYzNCBMMTkuNzA0MjEyOSwyNC45Njc2Mjc1IEMyMi4zOTIxNjA0LDI0LjQ5Njg3NzMgMjQuNDk2ODc3MywyMi4zOTIxNjA0IDI0Ljk2NzYyNzUsMTkuNzA0MjEyOSBMMzAuMzQxNDYzNCwxOS43MDQyMTI5IEMyOS44MTY3NjE3LDI1LjM0NzQwNzEgMjUuMzQ3NDA3MSwyOS44MTY3NjE3IDE5LjcwNDIxMjksMzAuMzQxNDYzNCBaIE0zMC4zNDE0NjM0LDE3LjQ5NTc4NzEgTDI0Ljk2NzYyNzUsMTcuNDk1Nzg3MSBDMjQuNDk2ODc3MywxNC44MDc4Mzk2IDIyLjM5MjE2MDQsMTIuNzAzMTIyNyAxOS43MDQyMTI5LDEyLjIzMjM3MjUgTDE5LjcwNDIxMjksNi44NTg1MzY1OSBDMjUuMzQ3NDA3MSw3LjM4MzIzODI3IDI5LjgxNjc2MTcsMTEuODUyNTkyOSAzMC4zNDE0NjM0LDE3LjQ5NTc4NzEgWiBNMTcuNDk1Nzg3MSw2Ljg1ODUzNjU5IEwxNy40OTU3ODcxLDEyLjIzMjM3MjUgQzE0LjgwNzgzOTYsMTIuNzAzMTIyNyAxMi43MDMxMjI3LDE0LjgwNzgzOTYgMTIuMjMyMzcyNSwxNy40OTU3ODcxIEw2Ljg1ODUzNjU5LDE3LjQ5NTc4NzEgQzcuMzgzMjM4MjcsMTEuODUyNTkyOSAxMS44NTI1OTI5LDcuMzgzMjM4MjcgMTcuNDk1Nzg3MSw2Ljg1ODUzNjU5IFoiIGlkPSJwYXRoLTEiPjwvcGF0aD4KICAgIDwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJTaGFwZS1Db3B5IiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8dXNlIGZpbGw9IiNGRkZGRkYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgeGxpbms6aHJlZj0iI3BhdGgtMSI+PC91c2U+CiAgICAgICAgICAgIDxwYXRoIHN0cm9rZT0iIzAwNzNBQSIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNMTYuNDk1Nzg3MSwzMy40NDU4MDg5IEM5Ljg4OTg2NTY3LDMyLjUxNTk2OTYgNC42ODQwMzAzNywyNy4zMTAxMzQzIDMuNzU0MTkxMDcsMjAuNzA0MjEyOSBMMSwyMC43MDQyMTI5IEwxLDE2LjQ5NTc4NzEgTDMuNzU0MTkxMDcsMTYuNDk1Nzg3MSBDNC42ODQwMzAzNyw5Ljg4OTg2NTY3IDkuODg5ODY1NjcsNC42ODQwMzAzNyAxNi40OTU3ODcxLDMuNzU0MTkxMDcgTDE2LjQ5NTc4NzEsMSBMMjAuNzA0MjEyOSwxIEwyMC43MDQyMTI5LDMuNzU0MTkxMDcgQzI3LjMxMDEzNDMsNC42ODQwMzAzNyAzMi41MTU5Njk2LDkuODg5ODY1NjcgMzMuNDQ1ODA4OSwxNi40OTU3ODcxIEwzNi4yLDE2LjQ5NTc4NzEgTDM2LjIsMjAuNzA0MjEyOSBMMzMuNDQ1ODA4OSwyMC43MDQyMTI5IEMzMi41MTU5Njk2LDI3LjMxMDEzNDMgMjcuMzEwMTM0MywzMi41MTU5Njk2IDIwLjcwNDIxMjksMzMuNDQ1ODA4OSBMMjAuNzA0MjEyOSwzNi4yIEwxNi40OTU3ODcxLDM2LjIgTDE2LjQ5NTc4NzEsMzMuNDQ1ODA4OSBaIE04LjAxMjExOTk5LDIwLjcwNDIxMjkgQzguODU1NDc2NDUsMjQuOTg1MjIxNiAxMi4yMTQ3Nzg0LDI4LjM0NDUyMzYgMTYuNDk1Nzg3MSwyOS4xODc4OCBMMTYuNDk1Nzg3MSwyNS43NTg5MTQgQzE0LjA2NDQ5NjgsMjUuMDQyMDU3MiAxMi4xNTc5NDI4LDIzLjEzNTUwMzIgMTEuNDQxMDg2LDIwLjcwNDIxMjkgTDguMDEyMTE5OTksMjAuNzA0MjEyOSBaIE0xOC42LDE1LjMzMDM3NjkgQzE2Ljc5NDIzNywxNS4zMzAzNzY5IDE1LjMzMDM3NjksMTYuNzk0MjM3IDE1LjMzMDM3NjksMTguNiBDMTUuMzMwMzc2OSwyMC40MDU3NjMgMTYuNzk0MjM3LDIxLjg2OTYyMzEgMTguNiwyMS44Njk2MjMxIEMyMC40MDU3NjMsMjEuODY5NjIzMSAyMS44Njk2MjMxLDIwLjQwNTc2MyAyMS44Njk2MjMxLDE4LjYgQzIxLjg2OTYyMzEsMTYuNzk0MjM3IDIwLjQwNTc2MywxNS4zMzAzNzY5IDE4LjYsMTUuMzMwMzc2OSBaIE0yMC43MDQyMTI5LDI5LjE4Nzg4IEMyNC45ODUyMjE2LDI4LjM0NDUyMzYgMjguMzQ0NTIzNiwyNC45ODUyMjE2IDI5LjE4Nzg4LDIwLjcwNDIxMjkgTDI1Ljc1ODkxNCwyMC43MDQyMTI5IEMyNS4wNDIwNTcyLDIzLjEzNTUwMzIgMjMuMTM1NTAzMiwyNS4wNDIwNTcyIDIwLjcwNDIxMjksMjUuNzU4OTE0IEwyMC43MDQyMTI5LDI5LjE4Nzg4IFogTTI5LjE4Nzg4LDE2LjQ5NTc4NzEgQzI4LjM0NDUyMzYsMTIuMjE0Nzc4NCAyNC45ODUyMjE2LDguODU1NDc2NDUgMjAuNzA0MjEyOSw4LjAxMjExOTk5IEwyMC43MDQyMTI5LDExLjQ0MTA4NiBDMjMuMTM1NTAzMiwxMi4xNTc5NDI4IDI1LjA0MjA1NzIsMTQuMDY0NDk2OCAyNS43NTg5MTQsMTYuNDk1Nzg3MSBMMjkuMTg3ODgsMTYuNDk1Nzg3MSBaIE0xNi40OTU3ODcxLDguMDEyMTE5OTkgQzEyLjIxNDc3ODQsOC44NTU0NzY0NSA4Ljg1NTQ3NjQ1LDEyLjIxNDc3ODQgOC4wMTIxMTk5OSwxNi40OTU3ODcxIEwxMS40NDEwODYsMTYuNDk1Nzg3MSBDMTIuMTU3OTQyOCwxNC4wNjQ0OTY4IDE0LjA2NDQ5NjgsMTIuMTU3OTQyOCAxNi40OTU3ODcxLDExLjQ0MTA4NiBMMTYuNDk1Nzg3MSw4LjAxMjExOTk5IFoiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==');\n    color: #000;\n    content: '';\n    width: 38px;\n    height: 38px;\n    display: inline-block;\n    cursor: -webkit-grabbing;\n}\n\n.bt-focus-point .grid > div {\n    position: absolute;\n    width: 1px;\n    height: 100%;\n    top: 0;\n    opacity: 0.4;\n    left: 0;\n    background: #fff;\n}\n\n.bt-focus-point .grid > .x1 {\n    left: 33.3333%;\n}\n\n.bt-focus-point .grid > .x2 {\n    left: 66.66666%;\n}\n\n.bt-focus-point .grid > .y1,\n.bt-focus-point .grid > .y2 {\n    width: 100%;\n    height: 1px;\n    left: 0;\n    top: 33.33333%;\n}\n\n.bt-focus-point .grid > .y2 {\n    top: 66.66666%;\n}\n\n.attachment-actions .preview-images-btn,\n.wp_attachment_holder .preview-images-btn,\n.preview-thumbnails .preview-images-btn {\n    margin: 0 4px;\n}\n\n.attachment-actions + .bt-user-message {\n    margin-top: 10px;\n}\n\n/***\n*** Media Modal => Image Detail\n**/\n.attachment-info .thumbnail {\n    padding: 0;\n    border: none;\n    box-shadow: none;\n    font-size: 0;\n}\n\n.attachment-info.attachment-info .thumbnail,\n.attachment-info.attachment-info .thumbnail img {\n    max-height: 100%;\n    max-width: 100%;\n    height: auto;\n}\n\n.attachment-info.attachment-info .thumbnail img {\n    width: 100%;\n}\n\n.attachment-info .thumbnail,\n.attachment-info .details {\n    float: none;\n    text-align: center;\n}\n\n#bt-thumbnil-selector .bssm-item {\n    width: auto;\n}\n\n#bt-thumbnil-selector .bf-item-container figure {\n    min-height: 10px;\n}\n\n#bt-thumbnil-selector .bf-item-container {\n    min-width: 10px;\n}\n\n/***\n*** Messages\n**/\n\n.bt-user-message {\n    background: #ccc;\n    color: #fdfdfd;\n    padding: 3px 5px;\n    font-size: 11px;\n    text-align: center;\n    margin: 2px 0px;\n}\n\n.bt-user-message.success {\n    background: #46b450;\n    color: #fdfdfd;\n}\n\n.media-modal-content .attachment-info:before {\n    content: '';\n    display: inline-block;\n    background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iOTVweCIgaGVpZ2h0PSI2MHB4IiB2aWV3Qm94PSIwIDAgOTUgNjAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDQ5ICg1MTAwMikgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAgICA8dGl0bGU+R3JvdXAgMjwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPgogICAgICAgIDxwYXRoIGQ9Ik00Mi4yODc0MDczLC0zLjExNTI4ODM1IEM0Mi4yNzE5Mjc4LC0zLjEzMjA5MzkxIDQyLjI1NjQ0ODIsLTMuMTQ4Mjc3MDMgNDIuMjQxNTg3OSwtMy4xNjUwODI1OCBDNDIuMjQxNTg3OSwtMy4xNjU3MDUwMSA0Mi4yNDA5Njg3LC0zLjE2NTcwNTAxIDQyLjI0MDk2ODcsLTMuMTY1NzA1MDEgQzQyLjI1NjQ0ODIsLTMuMTQ4ODk5NDYgNDIuMjcxOTI3OCwtMy4xMzIwOTM5MSA0Mi4yODc0MDczLC0zLjExNTI4ODM1IFogTTE5LjkwMjc0NTgsMTQuNzcyMDQ0MyBDMjAuMTY0NjU5NywxNS4yMTAyMzM1IDIwLjQyODQzMTEsMTUuNjQ0Njg4MiAyMC43MTA3NzgxLDE2LjA3MDQyODkgQzIwLjg2MDAwMDksMTYuMjkzODgwNSAyMS4wMDc5ODUzLDE2LjUxNzMzMjEgMjEuMTQ3OTIwNCwxNi43NDc2MzA0IEMyMS4yMTc4ODgsMTYuODYyNzc5NiAyMS4yODY2MTcyLDE2Ljk3OTc5NiAyMS4zNTU5NjU1LDE3LjA5NTU2NzYgQzIxLjI3OTgwNjIsMTcuMjYyMzc4MyAyMS4yMDU1MDQzLDE3LjQyOTgxMTQgMjEuMTMyNDQwOSwxNy41OTc4NjY5IEMyMC44MjE2MTE2LDE4LjMwNDk0NSAyMC41MjM3ODUxLDE5LjAyMzIyNjggMjAuMjY5MzAxNCwxOS43NTMzMzQ3IEMxOS45ODc1NzM3LDIwLjU2MzczNTggMTkuNzIwMDg3MSwyMS4zODQ3MTgyIDE5LjUwODk0NjEsMjIuMjE2OTA0MyBDMTkuNDI1MzU2NiwyMi41NDY3OTExIDE5LjM0OTgxNjQsMjIuODc4NTQ1MSAxOS4yODM1NjM5LDIzLjIxMjE2NjUgQzE5LjIwODY0MjksMjMuNTkzNzE0OCAxOS4xNzU4MjYzLDIzLjk4MzM1NDYgMTkuMTQxMTUyMSwyNC4zNzExMjcyIEMxOS4xMzU1Nzk1LDI0LjQzNjQ4MjEgMTkuMTMzMTAyOCwyNC41MDA1OTIyIDE5LjEzNDk2MDMsMjQuNTYyODM1IEMxOS4xMDcwOTcxLDI0LjgzNzk0ODEgMTkuMDgxMDkxNSwyNS4xMTQzMDYxIDE5LjA2MzEzNTIsMjUuMzkwNjY0MSBDMTkuMDMwOTM3NywyNS44NzExNzg0IDE4Ljk5NTY0NDQsMjYuMzU0ODA0OSAxOS4wMDg2NDcyLDI2LjgzNTk0MTYgQzE5LjAzMjE3NjEsMjcuNjU0NDM0MyAxOS4wOTcxOTAyLDI4LjQ3ODUyODggMTkuMjAwNTkzNiwyOS4yOTE0MTk3IEMxOS4yNDE0NTk2LDI5LjYxNTA4MjIgMTkuMjkyMjMyNSwyOS45MzY4Nzc0IDE5LjM0NzMzOTcsMzAuMjU3NDI3NyBDMTkuMjgxMDg3MiwzMC40MDI0NTM0IDE5LjI1MDEyODEsMzAuNTY1NTI5NSAxOS4yNjYyMjY4LDMwLjczMjk2MjYgQzE5LjI5NzE4NTksMzEuMDY0MDk0MyAxOS4zMjEzMzQsMzEuMzk4MzM4MSAxOS4zNjU5MTUxLDMxLjcyNzYwMjQgQzE5LjQxMzU5MjEsMzIuMDc5Mjc0MiAxOS40OTQwODU4LDMyLjQyMzQ3NjggMTkuNTc4OTEzNywzMi43NjgzMDE4IEMxOS42NDk1MDA0LDMzLjExMjUwNDUgMTkuNjk5MDM0OSwzMy40NjEwNjQxIDE5Ljc3MDI0MDksMzMuODA0NjQ0MyBDMTkuODYzNzM3MywzNC4yNTAzMDI2IDE5Ljk2ODM3OSwzNC42OTAzNTkyIDIwLjEwNzA3NTgsMzUuMTI0MTkxNCBDMjAuMzQ2Njk5MSwzNS44NzI5NzIxIDIwLjU5NDk5MTEsMzYuNjE5ODg1NiAyMC44NTAwOTQsMzcuMzYzMDY0NSBDMjEuMDg5NzE3MywzOC4wNTk1NjEzIDIxLjM3NTc3OTMsMzguNzM1NTE4IDIxLjY1Mzc5MiwzOS40MTcwNzY1IEMyMS43OTE4Njk1LDM5Ljc1NTA1NDkgMjEuOTI2MjMyLDQwLjA5NDI3ODEgMjIuMDc2MDc0LDQwLjQyNzI3NyBDMjIuMjU3NDk0Myw0MC44MjkzNjU0IDIyLjQ1Mzc3NDksNDEuMjIwODcyNiAyMi42NTg3MjQxLDQxLjYxMDUxMjQgQzIzLjAwMjk4OTIsNDIuMjYzNDM5MyAyMy4zNTgzOTk2LDQyLjkwODg5NyAyMy43MjkyODk1LDQzLjU0Njg4NTYgQzIzLjkyODY2Niw0My44OTA0NjU4IDI0LjEzNTQ3MjgsNDQuMjI5Njg5IDI0LjM1NjUyMDcsNDQuNTYwODIwNiBDMjQuNTY4MjgwOSw0NC44Nzc2MzY0IDI0LjgwNDgwODMsNDUuMTc3MDI0MiAyNS4wNDU2NzAxLDQ1LjQ3MjY3NzUgQzI1LjM0NzIxMTYsNDUuODQ0MjY2OSAyNS42NjQyMzI3LDQ2LjIwNDAzMDIgMjUuOTk0MjU2Niw0Ni41NTAxMDAxIEMyNi4yMzU3Mzc1LDQ2LjgwMzQyODMgMjYuNTA0NDYyNSw0Ny4wMjU2MzUxIDI2Ljc3MjU2ODIsNDcuMjQ5MDg2NyBDMjcuMDY0MjAyOCw0Ny40OTMwNzg0IDI3LjM1Mjc0MTYsNDcuNzM5NTU5OCAyNy42NTQyODMxLDQ3Ljk3MTcyNTQgQzI3Ljk4NTU0NTQsNDguMjI2OTIwOSAyOC4zMjM2MTg3LDQ4LjQ3MzQwMjMgMjguNjYzNTQ5NSw0OC43MTgwMTY1IEMyOS4zNjU3MDE3LDQ5LjIyMTU2MDYgMzAuMDY4NDczMSw0OS43MjA3NDc4IDMwLjgwMzQ0MTksNTAuMTc0NDk3NyBDMzEuNDkzODI5Nyw1MC42MDA4NjA4IDMyLjIxMjY5OTgsNTAuOTc4MDUyMSAzMi45NDIwOTYsNTEuMzMwOTY4OCBDMzMuNzEzNTk2NSw1MS43MDQ0MjU1IDM0LjQ5NTAwNCw1Mi4wNTY3MTk3IDM1LjI3NTE3MzEsNTIuNDEwMjU4NyBDMzYuMDE1MDk1NCw1Mi43NDYzNjk4IDM2Ljc2MzA2Nyw1My4wNjk0MDk5IDM3LjUzMDIzMzMsNTMuMzM3Njc2MyBDMzguMzU5OTM3LDUzLjYyODM1MDEgMzkuMTk5NTQ3NSw1My44ODkxNDc0IDQwLjA0NzIwNzUsNTQuMTIxOTM1NCBDNDAuODQ1OTUyLDU0LjM0MTY1MjUgNDEuNjQ5NjUwMSw1NC41MTk2NjY4IDQyLjQ2Mzg3NDIsNTQuNjcwOTE2OCBDNDMuMjMwNDIxMyw1NC44MTQ2OTc2IDQ0LjAwODExMzYsNTQuODg4NzY2NiA0NC43ODUxODY4LDU0LjkzNzkzODQgQzQ1LjI0OTU3MzIsNTQuOTY3MTkyNSA0NS43MTU4MTcxLDU0Ljk4MDg4NTkgNDYuMTgwMjAzNSw1NC45OTIwODk2IEM0Ni4zNjg0MzQ4LDU0Ljk5NzA2OSA0Ni41NTY2NjYxLDU1LjAwMTQyNiA0Ni43NDQ4OTczLDU0Ljk5OTU1ODcgQzQ2Ljk5NjkwNDMsNTQuOTk3MDY5IDQ3LjI0NzY3Myw1NC45NDA0MjgxIDQ3LjQ4OTc3MzEsNTQuODczODI4MyBDNDcuODgxNzE1Miw1NC43NjY3NzA3IDQ4LjI2NDk4ODcsNTQuNTY1NzI2NSA0OC41OTkzNDY5LDU0LjMzODU0MDMgQzQ4Ljc1MDQyNzMsNTQuMjM1MjE3MyA0OC44OTkwMzA5LDU0LjEzMDY0OTQgNDkuMDUzODI2NCw1NC4wMzE2ODM0IEM0OS4xOTU2MTksNTMuOTQwODA4OSA0OS4zMjM3ODk3LDUzLjgzMTg4NCA0OS40NDMyOTE4LDUzLjcxMzAwMDMgQzQ5LjUwMjczMzIsNTMuNjU0NDkyMSA0OS41NDkxNzE5LDUzLjU5Nzg1MTEgNDkuNTk0OTkxMyw1My41Mjc1MTY4IEM0OS42NjA2MjQ2LDUzLjQ0MDM3NjkgNDkuNzE3NTg5Myw1My4zNDc2MzUxIDQ5Ljc2NTI2NjMsNTMuMjQ5MjkxNSBDNDkuODA5MjI4Miw1My4xNDU5Njg1IDQ5Ljg0NTE0MDgsNTMuMDM4OTEwOSA0OS44NzMwMDQsNTIuOTI5MzYzNiBDNDkuOTk1NjAyLDUyLjUyNDE2MyA1MC4wMDMwMzIxLDUyLjA4MDM3MTkgNDkuOTk5MzE3LDUxLjY2MDg1NTUgQzQ5Ljk5NzQ1OTUsNTEuNDc4NDg0MiA0OS45ODEzNjA4LDUxLjI5NjczNTIgNDkuOTcxNDUzOSw1MS4xMTQ5ODYzIEM0OS45NjU4ODEyLDUxLjAyMjg2NyA0OS45NjIxNjYxLDUwLjkzMTk5MjUgNDkuOTU2NTkzNSw1MC44NDA0OTU2IEM0OS45NDE3MzMxLDUwLjYyMDc3ODUgNDkuODg3ODY0Myw1MC40MDg1MzA2IDQ5LjgzNDYxNDcsNTAuMTk1NjYwMyBDNDkuODI2NTY1Myw1MC4xNjQ1Mzg5IDQ5LjgxNTQyLDUwLjEzNDY2MjQgNDkuODAxNzk4LDUwLjEwNDc4NTggQzQ5Ljc4MTM2NSw0OS4yNjIwMTg1IDQ5Ljc3MDIxOTgsNDguNDE4NjI4NyA0OS43Njg5ODE0LDQ3LjU3NDYxNjUgQzQ5Ljc2NzEyMzksNDUuOTc2ODQ0MSA0OS44MDM2NTU2LDQ0LjM3NDcxNDcgNDkuNzE3NTg5Myw0Mi43NzgxODcxIEM0OS42NzkyLDQyLjA4MjkzNTIgNDkuNjQyMDQ5MSw0MS4zODc2ODMyIDQ5LjYwNjc1NTgsNDAuNjkxODA4OSBDNDkuNTkwMDM3OSw0MC4zNDg4NTExIDQ5LjU4MDEzMDksNDAuMDA1MjcwOSA0OS41NTQ3NDQ1LDM5LjY2MzU1OCBDNDkuNTI4NzM4OSwzOS4zMTY4NjU3IDQ5LjQ5MzQ0NTUsMzguOTcxNDE4MiA0OS40NjAwMDk3LDM4LjYyNDcyNTggQzQ5LjM5NzQ3MjMsMzcuOTc1NTMzNiA0OS4zNTM1MTA0LDM3LjMyNTA5NjQgNDkuMjg2NjM4OCwzNi42NzcxNDkgQzQ5LjIxNzkwOTYsMzYuMDAzNjgyIDQ5LjEzNjE3NzYsMzUuMzA5MDUyNSA0OC45NDc5NDYzLDM0LjY1Nzk5MjkgQzQ4Ljg4MTY5MzgsMzQuNDMwMTg0MyA0OC42NzYxMjU1LDM0LjIyOTc2MjUgNDguNDY3NDYxMiwzNC4xMzA3OTY1IEM0OC40MDQzMDQ2LDM0LjEwMDkyIDQ4LjMzNzQzMywzNC4wNzc4OTAxIDQ4LjI2OTMyMywzNC4wNjI5NTE4IEM0OC4yMjcyMTg2LDM0LjAzMTgzMDUgNDguMTg1MTE0MywzNC4wMDI1NzYzIDQ4LjE0MjM5MDcsMzMuOTczMzIyMiBDNDcuOTg2MzU2OSwzMy44Njc1MDk1IDQ3LjgyNzg0NjQsMzMuNzYzNTY0IDQ3LjY2NzQ3ODMsMzMuNjY1ODQyOSBDNDcuMjY2MjQ4NCwzMy40MTg3MzkgNDYuODU1MTExNywzMy4xODQ3MDYxIDQ2LjQyNzI1NzEsMzIuOTg3Mzk2NSBDNDYuMDY2ODkzMiwzMi44MjA1ODU4IDQ1LjY5MjI4ODIsMzIuNjg5MjUzNSA0NS4zMzY4Nzc5LDMyLjUwOTM3MTggQzQ0Ljk5MzIzMTksMzIuMzM1MDkyIDQ0LjY2MzIwOCwzMi4xMjU5NTYzIDQ0LjMzMTMyNjYsMzEuOTI3NDAxOCBDNDQuMjU1MTY3MiwzMS44NzM4NzMgNDQuMTc1OTExOSwzMS44MzE1NDc5IDQ0LjA5NTQxODMsMzEuNzk3MzE0MyBDNDMuODkzNTY1LDMxLjU3NTEwNzYgNDMuNjQ1MjczMSwzMS40MDc2NzQ1IDQzLjM1NDI1NzYsMzEuMzAzNzI5IEM0My4xODgzMTY5LDMxLjI0Mzk3NTkgNDMuMDE4NjYxMSwzMS4xOTI5MzY5IDQyLjg1MDI0MzYsMzEuMTQxMjc1MyBDNDIuMzg3NzE0OCwzMC45OTAwMjU0IDQxLjkyMDIzMjUsMzAuODM1NjYzMiA0MS40Nzc1MTc1LDMwLjYzNTI0MTUgQzQxLjAwMDc0NzUsMzAuNDIwNTAzOCA0MC41NTQ5MzY2LDMwLjE2MTU3MzggNDAuMTE1MzE3NSwyOS44ODIxMDM3IEMzOS44NjgyNjM5LDI5LjcxMDkzNjEgMzkuNjIzNjg3MSwyOS41Mzg1MjM1IDM5LjM5MjczMjMsMjkuMzQ1NTcwOSBDMzkuMTc0MTYxMSwyOS4xNjI1NzcxIDM4Ljk3NjY0MjEsMjguOTYwOTEwNCAzOC43ODIyMTksMjguNzU0MjY0NCBDMzguNTM3NjQyMiwyOC40NjkxOTI0IDM4LjI5ODYzOCwyOC4xNzc4OTYyIDM4LjA5MTgzMTIsMjcuODYzNTcwMSBDMzcuODc4MjEzNSwyNy41MzgwNDAzIDM3LjY3ODgzNywyNy4yMTA2NDMyIDM3LjQ5MTIyNDksMjYuODcwNzk3NiBDMzcuMzA4NTY2MiwyNi40OTU0NzM2IDM3LjEyMzQzMDksMjYuMTE3NjU5OSAzNi45ODQxMTUsMjUuNzIzNjYzIEMzNi44ODYyODQyLDI1LjQ0ODU0OTkgMzYuODAwODM3MSwyNS4xNzA5NDcgMzYuNzIwOTYyNywyNC44OTE0NzY5IEMzNi44ODk5OTkzLDI0Ljg5NTIxMTUgMzcuMDU5MDM2LDI0Ljg5NzcwMTIgMzcuMjI4NjkxOCwyNC45MDM5MjU1IEMzOC4zMTQ3MzY3LDI0Ljk1MTg1MjQgMzkuNDAyMDIsMjUuMDA2MDAzNiA0MC40ODYyMDc0LDI1LjA5MDAzMTQgQzQxLjEyMDI0OTYsMjUuMTM4NTgwOCA0MS43NTE4MTUxLDI1LjIxMzg5NDYgNDIuMzg2NDc2NCwyNS4yNjgwNDU4IEM0Mi43NTYxMjgsMjUuMjk5MTY3MiA0My4xMjYzOTg3LDI1LjMxNzIxNzYgNDMuNDk3OTA3OCwyNS4zMjIxOTcgQzQzLjkyMzI4NTcsMjUuMzI4NDIxMyA0NC4zMzAwODgyLDI1LjIzNDQzNDcgNDQuNzI4ODQxMywyNS4wOTEyNzYzIEM0NS4xMzUwMjQ2LDI0Ljk0NTYyODEgNDUuNDgzMDA0OCwyNC43MDIyNTg4IDQ1LjgyNjY1MDcsMjQuNDQ4MzA4MyBDNDYuMDgyMzcyOCwyNC4yNjAzMzUgNDYuMjI0MTY1NCwyMy45NjU5MjY2IDQ2LjIyNjAyMywyMy42NjY1Mzg4IEM0Ni4yMjY2NDIxLDIzLjY2NDA0OTEgNDYuMjI4NDk5NywyMy42NjIxODE4IDQ2LjIyOTczODEsMjMuNjU5NjkyMSBDNDYuMjkyODk0NiwyMy41MjMzODA0IDQ2LjMyODgwNzIsMjMuMzY5MDE4MyA0Ni4zNjU5NTgxLDIzLjIyMzM3MDIgQzQ2LjM5MjU4MjksMjMuMTIwMDQ3MSA0Ni40MDgwNjI0LDIzLjAxMTc0NDcgNDYuNDE5MjA3NywyMi45MDQ2ODcxIEM0Ni41OTAxMDE5LDIxLjEzMzI1NzMgNDYuNDI0MTYxMiwxOS4zNDc1MTE3IDQ2LjIxODU5MjgsMTcuNTg3Mjg1NiBDNDYuMDIyOTMxMywxNS45MTQxOTk1IDQ1Ljc4MjA2OTYsMTQuMjQ3MzM3NiA0NS41NzQ2NDM3LDEyLjU3NjExODcgQzQ1LjQ3MzcxNywxMS43NTYzODEyIDQ1LjM3OTYwMTQsMTAuOTM1Mzk4OCA0NS4zMTk1NDA4LDEwLjExMTkyNjcgQzQ1LjI1ODI0MTgsOS4yNzEwMjY2MyA0NS4yMjQ4MDU5LDguNDI4MjU5MjYgNDUuMjA0MzcyOSw3LjU4NTQ5MTkgQzQ1LjE2MjI2ODYsNS45MDMwNjkzMiA0NS4xNTA1MDQxLDQuMjIwNjQ2NzQgNDUuMTE4MzA2NywyLjUzODg0NjU4IEM0NS4xMTA4NzY1LDIuMTQ2MDk0NTkgNDUuMTA0Njg0NywxLjc1Mzk2NTAyIDQ1LjA5OTczMTIsMS4zNjI0NTc4OCBDNDUuMDk3MjU0NSwxLjE3ODIxOTIyIDQ1LjA5NTM5NjksMC45OTQ2MDI5OTMgNDUuMDkzNTM5NCwwLjgxMDM2NDMzOCBDNDUuMDkxNjgxOSwwLjU3NjMzMTQ1MiA0NS4wOTY2MzUzLDAuMzQzNTQzNDIyIDQ1LjA1MzI5MjYsMC4xMTIwMDAyNDggQzQ0Ljk5OTQyMzgsLTAuMTg2NzY1MTM5IDQ0Ljg5NjAyMDQsLTAuNDU0NDA5MTMxIDQ0LjY5NzI2MywtMC42ODY1NzQ3MzMgQzQ0LjU5MTM4MjksLTAuODA5ODE1NDU1IDQ0LjQ3ODA3MjcsLTAuOTI4MDc2NzU0IDQ0LjM2ODQ3NzUsLTEuMDQ3NTgyOTEgQzQ0LjIyOTE2MTYsLTEuMjAwMDc3NzQgNDQuMDgyNDE1NSwtMS4zNDQ0ODEwMSA0My45MzM4MTE4LC0xLjQ4ODg4NDI4IEM0My42NDcxMzA2LC0xLjc2ODM1NDQgNDMuMzUxMTYxNywtMi4wMzc4NjU2OCA0My4wNjM4NjE0LC0yLjMxNTQ2ODUyIEM0Mi43Nzc3OTkzLC0yLjU5MjQ0ODkzIDQyLjUwNTM1OTMsLTIuODgzMTIyNzUgNDIuMjM0Nzc2OSwtMy4xNzUwNDE0MyBDNDIuMjAwNzIxOSwtMy4yMjE3MjM1MiA0Mi4xNjI5NTE4LC0zLjI2NDY3MTA1IDQyLjEyMjA4NTgsLTMuMzAzODg0IEM0Mi4wODYxNzMyLC0zLjM0OTMyMTI0IDQyLjA0NzE2NDgsLTMuMzkwNDAxNDggNDIuMDA1MDYwNCwtMy40MjgzNjk1OCBDNDIuMDAxMzQ1MywtMy40MzE0ODE3MiA0MS45OTgyNDk0LC0zLjQzNDU5Mzg2IDQxLjk5NTE1MzUsLTMuNDM3NzA2IEM0MS43NjY2NzU0LC0zLjY5MTY1NjU4IDQxLjUzODgxNjUsLTMuOTQ0OTg0NzMgNDEuMzA2MDA0MSwtNC4xOTQ1NzgzMSBDNDEuMjM0MTc5LC00LjI3MjM4MTggNDEuMTMyNjMzMiwtNC4zMjkwMjI3NCA0MS4wMjMwMzgsLTQuMzY1NzQ1OTggQzQwLjk5NzAzMjQsLTQuNDMwNDc4NDggNDAuOTY1NDU0MSwtNC40OTM5NjYxMyA0MC45MjI3MzA2LC00LjU1MTg1MTkyIEM0MC44MTEyNzc5LC00LjcwMTg1NzA0IDQwLjY5Nzk2NzYsLTQuODIwNzQwNzcgNDAuNTI3MDczNCwtNC45MDIyNzg4MiBDNDAuMzk3MDQ1MiwtNC45NjQ1MjE2MSA0MC4yMzIzNDI4LC01IDQwLjA4MjUwMDgsLTUgQzQwLjA1NDYzNzcsLTUgNDAuMDI2Nzc0NSwtNC45OTg3NTUxNCA0MC4wMDAxNDk3LC00Ljk5NjI2NTQzIEMzOS43Nzg0ODI2LC00Ljk3NTEwMjg4IDM5LjYyNzQwMjIsLTQuODgyOTgzNTYgMzkuNDM3MzEzNCwtNC43ODA5MDUzOCBDMzkuMzE0NzE1NCwtNC43MTU1NTA0NSAzOS4xOTc2OSwtNC42NDI3MjYzOSAzOS4wODAwNDU1LC00LjU2OTI3OTkgQzM4Ljc5NDYwMjYsLTQuMzkxMjY1NTMgMzguNTA5MTU5OCwtNC4yMTEzODM4NyAzOC4yMjYxOTM3LC00LjAyODM5MDA3IEMzNy45MTIyNjg1LC0zLjgyNjEwMSAzNy42MDg4Njk0LC0zLjYwODI1MTI0IDM3LjMwMDUxNjksLTMuMzk3MjQ4MTkgQzM2Ljk1OTM0NzcsLTMuMTYzMjE1MyAzNi42MTY5NDAxLC0yLjkzMTY3MjEzIDM2LjI3NzYyODUsLTIuNjk0NTI3MSBDMzUuNjQxMTA5NiwtMi4yNTEzNTg0NCAzNC45ODY2MzQ0LC0xLjgzNDMzMTc2IDM0LjM2MTI2MDcsLTEuMzc0OTc5OTggQzMzLjcwNTU0NzIsLTAuODkzODQzMjIgMzMuMDI3NTQzLC0wLjQ0NTA3MjcxMiAzMi4zNzE4Mjk1LDAuMDM2Njg2NDczMiBDMzEuNzA4Njg1NywwLjUyNDA0NzUxIDMxLjAzODExMTgsMS4wMDM5Mzk0MSAzMC4zNjM4MjI4LDEuNDc2MzYyMTggQzMwLjAyMjAzNDQsMS43MTU5OTY5MiAyOS42ODQ1ODAzLDEuOTYxMjMzNSAyOS4zNDU4ODc5LDIuMjA3MDkyNTIgQzI5LjAwOTA1MywyLjQ1MTA4NDI1IDI4LjY2NDE2ODcsMi42ODIwMDUgMjguMzE4NjY1MiwyLjkxNDE3MDYgQzI3Ljk2ODIwODMsMy4xNTA2OTMyIDI3LjYyNTgwMDgsMy40MDA5MDkyMSAyNy4yODE1MzU3LDMuNjQ1NTIzMzcgQzI2Ljk0NTMxOTksMy44ODU3ODA1NCAyNi42MDE2NzQsNC4xMTQ4MzQgMjYuMjU5MjY2NCw0LjM0ODI0NDQ2IEMyNS42MzY5ODg3LDQuNzcxNDk1NDIgMjUuMDA5NzU3NSw1LjE4OTc2Njk2IDI0LjM5MjQzMzIsNS42MjExMDk0OSBDMjMuNzgxMzAwOCw2LjA0OTk2MjMgMjMuMTU1MzA3OSw2LjQ1NTE2Mjg2IDIyLjU0NjY1MjIsNi44ODc3NTAyNCBDMjIuMjQ2MzQ5LDcuMTAxMjQzMDEgMjEuOTQwNDczMiw3LjMwNzI2NjY0IDIxLjY0MzI2NTksNy41MjUxMTY0IEMyMS4zNTIyNTA0LDcuNzM4NjA5MTYgMjEuMDcxMTQxOSw3Ljk2NzA0MDIgMjAuNzc4MjY4OSw4LjE3ODY2NTY4IEMyMC4xNDExMzA4LDguNjM5MjYyMzIgMTkuNDc5MjI1NCw5LjA2Njg3MDI4IDE4LjgwMDYwMjEsOS40NjI3MzQ0MiBDMTguNTkzNzk1NCw5LjU4Mjg2MyAxOC40NTI2MjE5LDkuODQ1NTI3NTcgMTguNDEyMzc1MSwxMC4wNzM5NTg2IEMxOC4zOTYyNzY0LDEwLjE2NjcwMDQgMTguMzkzNzk5NiwxMC4yNjEzMDk0IDE4LjQwNDk0NDksMTAuMzUyODA2MyBDMTguNDAyNDY4MiwxMC4zNTQ2NzM2IDE4LjM5OTk5MTUsMTAuMzU1OTE4NCAxOC4zOTc1MTQ3LDEwLjM1Nzc4NTcgQzE4LjE5MzgwMzksMTAuNTAwOTQ0MSAxOC4wNTMyNDk2LDEwLjcyMTkwNiAxOC4wMTA1MjYxLDEwLjk2OTAwOTkgQzE4LjAwNjgxMSwxMS4wNTM2NjAxIDE4LjAwMzcxNTEsMTEuMTM4MzEwMyAxOCwxMS4yMjI5NjA1IEMxOC4wMTY3MTc5LDExLjM4OTE0ODcgMTguMDcxODI1MSwxMS41NDAzOTg3IDE4LjE2NjU1OTksMTEuNjc3MzMyOCBDMTguNzMxODcyOSwxMi43MTY3ODc0IDE5LjI5NjU2NjgsMTMuNzU1NjE5NiAxOS45MDI3NDU4LDE0Ljc3MjA0NDMgWiIgaWQ9InBhdGgtMSI+PC9wYXRoPgogICAgICAgIDxmaWx0ZXIgeD0iLTIxLjklIiB5PSItMjUuMCUiIHdpZHRoPSIxNjIuNSUiIGhlaWdodD0iMTMzLjMlIiBmaWx0ZXJVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIGlkPSJmaWx0ZXItMiI+CiAgICAgICAgICAgIDxmZU9mZnNldCBkeD0iMyIgZHk9Ii01IiBpbj0iU291cmNlQWxwaGEiIHJlc3VsdD0ic2hhZG93T2Zmc2V0T3V0ZXIxIj48L2ZlT2Zmc2V0PgogICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIyLjUiIGluPSJzaGFkb3dPZmZzZXRPdXRlcjEiIHJlc3VsdD0ic2hhZG93Qmx1ck91dGVyMSI+PC9mZUdhdXNzaWFuQmx1cj4KICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdmFsdWVzPSIwIDAgMCAwIDAgICAwIDAgMCAwIDAgICAwIDAgMCAwIDAgIDAgMCAwIDAuMjE1OTE5Mzg0IDAiIHR5cGU9Im1hdHJpeCIgaW49InNoYWRvd0JsdXJPdXRlcjEiPjwvZmVDb2xvck1hdHJpeD4KICAgICAgICA8L2ZpbHRlcj4KICAgICAgICA8cGF0aCBkPSJNNC4zNDc2NTYyNSw5LjE1ODIwMzEyIEMzLjg2MzI3ODgzLDkuMTU4MjAzMTIgMy4zNzUwMDI0Niw4Ljk0NTMxNDYzIDIuODgyODEyNSw4LjUxOTUzMTI1IEwyLjc4MzIwMzEyLDkgTDEuMDYwNTQ2ODgsOSBMMi42ODk0NTMxMiwxLjM2NTIzNDM4IEw0LjQ2NDg0Mzc1LDEuMTMwODU5MzggTDMuMDIzNDM3NSw3Ljg1NzQyMTg4IEMzLjI0MjE4ODU5LDguMDE3NTc4OTMgMy40NzA3MDE5Myw4LjA5NzY1NjI1IDMuNzA4OTg0MzgsOC4wOTc2NTYyNSBDMy45Mzk0NTQyOCw4LjA5NzY1NjI1IDQuMTU5MTc4NjQsOC4wMjUzOTEzNSA0LjM2ODE2NDA2LDcuODgwODU5MzggQzQuNTc3MTQ5NDgsNy43MzYzMjc0IDQuNzY5NTMwMzcsNy41MzEyNTEzMyA0Ljk0NTMxMjUsNy4yNjU2MjUgQzUuMjY5NTMyODcsNi43NzczNDEzMSA1LjUzMzIwMjExLDYuMTA5Mzc5MjQgNS43MzYzMjgxMiw1LjI2MTcxODc1IEM1LjkxOTkyMjc5LDQuNDY4NzQ2MDQgNi4wMTE3MTg3NSwzLjY1NDMwMTA1IDYuMDExNzE4NzUsMi44MTgzNTkzOCBDNi4wMTE3MTg3NSwyLjAzNzEwNTQ3IDUuODUxNTY0MSwxLjQ1NTA4MDA0IDUuNTMxMjUsMS4wNzIyNjU2MiBDNS4yMzQzNzM1MiwwLjcyNDYwNzYzNyA0LjgxMDU0OTYzLDAuNTUwNzgxMjUgNC4yNTk3NjU2MiwwLjU1MDc4MTI1IEMzLjgxNDQ1MDksMC41NTA3ODEyNSAzLjQwMDM5MjU0LDAuNjE3MTg2ODM2IDMuMDE3NTc4MTIsMC43NSBDMi42MzQ3NjM3MSwwLjg4MjgxMzE2NCAyLjMwMjczNTc4LDEuMDc0MjE3NSAyLjAyMTQ4NDM4LDEuMzI0MjE4NzUgQzEuNzMyNDIwNDMsMS41ODIwMzI1NCAxLjUwOTc2NjQxLDEuODkyNTc2MzEgMS4zNTM1MTU2MiwyLjI1NTg1OTM4IEMxLjE5NzI2NDg0LDIuNjE5MTQyNDQgMS4xMTkxNDA2MiwzLjAyMzQzNTI3IDEuMTE5MTQwNjIsMy40Njg3NSBDMS4xMTkxNDA2MiwzLjcxODc1MTI1IDEuMTQ2NDg0MSwzLjkxNzk2ODAxIDEuMjAxMTcxODgsNC4wNjY0MDYyNSBDMS4yMTY3OTY5NSw0LjExNzE4Nzc1IDEuMjM2MzI4MDEsNC4xNjIxMDkxOCAxLjI1OTc2NTYyLDQuMjAxMTcxODggQzEuMjc1MzkwNyw0LjIyODUxNTc2IDEuMjgzMjAzMTIsNC4yNTU4NTkyNCAxLjI4MzIwMzEyLDQuMjgzMjAzMTIgQzAuODY1MjMyMjg1LDQuMjgzMjAzMTIgMC41NDY4NzYwOTQsNC4xOTYyODk5MyAwLjMyODEyNSw0LjAyMjQ2MDk0IEMwLjEwOTM3MzkwNiwzLjg0ODYzMTk0IDAsMy41NjQ0NTUxIDAsMy4xNjk5MjE4OCBDMCwyLjkwMDM4OTI4IDAuMDUyNzMzODQ3NywyLjYzMzc5MDM4IDAuMTU4MjAzMTI1LDIuMzcwMTE3MTkgQzAuMjYzNjcyNDAyLDIuMTA2NDQzOTkgMC40MTYwMTQ2MjksMS44NTU0Njk5NCAwLjYxNTIzNDM3NSwxLjYxNzE4NzUgQzAuODEwNTQ3ODUyLDEuMzgyODExMzMgMS4wNDU4OTcwNiwxLjE2Njk5MzE3IDEuMzIxMjg5MDYsMC45Njk3MjY1NjIgQzEuNTk2NjgxMDYsMC43NzI0NTk5NTEgMS44OTg0MzU4NiwwLjYwMTU2MzIyMyAyLjIyNjU2MjUsMC40NTcwMzEyNSBDMi45MjE4Nzg0OCwwLjE1MjM0MjIyNyAzLjY2Nzk2NDc3LDAgNC40NjQ4NDM3NSwwIEM1LjIwMzEyODY5LDAgNS44MjQyMTYyMywwLjE2MjEwNzc1NCA2LjMyODEyNSwwLjQ4NjMyODEyNSBDNi43ODkwNjQ4LDAuNzg3MTEwODc5IDcuMTMyODExMzcsMS4yMDUwNzU0NSA3LjM1OTM3NSwxLjc0MDIzNDM4IEM3LjU2NjQwNzI5LDIuMjQ4MDQ5NDEgNy42Njk5MjE4OCwyLjgyMDMwOTMyIDcuNjY5OTIxODgsMy40NTcwMzEyNSBDNy42Njk5MjE4OCwzLjkwNjI1MjI1IDcuNjI5ODgzMjEsNC4zNjEzMjU4MiA3LjU0OTgwNDY5LDQuODIyMjY1NjIgQzcuNDY5NzI2MTYsNS4yODMyMDU0MyA3LjM1NTQ2OTQ5LDUuNzI4NTEzNDggNy4yMDcwMzEyNSw2LjE1ODIwMzEyIEM3LjA1ODU5MzAxLDYuNTgwMDgwMjMgNi44ODE4MzY5Niw2Ljk3MzYzMDk5IDYuNjc2NzU3ODEsNy4zMzg4NjcxOSBDNi40NzE2Nzg2Niw3LjcwNDEwMzM5IDYuMjQ2MDk0OTgsOC4wMjE0ODMwMyA2LDguMjkxMDE1NjIgQzUuNzQ2MDkyNDgsOC41NjgzNjA3NiA1LjQ3OTQ5MzU4LDguNzgyMjI1ODEgNS4yMDAxOTUzMSw4LjkzMjYxNzE5IEM0LjkyMDg5NzA0LDkuMDgzMDA4NTYgNC42MzY3MjAyLDkuMTU4MjAzMTIgNC4zNDc2NTYyNSw5LjE1ODIwMzEyIFogTTkuMzU1NzE3MzYsMyBMMTEuMDg0MjMzLDMgTDEwLjkzMTg4OTIsMy43NDQxNDA2MiBDMTEuMjA1MzI4MSwzLjUwMTk1MTkxIDExLjQyNzk4MjEsMy4zMzAwNzg2MyAxMS41OTk4NTgsMy4yMjg1MTU2MiBDMTEuODY1NDg0MywzLjA3NjE3MTExIDEyLjEyNTI0NzMsMyAxMi4zNzkxNTQ5LDMgQzEyLjYzNjk2ODcsMyAxMi44NDM5OTc4LDMuMDkxNzk1OTYgMTMuMDAwMjQ4NiwzLjI3NTM5MDYyIEMxMy4wNzA1NjE1LDMuMzU3NDIyMjkgMTMuMTIzMjk1MywzLjQ1MjE0NzkgMTMuMTU4NDUxNywzLjU1OTU3MDMxIEMxMy4xOTM2MDgyLDMuNjY2OTkyNzIgMTMuMjExMTg2MSwzLjc4MTI0OTM5IDEzLjIxMTE4NjEsMy45MDIzNDM3NSBDMTMuMjExMTg2MSw0LjAxMTcxOTMgMTMuMTkzNjA4Miw0LjExNzE4Njk5IDEzLjE1ODQ1MTcsNC4yMTg3NSBDMTMuMTIzMjk1Myw0LjMyMDMxMzAxIDEzLjA3MDU2MTUsNC40MTIxMDg5NiAxMy4wMDAyNDg2LDQuNDk0MTQwNjIgQzEyLjkyMjEyMzIsNC41ODAwNzg1NSAxMi44MjczOTc2LDQuNjQ4NDM3MjUgMTIuNzE2MDY4OSw0LjY5OTIxODc1IEMxMi42MDQ3NDAyLDQuNzUwMDAwMjUgMTIuNDgwNzE4LDQuNzc1MzkwNjIgMTIuMzQzOTk4Niw0Ljc3NTM5MDYyIEMxMi4yMzg1MjkzLDQuNzc1MzkwNjIgMTIuMTU0NTQ1OCw0Ljc1NzgxMjY4IDEyLjA5MjA0NTUsNC43MjI2NTYyNSBDMTIuMDI5NTQ1Miw0LjY4NzQ5OTgyIDExLjk4MDcxNzUsNC42MzY3MTkwOCAxMS45NDU1NjExLDQuNTcwMzEyNSBDMTEuOTE0MzExLDQuNTAzOTA1OTIgMTEuODkyODI2OCw0LjQzOTQ1MzQ0IDExLjg4MTEwOCw0LjM3Njk1MzEyIEMxMS44NDU5NTE2LDQuMjA4OTgzNTQgMTEuODEwNzk1Nyw0LjA5NzY1NjUyIDExLjc3NTYzOTIsNC4wNDI5Njg3NSBDMTEuNzQ4Mjk1Myw0LjAwMzkwNjA1IDExLjcwNTMyNywzLjk4NDM3NSAxMS42NDY3MzMsMy45ODQzNzUgQzExLjQ3ODc2MzQsMy45ODQzNzUgMTEuMzM2MTg2Nyw0LjAxOTUzMDkgMTEuMjE4OTk4Niw0LjA4OTg0Mzc1IEMxMS4xMDE4MTA1LDQuMTYwMTU2NiAxMC45NTMzNzQ1LDQuMjc3MzQyOTMgMTAuNzczNjg2MSw0LjQ0MTQwNjI1IEw5LjgxMjc0ODYxLDkgTDguMDg0MjMyOTksOSBMOS4zNTU3MTczNiwzIFogTTE1LjE0ODkzNDcsOS4wNzAzMTI1IEMxNC42OTE5MDEyLDkuMDcwMzEyNSAxNC4zMjI3NjQzLDguOTI3NzM1OCAxNC4wNDE1MTI4LDguNjQyNTc4MTIgQzEzLjcxMzM4NjIsOC4zMDY2Mzg5NSAxMy41NDkzMjUzLDcuODA2NjQzOTUgMTMuNTQ5MzI1Myw3LjE0MjU3ODEyIEMxMy41NDkzMjUzLDYuODYxMzI2NzIgMTMuNTc3NjQ1NCw2LjU2NDQ1NDY5IDEzLjYzNDI4NjMsNi4yNTE5NTMxMiBDMTMuNjkwOTI3Miw1LjkzOTQ1MTU2IDEzLjc3MzkzNDIsNS42MzA4NjA5IDEzLjg4MzMwOTcsNS4zMjYxNzE4OCBDMTQuMTMzMzExLDQuNjM4NjY4NDQgMTQuNDc1MTA0NCw0LjA4Mzk4NjQ4IDE0LjkwODcwMDMsMy42NjIxMDkzOCBDMTUuNDA4NzAyOCwzLjE4MTYzODIyIDE1Ljk4NDg2OSwyLjk0MTQwNjI1IDE2LjYzNzIxNiwyLjk0MTQwNjI1IEMxNi45NjE0MzYzLDIuOTQxNDA2MjUgMTcuMjA0NTk4LDIuOTk3MDY5NzYgMTcuMzY2NzA4MiwzLjEwODM5ODQ0IEMxNy41Mjg4MTgzLDMuMjE5NzI3MTIgMTcuNjA5ODcyMiwzLjM2NzE4NjU4IDE3LjYwOTg3MjIsMy41NTA3ODEyNSBMMTcuNjA5ODcyMiwzLjYzODY3MTg4IEwxNy43Mzg3Nzg1LDMgTDE5LjQ2NzI5NDEsMyBMMTguNjA1OTY2LDcuMDc4MTI1IEMxOC41NzA4MDk1LDcuMTk1MzEzMDkgMTguNTUzMjMxNiw3LjMyNDIxODA1IDE4LjU1MzIzMTYsNy40NjQ4NDM3NSBDMTguNTUzMjMxNiw3LjgwODU5NTQ3IDE4LjcxNzI5MjUsNy45ODA0Njg3NSAxOS4wNDU0MTkxLDcuOTgwNDY4NzUgQzE5LjI2NDE3MDIsNy45ODA0Njg3NSAxOS40NjMzODY5LDcuODY5MTQxNzQgMTkuNjQzMDc1Myw3LjY0NjQ4NDM4IEMxOS43OTU0MTk5LDcuNDU4OTgzNDQgMTkuOTIwNDE4Niw3LjE5MzM2MTA5IDIwLjAxODA3NTMsNi44NDk2MDkzOCBMMjAuNTIxOTgxNiw2Ljg0OTYwOTM4IEMyMC4zMDcxMzY4LDcuNDU4OTg3NDIgMjAuMDQ3MzczNyw3Ljk0MTQwNDQ3IDE5Ljc0MjY4NDcsOC4yOTY4NzUgQzE5LjQ4NDg3MDksOC41ODk4NDUyMSAxOS4xOTM4NTgyLDguODAwNzgwNjEgMTguODY5NjM3OCw4LjkyOTY4NzUgQzE4LjYzMTM1NTQsOS4wMjM0Mzc5NyAxOC4zNzk0MDQ4LDkuMDcwMzEyNSAxOC4xMTM3Nzg1LDkuMDcwMzEyNSBDMTcuNzczOTMzLDkuMDcwMzEyNSAxNy41MDM0Mjc5LDguOTc3NTM5OTkgMTcuMzAyMjU1LDguNzkxOTkyMTkgQzE3LjEwMTA4MjIsOC42MDY0NDQzOCAxNi45NzkwMTMxLDguMzMyMDMzMDcgMTYuOTM2MDQ0MSw3Ljk2ODc1IEMxNi43MDk0ODA1LDguMjg5MDY0MSAxNi40NzEyMDE2LDguNTM5MDYxNiAxNi4yMjEyMDAzLDguNzE4NzUgQzE1LjkwMDg4NjIsOC45NTMxMjYxNyAxNS41NDM0Njc5LDkuMDcwMzEyNSAxNS4xNDg5MzQ3LDkuMDcwMzEyNSBaIE0xNS45MjgyMzE2LDcuOTEwMTU2MjUgQzE2LjAxODA3NTgsNy45MTAxNTYyNSAxNi4xMTI4MDE0LDcuODg2NzE4OTggMTYuMjEyNDExMyw3LjgzOTg0Mzc1IEMxNi4zMTIwMjEyLDcuNzkyOTY4NTIgMTYuNDA4Njk5OSw3LjcyNjU2MjkzIDE2LjUwMjQ1MDMsNy42NDA2MjUgQzE2LjcxMzM4ODksNy40Mzc0OTg5OCAxNi44NTQwMTI1LDcuMTczODI5NzUgMTYuOTI0MzI1Myw2Ljg0OTYwOTM4IEwxNy40OTg1NDQxLDQuMTQyNTc4MTIgQzE3LjQ5ODU0NDEsNC4xMDM1MTU0MyAxNy40ODk3NTUxLDQuMDU3NjE3NDUgMTcuNDcyMTc2OSw0LjAwNDg4MjgxIEMxNy40NTQ1OTg3LDMuOTUyMTQ4MTcgMTcuNDMwMTg0OSwzLjkwMjM0Mzk4IDE3LjM5ODkzNDcsMy44NTU0Njg3NSBDMTcuMzA1MTg0MywzLjc0MjE4NjkzIDE3LjE3NDMyNjIsMy42ODU1NDY4OCAxNy4wMDYzNTY2LDMuNjg1NTQ2ODggQzE2Ljg0NjE5OTUsMy42ODU1NDY4OCAxNi42OTA5Mjc3LDMuNzM4MjgwNzIgMTYuNTQwNTM2MywzLjg0Mzc1IEMxNi4zOTAxNDQ5LDMuOTQ5MjE5MjggMTYuMjQ4NTQ0OCw0LjA5NTcwMjE5IDE2LjExNTczMTYsNC4yODMyMDMxMiBDMTUuODgxMzU1NCw0LjYyMzA0ODU3IDE1LjY4Nzk5OCw1LjA2NjQwMzUyIDE1LjUzNTY1MzUsNS42MTMyODEyNSBDMTUuNDY1MzQwNiw1Ljg1NTQ2OTk2IDE1LjQxMjYwNjgsNi4wOTQ3MjUzOCAxNS4zNzc0NTAzLDYuMzMxMDU0NjkgQzE1LjM0MjI5MzksNi41NjczODM5OSAxNS4zMjQ3MTYsNi43ODEyNDkwNCAxNS4zMjQ3MTYsNi45NzI2NTYyNSBDMTUuMzI0NzE2LDcuMzcxMDk1NzQgMTUuMzk4OTM0LDcuNjQwNjI0MyAxNS41NDczNzIyLDcuNzgxMjUgQzE1LjU5ODE1MzcsNy44MzU5Mzc3NyAxNS42NTQ3OTM4LDcuODcxMDkzNjcgMTUuNzE3Mjk0MSw3Ljg4NjcxODc1IEMxNS43Nzk3OTQ0LDcuOTAyMzQzODMgMTUuODUwMTA2Miw3LjkxMDE1NjI1IDE1LjkyODIzMTYsNy45MTAxNTYyNSBaIE0yMi43OTM3MTQ2LDEyIEMyMi42MDYyMTM2LDEyIDIyLjQzMTQxMDcsMTEuOTc1NTg2MiAyMi4yNjkzMDA1LDExLjkyNjc1NzggQzIyLjEwNzE5MDMsMTEuODc3OTI5NCAyMS45Njc1NDMzLDExLjgwNDY4OCAyMS44NTAzNTUyLDExLjcwNzAzMTIgQzIxLjcyNTM1NDYsMTEuNjA5Mzc0NSAyMS42Mjc2OTkzLDExLjQ4NzMwNTQgMjEuNTU3Mzg2NSwxMS4zNDA4MjAzIEMyMS40ODcwNzM2LDExLjE5NDMzNTIgMjEuNDUxOTE3NywxMS4wMjUzOTE2IDIxLjQ1MTkxNzcsMTAuODMzOTg0NCBDMjEuNDUxOTE3NywxMC4zODA4NTcxIDIxLjY2NDgwNjIsOS45OTIxODkxMiAyMi4wOTA1ODk2LDkuNjY3OTY4NzUgQzIyLjQxMDkwMzcsOS40Mjk2ODYzMSAyMi44NTAzNTI0LDkuMjIyNjU3MTMgMjMuNDA4OTQ5LDkuMDQ2ODc1IEwyMy41NTU0MzMzLDguNDE0MDYyNSBDMjMuMTQ1Mjc1LDguODUxNTY0NjkgMjIuNjY0ODExMSw5LjA3MDMxMjUgMjIuMTE0MDI3MSw5LjA3MDMxMjUgQzIxLjY1Njk5MzUsOS4wNzAzMTI1IDIxLjI4Nzg1NjYsOC45Mjc3MzU4IDIxLjAwNjYwNTIsOC42NDI1NzgxMiBDMjAuNjc4NDc4Niw4LjMwNjYzODk1IDIwLjUxNDQxNzcsNy44MDY2NDM5NSAyMC41MTQ0MTc3LDcuMTQyNTc4MTIgQzIwLjUxNDQxNzcsNi44NjEzMjY3MiAyMC41NDI3Mzc3LDYuNTY0NDU0NjkgMjAuNTk5Mzc4Niw2LjI1MTk1MzEyIEMyMC42NTYwMTk2LDUuOTM5NDUxNTYgMjAuNzM5MDI2NSw1LjYzMDg2MDkgMjAuODQ4NDAyMSw1LjMyNjE3MTg4IEMyMS4wOTg0MDMzLDQuNjM4NjY4NDQgMjEuNDQwMTk2OCw0LjA4Mzk4NjQ4IDIxLjg3Mzc5MjcsMy42NjIxMDkzOCBDMjIuMzczNzk1MiwzLjE4MTYzODIyIDIyLjk0OTk2MTMsMi45NDE0MDYyNSAyMy42MDIzMDgzLDIuOTQxNDA2MjUgQzIzLjkyNjUyODcsMi45NDE0MDYyNSAyNC4xNjk2OTAzLDIuOTk3MDY5NzYgMjQuMzMxODAwNSwzLjEwODM5ODQ0IEMyNC40OTM5MTA3LDMuMjE5NzI3MTIgMjQuNTc0OTY0NiwzLjM2NzE4NjU4IDI0LjU3NDk2NDYsMy41NTA3ODEyNSBMMjQuNTc0OTY0NiwzLjYyMTA5Mzc1IEwyNC43MDM4NzA4LDMgTDI2LjQzMjM4NjUsMyBMMjUuMjQyOTMzMyw4LjU2NjQwNjI1IEMyNS42MjE4NDE1LDguNDQxNDA1NjMgMjUuOTI0NTcyOCw4LjI1MzkwNzUgMjYuMTUxMTM2NSw4LjAwMzkwNjI1IEMyNi4zOTcyMzE0LDcuNzM0MzczNjUgMjYuNTk4NDAxMyw3LjM0OTYxMTg3IDI2Ljc1NDY1MjEsNi44NDk2MDkzOCBMMjcuMjU4NTU4Myw2Ljg0OTYwOTM4IEMyNy4wNDM3MTM1LDcuNTYwNTUwNDMgMjYuNzIzNDA0Miw4LjEwOTM3MzA3IDI2LjI5NzYyMDgsOC40OTYwOTM3NSBDMjUuOTg1MTE5Myw4Ljc3NzM0NTE2IDI1LjU5ODQwNDQsOC45NzY1NjE5MSAyNS4xMzc0NjQ2LDkuMDkzNzUgTDI0Ljk1NTgyNCw5Ljk2MDkzNzUgQzI0LjgwMzQ3OTQsMTAuNzI2NTY2MyAyNC40OTg3OTUsMTEuMjgxMjQ4MyAyNC4wNDE3NjE1LDExLjYyNSBDMjMuNzA5NzI4NSwxMS44NzUwMDEyIDIzLjI5MzcxNzEsMTIgMjIuNzkzNzE0NiwxMiBaIE0yMi44OTMzMjQsNy45MTAxNTYyNSBDMjMuMDY1MTk5OCw3LjkxMDE1NjI1IDIzLjI0NjgzODYsNy44MzAwNzg5MyAyMy40MzgyNDU4LDcuNjY5OTIxODggQzIzLjY0NTI3ODEsNy40OTAyMzM0OCAyMy43ODM5NDg2LDcuMjU3ODEzOTMgMjMuODU0MjYxNSw2Ljk3MjY1NjI1IEwyNC40NjM2MzY1LDQuMTMwODU5MzggQzI0LjQ2MzYzNjUsNC4wOTE3OTY2OCAyNC40NTQ4NDc1LDQuMDQ2ODc1MjUgMjQuNDM3MjY5MywzLjk5NjA5Mzc1IEMyNC40MTk2OTExLDMuOTQ1MzEyMjUgMjQuMzk1Mjc3MiwzLjg5ODQzNzcxIDI0LjM2NDAyNzEsMy44NTU0Njg3NSBDMjQuMjcwMjc2NiwzLjc0MjE4NjkzIDI0LjEzOTQxODUsMy42ODU1NDY4OCAyMy45NzE0NDksMy42ODU1NDY4OCBDMjMuODExMjkxOSwzLjY4NTU0Njg4IDIzLjY1NjAyLDMuNzM4MjgwNzIgMjMuNTA1NjI4NiwzLjg0Mzc1IEMyMy4zNTUyMzczLDMuOTQ5MjE5MjggMjMuMjEzNjM3MSw0LjA5NTcwMjE5IDIzLjA4MDgyNCw0LjI4MzIwMzEyIEMyMi44NDY0NDc4LDQuNjIzMDQ4NTcgMjIuNjUzMDkwMyw1LjA2NjQwMzUyIDIyLjUwMDc0NTgsNS42MTMyODEyNSBDMjIuNDMwNDMzLDUuODU1NDY5OTYgMjIuMzc3Njk5MSw2LjA5NDcyNTM4IDIyLjM0MjU0MjcsNi4zMzEwNTQ2OSBDMjIuMzA3Mzg2Myw2LjU2NzM4Mzk5IDIyLjI4OTgwODMsNi43ODEyNDkwNCAyMi4yODk4MDgzLDYuOTcyNjU2MjUgQzIyLjI4OTgwODMsNy4zNzEwOTU3NCAyMi4zNjQwMjYzLDcuNjQwNjI0MyAyMi41MTI0NjQ2LDcuNzgxMjUgQzIyLjU2MzI0NjEsNy44MzU5Mzc3NyAyMi42MTk4ODYxLDcuODcxMDkzNjcgMjIuNjgyMzg2NSw3Ljg4NjcxODc1IEMyMi43NDQ4ODY4LDcuOTAyMzQzODMgMjIuODE1MTk4Niw3LjkxMDE1NjI1IDIyLjg5MzMyNCw3LjkxMDE1NjI1IFogTTIyLjUxODMyNCwxMS4wNjI1IEMyMi42NDMzMjQ2LDExLjA2MjUgMjIuNzcyMjI5NSwxMC45NzQ2MTAzIDIyLjkwNTA0MjcsMTAuNzk4ODI4MSBDMjMuMDM3ODU1OSwxMC42MjY5NTIzIDIzLjE0MTM3MDUsMTAuMzU5Mzc2OCAyMy4yMTU1ODk2LDkuOTk2MDkzNzUgTDIzLjI4NTkwMjEsOS42NTAzOTA2MiBDMjIuOTIyNjE5LDkuNzg3MTEwMDYgMjIuNjUxMTM3NCw5LjkyNTc4MDU1IDIyLjQ3MTQ0OSwxMC4wNjY0MDYyIEMyMi4yMzMxNjY1LDEwLjI0NjA5NDYgMjIuMTE0MDI3MSwxMC40NDcyNjQ1IDIyLjExNDAyNzEsMTAuNjY5OTIxOSBDMjIuMTE0MDI3MSwxMC43NzUzOTEyIDIyLjE0NzIyOTksMTAuODYzMjgwOSAyMi4yMTM2MzY1LDEwLjkzMzU5MzggQzIyLjI4Nzg1NTYsMTEuMDE5NTMxNyAyMi4zODk0MTcxLDExLjA2MjUgMjIuNTE4MzI0LDExLjA2MjUgWiBNMzMuNDQ4NTA4NywwLjk4NDM3NSBDMzMuMjAyNDEzNywwLjk5MjE4NzUzOSAzMi45ODY1OTU1LDEuMDM4MDg1NTIgMzIuODAxMDQ3NywxLjEyMjA3MDMxIEMzMi42MTU0OTk5LDEuMjA2MDU1MTEgMzIuNDU2MzIxOCwxLjMzNzg4OTczIDMyLjMyMzUwODcsMS41MTc1NzgxMiBDMzIuMDM0NDQ0NywxLjkxMjExMTM1IDMxLjg4OTkxNDksMi41NjI0OTU0NyAzMS44ODk5MTQ5LDMuNDY4NzUgQzMxLjg4OTkxNDksMy43MjY1NjM3OSAzMS45MTkyMTE1LDMuOTI1NzgwNTUgMzEuOTc3ODA1Niw0LjA2NjQwNjI1IEMzMS45OTM0MzA2LDQuMTE3MTg3NzUgMzIuMDEyOTYxNyw0LjE2MjEwOTE4IDMyLjAzNjM5OTMsNC4yMDExNzE4OCBDMzIuMDUyMDI0NCw0LjIyODUxNTc2IDMyLjA1OTgzNjgsNC4yNTU4NTkyNCAzMi4wNTk4MzY4LDQuMjgzMjAzMTIgQzMxLjYzMDE0NzIsNC4yODMyMDMxMiAzMS4zMTE3OTEsNC4xOTcyNjY0OCAzMS4xMDQ3NTg3LDQuMDI1MzkwNjIgQzMwLjg4MjEwMTMsMy44Mzc4ODk2OSAzMC43NzA3NzQzLDMuNTM1MTU4MzQgMzAuNzcwNzc0MywzLjExNzE4NzUgQzMwLjc3MDc3NDMsMi43MDMxMjI5MyAzMC44NDc5MjIsMi4zMTA1NDg3MyAzMS4wMDIyMTk2LDEuOTM5NDUzMTIgQzMxLjE1NjUxNzMsMS41NjgzNTc1MiAzMS4zOTE4NjY1LDEuMjQyMTg4OTEgMzEuNzA4Mjc0MywwLjk2MDkzNzUgQzMyLjA0ODExOTgsMC42NTYyNDg0NzcgMzIuNDgwNzMyNiwwLjQxOTkyMjcxNSAzMy4wMDYxMjU5LDAuMjUxOTUzMTI1IEMzMy41MzE1MTkxLDAuMDgzOTgzNTM1MiAzNC4xNTE2MzAxLDAgMzQuODY2NDc3NCwwIEMzNS4wMDMxOTY5LDAgMzUuMTM5OTE0MiwwLjAwNzgxMjQyMTg4IDM1LjI3NjYzMzcsMC4wMjM0Mzc1IEwzNS41ODEzMjEyLDAuMDUyNzM0Mzc1IEMzNS45NDQ2MDQyLDAuMDkxNzk3MDcwMyAzNi4xODA5MywwLjExNTIzNDMzNiAzNi4yOTAzMDU2LDAuMTIzMDQ2ODc1IEMzNi40NTgyNzUxLDAuMTM4NjcxOTUzIDM2LjY0NzcyNjQsMC4xNDY0ODQzNzUgMzYuODU4NjY0OSwwLjE0NjQ4NDM3NSBDMzcuMjg0NDQ4MywwLjE0NjQ4NDM3NSAzNy42NDM4MTk3LDAuMDk3NjU2NzM4MyAzNy45MzY3ODk5LDAgQzM3LjkwMTYzMzUsMC4xMDE1NjMwMDggMzcuODY0NTI0NSwwLjIzNjMyNzI4NSAzNy44MjU0NjE4LDAuNDA0Mjk2ODc1IEMzNy43Mzk1MjM5LDAuNzQwMjM2MDU1IDM3LjU3OTM2OTIsMS4wMDU4NTg0IDM3LjM0NDk5MzEsMS4yMDExNzE4OCBDMzcuMjA4MjczNiwxLjMxNDQ1MzY5IDM3LjAyNjYzNDgsMS4zOTQ1MzEwMiAzNi44MDAwNzEyLDEuNDQxNDA2MjUgQzM2LjMxNTY5MzgsMS40NDE0MDYyNSAzNS43NTUxNTI1LDEuMzY1MjM1MTQgMzUuMTE4NDMwNiwxLjIxMjg5MDYyIEwzNC42MTQ1MjQzLDMuNTk3NjU2MjUgTDM2LjM2NjQ3NzQsMy41OTc2NTYyNSBMMzYuMTczMTE4MSw0LjQ4ODI4MTI1IEwzNC40MjExNjQ5LDQuNDg4MjgxMjUgTDMzLjQ0ODUwODcsOSBMMzEuNzE5OTkzMSw5IEwzMy40NDg1MDg3LDAuOTg0Mzc1IFogTTM4LjU3OTYxNjcsOS4wNDY4NzUgQzM3Ljk4NTg2MzcsOS4wNDY4NzUgMzcuNTI2ODgzOSw4LjkwMjM0NTIgMzcuMjAyNjYzNSw4LjYxMzI4MTI1IEMzNi44MzkzODA1LDguMjkyOTY3MTUgMzYuNjU3NzQxNyw3LjgwNjY0Mzg5IDM2LjY1Nzc0MTcsNy4xNTQyOTY4OCBDMzYuNjU3NzQxNyw2LjkwODIwMTg5IDM2LjY4MzEzMiw2LjYzNTc0MzY4IDM2LjczMzkxMzUsNi4zMzY5MTQwNiBDMzYuNzg0Njk1LDYuMDM4MDg0NDQgMzYuODYyODE5Myw1LjczNjMyOTY1IDM2Ljk2ODI4ODUsNS40MzE2NDA2MiBDMzcuMjEwNDc3Myw0LjcwNTA3NDQ5IDM3LjU1NjE3NjksNC4xMjUwMDIxNyAzOC4wMDUzOTc5LDMuNjkxNDA2MjUgQzM4LjU0ODM2OTQsMy4xNjAxNTM1OSAzOS4xOTQ4NDczLDIuODk0NTMxMjUgMzkuOTQ0ODUxLDIuODk0NTMxMjUgQzQwLjk3MjE5OTksMi44OTQ1MzEyNSA0MS40ODU4NjY3LDMuNTMzMTk2NzQgNDEuNDg1ODY2Nyw0LjgxMDU0Njg4IEw0MS40ODU4NjY3LDQuODIyMjY1NjIgQzQxLjUwOTMwNDMsNC44MzAwNzgxNiA0MS41Mjg4MzUzLDQuODMzOTg0MzggNDEuNTQ0NDYwNCw0LjgzMzk4NDM4IEw0MS42MTQ3NzI5LDQuODMzOTg0MzggQzQxLjg4MDM5OTIsNC44MzM5ODQzOCA0Mi4xOTQ4NDkyLDQuNzU5NzY2MzcgNDIuNTU4MTMyMyw0LjYxMTMyODEyIEM0Mi44Nzg0NDY0LDQuNDc4NTE0OTYgNDMuMTgxMTc3Nyw0LjMxMjUwMSA0My40NjYzMzU0LDQuMTEzMjgxMjUgTDQzLjU3MTgwNDIsNC40NDE0MDYyNSBDNDMuMzM3NDI4LDQuNjg3NTAxMjMgNDMuMDM1NjczMiw0Ljg5NjQ4MzUyIDQyLjY2NjUzMDcsNS4wNjgzNTkzOCBDNDIuMjk3Mzg4Myw1LjI0MDIzNTIzIDQxLjg5MDE2NTgsNS4zNjMyODA4OCA0MS40NDQ4NTEsNS40Mzc1IEM0MS4zOTc5NzU4LDUuOTgwNDcxNDYgNDEuMjkyNTA4MSw2LjQ3NTU4MzcgNDEuMTI4NDQ0OCw2LjkyMjg1MTU2IEM0MC45NjQzODE1LDcuMzcwMTE5NDIgNDAuNzUzNDQ2MSw3Ljc1MzkwNDY1IDQwLjQ5NTYzMjMsOC4wNzQyMTg3NSBDNDAuMjQxNzI0OCw4LjM4NjcyMDMxIDM5Ljk1MDcxMjEsOC42MjY5NTIyOSAzOS42MjI1ODU0LDguNzk0OTIxODggQzM5LjI5NDQ1ODgsOC45NjI4OTE0NiAzOC45NDY4MDYsOS4wNDY4NzUgMzguNTc5NjE2Nyw5LjA0Njg3NSBaIE0zOS4wNjAwODU0LDcuOTY4NzUgQzM5LjIwMDcxMTEsNy45Njg3NSAzOS4zNDQyNjQ0LDcuOTA1Mjc0MDcgMzkuNDkwNzQ5NSw3Ljc3ODMyMDMxIEMzOS42MzcyMzQ2LDcuNjUxMzY2NTUgMzkuNzc0OTI4NSw3LjQ3NDYxMDUxIDM5LjkwMzgzNTQsNy4yNDgwNDY4OCBDNDAuMDMyNzQyMyw3LjAyMTQ4MzI0IDQwLjE0NDA2OTMsNi43NTU4NjA5IDQwLjIzNzgxOTgsNi40NTExNzE4OCBDNDAuMzMxNTcwMyw2LjE0NjQ4Mjg1IDQwLjQwMTg4MjEsNS44MjAzMTQyNCA0MC40NDg3NTczLDUuNDcyNjU2MjUgQzQwLjMzMTU2OTIsNS40NDE0MDYwOSA0MC4yNDg1NjIyLDUuMzgyODEyOTMgNDAuMTk5NzMzOSw1LjI5Njg3NSBDNDAuMTUwOTA1NSw1LjIxMDkzNzA3IDQwLjEyNjQ5MTcsNS4xMDE1NjMxNiA0MC4xMjY0OTE3LDQuOTY4NzUgQzQwLjEyNjQ5MTcsNC44MDQ2ODY2OCA0MC4xNTk2OTQ1LDQuNjY3OTY5MyA0MC4yMjYxMDEsNC41NTg1OTM3NSBDNDAuMjkyNTA3Niw0LjQ0OTIxODIgNDAuMzg0MzAzNiw0LjM2OTE0MDg4IDQwLjUwMTQ5MTcsNC4zMTgzNTkzOCBDNDAuNDg1ODY2Niw0LjA2NDQ1MTg2IDQwLjQ0NDg1MTQsMy44ODI4MTMwNSA0MC4zNzg0NDQ4LDMuNzczNDM3NSBDNDAuMzQzMjg4NCwzLjcxODc0OTczIDQwLjI5OTM0MzUsMy42Nzk2ODc2MiA0MC4yNDY2MDg5LDMuNjU2MjUgQzQwLjE5Mzg3NDIsMy42MzI4MTIzOCA0MC4xMjY0OTIxLDMuNjIxMDkzNzUgNDAuMDQ0NDYwNCwzLjYyMTA5Mzc1IEMzOS43NzQ5Mjc4LDMuNjIxMDkzNzUgMzkuNTExMjU4NiwzLjgyNDIxNjcyIDM5LjI1MzQ0NDgsNC4yMzA0Njg3NSBDMzkuMDE1MTYyMyw0LjU5NzY1ODA5IDM4LjgxOTg1MTgsNS4wNTA3Nzg1NSAzOC42Njc1MDczLDUuNTg5ODQzNzUgQzM4LjUxOTA2OSw2LjExNzE5MDE0IDM4LjQ0NDg1MSw2LjU4NTkzNTQ1IDM4LjQ0NDg1MSw2Ljk5NjA5Mzc1IEMzOC40NDQ4NTEsNy4xOTUzMTM1IDM4LjQ1NTU5MzEsNy4zNTc0MjEyNSAzOC40NzcwNzc2LDcuNDgyNDIxODggQzM4LjQ5ODU2MjEsNy42MDc0MjI1IDM4LjUzNDY5NDUsNy43MDUwNzc3NyAzOC41ODU0NzYsNy43NzUzOTA2MiBDMzguNjMyMzUxMyw3Ljg0NTcwMzQ4IDM4LjY5Mjg5NzUsNy44OTU1MDc2NyAzOC43NjcxMTY3LDcuOTI0ODA0NjkgQzM4Ljg0MTMzNTgsNy45NTQxMDE3MSAzOC45Mzg5OTExLDcuOTY4NzUgMzkuMDYwMDg1NCw3Ljk2ODc1IFogTTQ0LjQ2NjU4NCw5LjA3MDMxMjUgQzQzLjg3NjczNzMsOS4wNzAzMTI1IDQzLjQyMTY2MzgsOC45MjE4NzY0OCA0My4xMDEzNDk3LDguNjI1IEM0Mi43NjE1MDQyLDguMzA4NTkyMTcgNDIuNTkxNTg0LDcuODIyMjY4OTEgNDIuNTkxNTg0LDcuMTY2MDE1NjIgQzQyLjU5MTU4NCw2LjkxOTkyMDY0IDQyLjYxNTk5NzgsNi42NDU1MDkzMyA0Mi42NjQ4MjYyLDYuMzQyNzczNDQgQzQyLjcxMzY1NDYsNi4wNDAwMzc1NSA0Mi43ODg4NDkxLDUuNzM4MjgyNzUgNDIuODkwNDEyMiw1LjQzNzUgQzQzLjEyODY5NDYsNC43MDcwMjc2IDQzLjQ2NjU4MTgsNC4xMjUwMDIxNyA0My45MDQwODQsMy42OTE0MDYyNSBDNDQuNDQzMTQ5MiwzLjE2MDE1MzU5IDQ1LjA4MTgxNDcsMi44OTQ1MzEyNSA0NS44MjAwOTk3LDIuODk0NTMxMjUgQzQ2LjMwMDU3MDgsMi44OTQ1MzEyNSA0Ni42NTYwMzYsMy4wMDk3NjQ0NyA0Ni44ODY1MDU5LDMuMjQwMjM0MzggQzQ3LjA2NjE5NDMsMy40MjM4MjkwNCA0Ny4xNTYwMzcyLDMuNjc1Nzc5NjUgNDcuMTU2MDM3MiwzLjk5NjA5Mzc1IEM0Ny4xNTYwMzcyLDQuMjc3MzQ1MTYgNDcuMDkzNTM3OCw0LjQ5NjA5Mjk3IDQ2Ljk2ODUzNzIsNC42NTIzNDM3NSBDNDYuODUxMzQ5MSw0Ljc5Njg3NTcyIDQ2LjcwMDk1OTksNC44NjkxNDA2MiA0Ni41MTczNjUzLDQuODY5MTQwNjIgQzQ2LjM4NDU1MjEsNC44NjkxNDA2MiA0Ni4yNDM5Mjg1LDQuODIyMjY2MDkgNDYuMDk1NDkwMyw0LjcyODUxNTYyIEM0Ni4xOTMxNDcsNC40NzQ2MDgxMSA0Ni4yNDE5NzQ3LDQuMjM4MjgyMzQgNDYuMjQxOTc0Nyw0LjAxOTUzMTI1IEM0Ni4yNDE5NzQ3LDMuODY3MTg2NzQgNDYuMjEzNjU0NiwzLjc0NzA3MDc1IDQ2LjE1NzAxMzcsMy42NTkxNzk2OSBDNDYuMTAwMzcyOCwzLjU3MTI4ODYyIDQ2LjAxNzM2NTgsMy41MjczNDM3NSA0NS45MDc5OTAzLDMuNTI3MzQzNzUgQzQ1LjY3MzYxNDEsMy41MjczNDM3NSA0NS40Mjk0NzU5LDMuNzM0MzcyOTMgNDUuMTc1NTY4NCw0LjE0ODQzNzUgQzQ0Ljk0NTA5ODUsNC41MTU2MjY4NCA0NC43NTM2OTQyLDQuOTgyNDE5MDQgNDQuNjAxMzQ5Nyw1LjU0ODgyODEyIEM0NC40NDUwOTg5LDYuMTAzNTE4NCA0NC4zNjY5NzQ3LDYuNjA1NDY2NSA0NC4zNjY5NzQ3LDcuMDU0Njg3NSBDNDQuMzY2OTc0Nyw3LjQ0NTMxNDQ1IDQ0LjQ0MTE5MjcsNy43MTQ4NDMwMSA0NC41ODk2MzA5LDcuODYzMjgxMjUgQzQ0LjcxODUzNzgsNy45OTYwOTQ0MSA0NC45MzMzNzk0LDguMDYyNSA0NS4yMzQxNjIyLDguMDYyNSBDNDUuNjY3NzU4MSw4LjA2MjUgNDYuMDY0MjM4NSw3Ljk0NTMxMzY3IDQ2LjQyMzYxNTMsNy43MTA5Mzc1IEM0Ni41NzU5NTk4LDcuNjEzMjgwNzYgNDYuNzIyNDQyNyw3LjQ5NzA3MDk5IDQ2Ljg2MzA2ODQsNy4zNjIzMDQ2OSBDNDcuMDAzNjk0MSw3LjIyNzUzODM5IDQ3LjE2Nzc1NSw3LjA1NjY0MTY2IDQ3LjM1NTI1NTksNi44NDk2MDkzOCBMNDcuNzY1NDEyMiw2Ljg0OTYwOTM4IEM0Ny4zODY1MDQsNy40OTAyMzc1OCA0Ni45NTA5NjE1LDcuOTk5OTk4MTEgNDYuNDU4NzcxNSw4LjM3ODkwNjI1IEM0NS44NTMyOTk3LDguODM5ODQ2MDUgNDUuMTg5MjQzOSw5LjA3MDMxMjUgNDQuNDY2NTg0LDkuMDcwMzEyNSBaIE00OS4xOTkyNTQ1LDkuMDcwMzEyNSBDNDguODE2NDQwMSw5LjA3MDMxMjUgNDguNTEzNzA4OCw4Ljk1NzAzMjM4IDQ4LjI5MTA1MTQsOC43MzA0Njg3NSBDNDguMDQxMDUwMSw4LjQ4MDQ2NzUgNDcuOTE2MDUxNCw4LjExNTIzNjc4IDQ3LjkxNjA1MTQsNy42MzQ3NjU2MiBDNDcuOTE2MDUxNCw3LjQwODIwMTk5IDQ3Ljk0NzMwMTEsNy4xNDY0ODU4NiA0OC4wMDk4MDE0LDYuODQ5NjA5MzggTDQ4LjgyNDI1NDUsMyBMNTAuNTUyNzcwMSwzIEw0OS42OTE0NDIsNy4wNzgxMjUgQzQ5LjY2ODAwNDQsNy4xOTkyMTkzNiA0OS42NTYyODU4LDcuMzEyNDk5NDcgNDkuNjU2Mjg1OCw3LjQxNzk2ODc1IEM0OS42NTYyODU4LDcuNzQ2MDk1MzkgNDkuNzc1NDI1Miw3LjkxMDE1NjI1IDUwLjAxMzcwNzYsNy45MTAxNTYyNSBDNTAuMjMyNDU4Nyw3LjkxMDE1NjI1IDUwLjQyOTcyMjQsNy44MTA1NDc4NyA1MC42MDU1MDQ1LDcuNjExMzI4MTIgQzUwLjc0NjEzMDIsNy40NDMzNTg1NCA1MC44NjkxNzU5LDcuMTg5NDU0ODIgNTAuOTc0NjQ1MSw2Ljg0OTYwOTM4IEw1MS43ODkwOTgzLDMgTDUzLjUxNzYxMzksMyBMNTIuNjU2Mjg1OCw3LjA3ODEyNSBDNTIuNjIxMTI5Myw3LjE5NTMxMzA5IDUyLjYwMzU1MTQsNy4zMjQyMTgwNSA1Mi42MDM1NTE0LDcuNDY0ODQzNzUgQzUyLjYwMzU1MTQsNy42Mjg5MDcwNyA1Mi42NDI2MTM1LDcuNzQ0MTQwMjkgNTIuNzIwNzM4OSw3LjgxMDU0Njg4IEM1Mi43OTg4NjQzLDcuODc2OTUzNDYgNTIuOTIzODYzLDcuOTEwMTU2MjUgNTMuMDk1NzM4OSw3LjkxMDE1NjI1IEM1My4zMTgzOTYzLDcuOTEwMTU2MjUgNTMuNTE3NjEzLDcuODEwNTQ3ODcgNTMuNjkzMzk1MSw3LjYxMTMyODEyIEM1My44NDk2NDU5LDcuNDM1NTQ2IDUzLjk3NDY0NDcsNy4xODE2NDIyOSA1NC4wNjgzOTUxLDYuODQ5NjA5MzggTDU0LjU3MjMwMTQsNi44NDk2MDkzOCBDNTQuMzU3NDU2Niw3LjQ1ODk4NzQyIDU0LjA5NzY5MzUsNy45NDE0MDQ0NyA1My43OTMwMDQ1LDguMjk2ODc1IEM1My41MzUxOTA3LDguNTg5ODQ1MjEgNTMuMjQ0MTc4LDguODAwNzgwNjEgNTIuOTE5OTU3Niw4LjkyOTY4NzUgQzUyLjY4MTY3NTIsOS4wMjM0Mzc5NyA1Mi40Mjk3MjQ2LDkuMDcwMzEyNSA1Mi4xNjQwOTgzLDkuMDcwMzEyNSBDNTEuODIwMzQ2NSw5LjA3MDMxMjUgNTEuNTQ2OTExOCw4Ljk3NDYxMDMzIDUxLjM0Mzc4NTgsOC43ODMyMDMxMiBDNTEuMTQwNjU5Nyw4LjU5MTc5NTkyIDUxLjAxNzYxNDEsOC4zMDg1OTU2MiA1MC45NzQ2NDUxLDcuOTMzNTkzNzUgQzUwLjcwMTIwNjMsOC4zNzEwOTU5NCA1MC4zOTI2MTU2LDguNjgzNTkyODEgNTAuMDQ4ODYzOSw4Ljg3MTA5Mzc1IEM0OS44MDI3Njg5LDkuMDAzOTA2OTEgNDkuNTE5NTY4Niw5LjA3MDMxMjUgNDkuMTk5MjU0NSw5LjA3MDMxMjUgWiBNNTYuMDg4MTc1LDkuMDcwMzEyNSBDNTUuNzk5MTExMSw5LjA3MDMxMjUgNTUuNTQzMjU0Miw5LjAyNjM2NzYzIDU1LjMyMDU5NjksOC45Mzg0NzY1NiBDNTUuMDk3OTM5NSw4Ljg1MDU4NTUgNTQuOTEwNDQxNCw4LjcyODUxNjQxIDU0Ljc1ODA5NjksOC41NzIyNjU2MiBDNTQuNjE3NDcxMiw4LjQyNzczMzY1IDU0LjUxMjAwMzUsOC4yNjY2MDI0NSA1NC40NDE2OTA2LDguMDg4ODY3MTkgQzU0LjM3MTM3NzgsNy45MTExMzE5MiA1NC4zMzYyMjE5LDcuNzI2NTYzNDYgNTQuMzM2MjIxOSw3LjUzNTE1NjI1IEM1NC4zMzYyMjE5LDcuMjczNDM2MTkgNTQuNDAyNjI3NSw3LjAzNzExMDQzIDU0LjUzNTQ0MDYsNi44MjYxNzE4OCBDNTQuNjUyNjI4Nyw2LjYzODY3MDk0IDU0Ljc5OTExMTYsNi41MDM5MDY2NiA1NC45NzQ4OTM3LDYuNDIxODc1IEM1NS4yODczOTUzLDUuODY3MTg0NzMgNTUuNTU4ODc3LDUuMzA0NjkwMzUgNTUuNzg5MzQ2OSw0LjczNDM3NSBDNTYuMDE5ODE2OCw0LjE2NDA1OTY1IDU2LjI0MDUxNzcsMy41NDEwMTkgNTYuNDUxNDU2MiwyLjg2NTIzNDM4IEw1OC4yMjY4NDY5LDIuNjMwODU5MzggQzU4LjI3MzcyMjEsMy42NDY0ODk0NSA1OC4zMTY2OTA0LDQuNDI1Nzc4NTQgNTguMzU1NzUzMSw0Ljk2ODc1IEM1OC4zOTQ4MTU4LDUuNTI3MzQ2NTQgNTguNDI4MDE4Niw1LjkzNzQ5ODY5IDU4LjQ1NTM2MjUsNi4xOTkyMTg3NSBDNTguNDc4ODAwMSw2LjUwMzkwNzc3IDU4LjQ5MDUxODcsNi43Njk1MzAxMiA1OC40OTA1MTg3LDYuOTk2MDkzNzUgQzU4LjQ5MDUxODcsNy4xOTkyMTk3NyA1OC40NzQ4OTM5LDcuMzUxNTYxOTkgNTguNDQzNjQzNyw3LjQ1MzEyNSBDNTguODAzMDIwNSw3LjI0MjE4NjQ1IDU5LjA5MDEyNyw3LjA0MTAxNjU4IDU5LjMwNDk3MTksNi44NDk2MDkzOCBMNTkuODA4ODc4MSw2Ljg0OTYwOTM4IEM1OS41MjM3MjA0LDcuMTgxNjQyMjkgNTkuMjI5Nzc4MSw3LjQ2Njc5NTY4IDU4LjkyNzA0MjIsNy43MDUwNzgxMiBDNTguNjI0MzA2Myw3Ljk0MzM2MDU3IDU4LjMwNjkyNjcsOC4xNTgyMDIxNyA1Ny45NzQ4OTM3LDguMzQ5NjA5MzggQzU3LjczNjYxMTMsOC41OTk2MTA2MiA1Ny40Mzc3ODYyLDguNzg1MTU1NjQgNTcuMDc4NDA5NCw4LjkwNjI1IEM1Ni43NjU5MDc4LDkuMDE1NjI1NTUgNTYuNDM1ODMzLDkuMDcwMzEyNSA1Ni4wODgxNzUsOS4wNzAzMTI1IFogTTU1LjcwNzMxNTYsOC4xMjEwOTM3NSBDNTYuMDA4MDk4NCw4LjEyMTA5Mzc1IDU2LjI0ODMzMDQsOC4wMzkwNjMzMiA1Ni40MjgwMTg3LDcuODc1IEM1Ni42NDI4NjM2LDcuNjc5Njg2NTIgNTYuNzUwMjg0NCw3LjM5MDYyNjkxIDU2Ljc1MDI4NDQsNy4wMDc4MTI1IEM1Ni43NTAyODQ0LDYuODQ3NjU1NDUgNTYuNzQwNTE4OCw2LjY0NjQ4NTU5IDU2LjcyMDk4NzUsNi40MDQyOTY4OCBMNTYuNjkxNjkwNiw2LjA0Njg3NSBDNTYuNjU2NTM0Miw1LjczODI3OTcxIDU2LjYyMTM3ODMsNS4zODA4NjE0MSA1Ni41ODYyMjE5LDQuOTc0NjA5MzggTDU2LjUyMTc2ODcsNC4xNjYwMTU2MiBDNTYuNDA4NDg2OSw0LjUyOTI5ODY5IDU2LjI3MzcyMjcsNC44ODk2NDY2NSA1Ni4xMTc0NzE5LDUuMjQ3MDcwMzEgQzU1Ljk2MTIyMTEsNS42MDQ0OTM5NyA1NS43NzE3Njk5LDUuOTk5OTk3ODMgNTUuNTQ5MTEyNSw2LjQzMzU5Mzc1IEM1NS43MzI3MDcyLDYuNTM1MTU2NzYgNTUuODI0NTAzMSw2LjY3MzgyNzI1IDU1LjgyNDUwMzEsNi44NDk2MDkzOCBDNTUuODI0NTAzMSw3LjAwNTg2MDE2IDU1Ljc3NzYyODYsNy4xNDA2MjQ0MyA1NS42ODM4NzgxLDcuMjUzOTA2MjUgQzU1LjU4MjMxNTEsNy4zNzg5MDY4NyA1NS40NTM0MTAyLDcuNDQxNDA2MjUgNTUuMjk3MTU5NCw3LjQ0MTQwNjI1IEM1NS4yMTkwMzQsNy40NDE0MDYyNSA1NS4xNTM2MDQ5LDcuNDMwNjY0MTcgNTUuMTAwODcwMyw3LjQwOTE3OTY5IEM1NS4wNDgxMzU3LDcuMzg3Njk1MjEgNTUuMDA2MTQzOSw3LjM0NTcwMzQ0IDU0Ljk3NDg5MzcsNy4yODMyMDMxMiBDNTQuOTc0ODkzNyw3LjU3MjI2NzA3IDU1LjAzMTUzMzgsNy43ODQxNzkwMSA1NS4xNDQ4MTU2LDcuOTE4OTQ1MzEgQzU1LjI1ODA5NzQsOC4wNTM3MTE2MSA1NS40NDU1OTU2LDguMTIxMDkzNzUgNTUuNzA3MzE1Niw4LjEyMTA5Mzc1IFogTTY1Ljk3NTM5MSwxLjM2NTIzNDM4IEw2Ny43NTA3ODE2LDEuMTMwODU5MzggTDY2LjkwMTE3MjIsNS4xMzg2NzE4OCBDNjcuMjgwMDgwNCw1LjExMTMyNzk5IDY3LjY0MTQwNDksNC45MzU1NDg1IDY3Ljk4NTE1NjYsNC42MTEzMjgxMiBDNjguMjk3NjU4Miw0LjMxODM1NzkxIDY4LjU0NTcwMjYsMy45NDcyNjc4NyA2OC43MjkyOTcyLDMuNDk4MDQ2ODggQzY4LjkwODk4NTYsMy4wNjgzNTcyMyA2OC45OTg4Mjg1LDIuNjMwODYxNiA2OC45OTg4Mjg1LDIuMTg1NTQ2ODggQzY4Ljk5ODgyODUsMS43MTY3OTQ1MyA2OC44ODM1OTUyLDEuMzMyMDMyNzUgNjguNjUzMTI1MywxLjAzMTI1IEM2OC41MjgxMjQ3LDAuODc4OTA1NDg4IDY4LjM2OTkyMzIsMC43NjA3NDI2MDcgNjguMTc4NTE2LDAuNjc2NzU3ODEyIEM2Ny45ODcxMDg4LDAuNTkyNzczMDE4IDY3Ljc2NDQ1NDcsMC41NTA3ODEyNSA2Ny41MTA1NDcyLDAuNTUwNzgxMjUgQzY3LjAyNjE2OTgsMC41NTA3ODEyNSA2Ni41OTE2MDM4LDAuNjE3MTg2ODM2IDY2LjIwNjgzNjMsMC43NSBDNjUuODIyMDY4NywwLjg4MjgxMzE2NCA2NS40OTQ5MjM2LDEuMDc0MjE3NSA2NS4yMjUzOTEsMS4zMjQyMTg3NSBDNjQuOTU1ODU4NCwxLjU3NDIyIDY0Ljc1MTc1ODksMS44ODA4NTc1NiA2NC42MTMwODYzLDIuMjQ0MTQwNjIgQzY0LjQ3NDQxMzcsMi42MDc0MjM2OSA2NC40MDUwNzg1LDMuMDE1NjIyNzMgNjQuNDA1MDc4NSwzLjQ2ODc1IEM2NC40MDUwNzg1LDMuNzE4NzUxMjUgNjQuNDMyNDIxOSwzLjkxNzk2ODAxIDY0LjQ4NzEwOTcsNC4wNjY0MDYyNSBDNjQuNTAyNzM0OCw0LjExNzE4Nzc1IDY0LjUyMjI2NTksNC4xNjIxMDkxOCA2NC41NDU3MDM1LDQuMjAxMTcxODggQzY0LjU2MTMyODUsNC4yMjg1MTU3NiA2NC41NjkxNDEsNC4yNTU4NTkyNCA2NC41NjkxNDEsNC4yODMyMDMxMiBDNjQuMTM1NTQ1MSw0LjI4MzIwMzEyIDYzLjgxOTE0Miw0LjE5NzI2NjQ4IDYzLjYxOTkyMjIsNC4wMjUzOTA2MiBDNjMuMzk3MjY0OSwzLjgzNzg4OTY5IDYzLjI4NTkzNzgsMy41MzUxNTgzNCA2My4yODU5Mzc4LDMuMTE3MTg3NSBDNjMuMjg1OTM3OCwyLjg1NTQ2NzQ0IDYzLjM0MjU3NzksMi41OTY2ODA5NyA2My40NTU4NTk3LDIuMzQwODIwMzEgQzYzLjU2OTE0MTUsMi4wODQ5NTk2NiA2My43MjkyOTYyLDEuODM3ODkxODIgNjMuOTM2MzI4NSwxLjU5OTYwOTM4IEM2NC4xMzE2NDE5LDEuMzczMDQ1NzQgNjQuMzY1MDM4MSwxLjE2MTEzMzggNjQuNjM2NTIzOCwwLjk2Mzg2NzE4OCBDNjQuOTA4MDA5NSwwLjc2NjYwMDU3NiA2NS4yMDE5NTE5LDAuNTk1NzAzODQ4IDY1LjUxODM1OTcsMC40NTExNzE4NzUgQzY2LjE4MjQyNTUsMC4xNTAzODkxMjEgNjYuODQyNTc1MiwwIDY3LjQ5ODgyODUsMCBDNjguNDI0NjE0MywwIDY5LjE0MzM1NzIsMC4yNDAyMzE5NzMgNjkuNjU1MDc4NSwwLjcyMDcwMzEyNSBDNjkuODgxNjQyMSwwLjkzNTU0Nzk0OSA3MC4wNTA1ODU3LDEuMTgzNTkyMzQgNzAuMTYxOTE0NCwxLjQ2NDg0Mzc1IEM3MC4yNzMyNDMxLDEuNzQ2MDk1MTYgNzAuMzI4OTA2NiwyLjA0NDkyMDI5IDcwLjMyODkwNjYsMi4zNjEzMjgxMiBDNzAuMzI4OTA2NiwyLjc0ODA0ODgxIDcwLjI0OTgwNTgsMy4xMzI4MTA1OSA3MC4wOTE2MDE5LDMuNTE1NjI1IEM2OS45MzMzOTgsMy44OTg0Mzk0MSA2OS43MDU4NjEyLDQuMjQwMjMyODcgNjkuNDA4OTg0Nyw0LjU0MTAxNTYyIEM2OS4wOTY0ODMyLDQuODYxMzI5NzMgNjguNzI0NDE2Niw1LjExNDI1Njg4IDY4LjI5Mjc3MzgsNS4yOTk4MDQ2OSBDNjcuODYxMTMxLDUuNDg1MzUyNDkgNjcuMzg1NTQ5OCw1LjU3ODEyNSA2Ni44NjYwMTYsNS41NzgxMjUgTDY2LjgwMTU2MjgsNS41NzgxMjUgTDY2LjA2OTE0MSw5IEw2NC4zNDY0ODQ3LDkgTDY1Ljk3NTM5MSwxLjM2NTIzNDM4IFogTTcyLjUwMTAzMDIsOS4wNDY4NzUgQzcxLjkwNzI3NzIsOS4wNDY4NzUgNzEuNDQ4Mjk3NSw4LjkwMjM0NTIgNzEuMTI0MDc3MSw4LjYxMzI4MTI1IEM3MC43NjA3OTQsOC4yOTI5NjcxNSA3MC41NzkxNTUyLDcuODA2NjQzODkgNzAuNTc5MTU1Miw3LjE1NDI5Njg4IEM3MC41NzkxNTUyLDYuOTA4MjAxODkgNzAuNjA0NTQ1Niw2LjYzNTc0MzY4IDcwLjY1NTMyNzEsNi4zMzY5MTQwNiBDNzAuNzA2MTA4Niw2LjAzODA4NDQ0IDcwLjc4NDIzMjgsNS43MzYzMjk2NSA3MC44ODk3MDIxLDUuNDMxNjQwNjIgQzcxLjEzMTg5MDgsNC43MDUwNzQ0OSA3MS40Nzc1OTA1LDQuMTI1MDAyMTcgNzEuOTI2ODExNSwzLjY5MTQwNjI1IEM3Mi40Njk3ODI5LDMuMTYwMTUzNTkgNzMuMTE2MjYwOCwyLjg5NDUzMTI1IDczLjg2NjI2NDYsMi44OTQ1MzEyNSBDNzQuODkzNjEzNSwyLjg5NDUzMTI1IDc1LjQwNzI4MDIsMy41MzMxOTY3NCA3NS40MDcyODAyLDQuODEwNTQ2ODggTDc1LjQwNzI4MDIsNC44MjIyNjU2MiBDNzUuNDMwNzE3OCw0LjgzMDA3ODE2IDc1LjQ1MDI0ODksNC44MzM5ODQzOCA3NS40NjU4NzQsNC44MzM5ODQzOCBMNzUuNTM2MTg2NSw0LjgzMzk4NDM4IEM3NS44MDE4MTI4LDQuODMzOTg0MzggNzYuMTE2MjYyOCw0Ljc1OTc2NjM3IDc2LjQ3OTU0NTgsNC42MTEzMjgxMiBDNzYuNzk5ODU5OSw0LjQ3ODUxNDk2IDc3LjEwMjU5MTMsNC4zMTI1MDEgNzcuMzg3NzQ5LDQuMTEzMjgxMjUgTDc3LjQ5MzIxNzcsNC40NDE0MDYyNSBDNzcuMjU4ODQxNSw0LjY4NzUwMTIzIDc2Ljk1NzA4NjcsNC44OTY0ODM1MiA3Ni41ODc5NDQzLDUuMDY4MzU5MzggQzc2LjIxODgwMTgsNS4yNDAyMzUyMyA3NS44MTE1NzkzLDUuMzYzMjgwODggNzUuMzY2MjY0Niw1LjQzNzUgQzc1LjMxOTM4OTMsNS45ODA0NzE0NiA3NS4yMTM5MjE3LDYuNDc1NTgzNyA3NS4wNDk4NTgzLDYuOTIyODUxNTYgQzc0Ljg4NTc5NSw3LjM3MDExOTQyIDc0LjY3NDg1OTYsNy43NTM5MDQ2NSA3NC40MTcwNDU4LDguMDc0MjE4NzUgQzc0LjE2MzEzODMsOC4zODY3MjAzMSA3My44NzIxMjU2LDguNjI2OTUyMjkgNzMuNTQzOTk5LDguNzk0OTIxODggQzczLjIxNTg3MjMsOC45NjI4OTE0NiA3Mi44NjgyMTk1LDkuMDQ2ODc1IDcyLjUwMTAzMDIsOS4wNDY4NzUgWiBNNzIuOTgxNDk5LDcuOTY4NzUgQzczLjEyMjEyNDcsNy45Njg3NSA3My4yNjU2Nzc5LDcuOTA1Mjc0MDcgNzMuNDEyMTYzLDcuNzc4MzIwMzEgQzczLjU1ODY0ODEsNy42NTEzNjY1NSA3My42OTYzNDIxLDcuNDc0NjEwNTEgNzMuODI1MjQ5LDcuMjQ4MDQ2ODggQzczLjk1NDE1NTksNy4wMjE0ODMyNCA3NC4wNjU0ODI5LDYuNzU1ODYwOSA3NC4xNTkyMzMzLDYuNDUxMTcxODggQzc0LjI1Mjk4MzgsNi4xNDY0ODI4NSA3NC4zMjMyOTU2LDUuODIwMzE0MjQgNzQuMzcwMTcwOCw1LjQ3MjY1NjI1IEM3NC4yNTI5ODI3LDUuNDQxNDA2MDkgNzQuMTY5OTc1OCw1LjM4MjgxMjkzIDc0LjEyMTE0NzQsNS4yOTY4NzUgQzc0LjA3MjMxOSw1LjIxMDkzNzA3IDc0LjA0NzkwNTIsNS4xMDE1NjMxNiA3NC4wNDc5MDUyLDQuOTY4NzUgQzc0LjA0NzkwNTIsNC44MDQ2ODY2OCA3NC4wODExMDgsNC42Njc5NjkzIDc0LjE0NzUxNDYsNC41NTg1OTM3NSBDNzQuMjEzOTIxMiw0LjQ0OTIxODIgNzQuMzA1NzE3MSw0LjM2OTE0MDg4IDc0LjQyMjkwNTIsNC4zMTgzNTkzOCBDNzQuNDA3MjgwMSw0LjA2NDQ1MTg2IDc0LjM2NjI2NDksMy44ODI4MTMwNSA3NC4yOTk4NTgzLDMuNzczNDM3NSBDNzQuMjY0NzAxOSwzLjcxODc0OTczIDc0LjIyMDc1NywzLjY3OTY4NzYyIDc0LjE2ODAyMjQsMy42NTYyNSBDNzQuMTE1Mjg3OCwzLjYzMjgxMjM4IDc0LjA0NzkwNTYsMy42MjEwOTM3NSA3My45NjU4NzQsMy42MjEwOTM3NSBDNzMuNjk2MzQxNCwzLjYyMTA5Mzc1IDczLjQzMjY3MjEsMy44MjQyMTY3MiA3My4xNzQ4NTgzLDQuMjMwNDY4NzUgQzcyLjkzNjU3NTksNC41OTc2NTgwOSA3Mi43NDEyNjUzLDUuMDUwNzc4NTUgNzIuNTg4OTIwOCw1LjU4OTg0Mzc1IEM3Mi40NDA0ODI2LDYuMTE3MTkwMTQgNzIuMzY2MjY0Niw2LjU4NTkzNTQ1IDcyLjM2NjI2NDYsNi45OTYwOTM3NSBDNzIuMzY2MjY0Niw3LjE5NTMxMzUgNzIuMzc3MDA2Nyw3LjM1NzQyMTI1IDcyLjM5ODQ5MTEsNy40ODI0MjE4OCBDNzIuNDE5OTc1Niw3LjYwNzQyMjUgNzIuNDU2MTA4MSw3LjcwNTA3Nzc3IDcyLjUwNjg4OTYsNy43NzUzOTA2MiBDNzIuNTUzNzY0OCw3Ljg0NTcwMzQ4IDcyLjYxNDMxMTEsNy44OTU1MDc2NyA3Mi42ODg1MzAyLDcuOTI0ODA0NjkgQzcyLjc2Mjc0OTMsNy45NTQxMDE3MSA3Mi44NjA0MDQ2LDcuOTY4NzUgNzIuOTgxNDk5LDcuOTY4NzUgWiBNNzguNjc1MTA2OSwyLjM0OTYwOTM4IEM3OC41NDYyLDIuMzQ5NjA5MzggNzguNDIzMTU0NCwyLjMyNTE5NTU2IDc4LjMwNTk2NjMsMi4yNzYzNjcxOSBDNzguMTg4Nzc4MiwyLjIyNzUzODgyIDc4LjA4NzIxNjcsMi4xNjAxNTY2OCA3OC4wMDEyNzg4LDIuMDc0MjE4NzUgQzc3LjkxNTM0MDksMS45OTIxODcwOSA3Ny44NDc5NTg3LDEuODkyNTc4NzEgNzcuNzk5MTMwNCwxLjc3NTM5MDYyIEM3Ny43NTAzMDIsMS42NTgyMDI1NCA3Ny43MjU4ODgyLDEuNTM1MTU2ODkgNzcuNzI1ODg4MiwxLjQwNjI1IEM3Ny43MjU4ODgyLDEuMjc3MzQzMTEgNzcuNzUwMzAyLDEuMTU0Mjk3NDYgNzcuNzk5MTMwNCwxLjAzNzEwOTM4IEM3Ny44NDc5NTg3LDAuOTE5OTIxMjg5IDc3LjkxNTM0MDksMC44MTY0MDY2OTkgNzguMDAxMjc4OCwwLjcyNjU2MjUgQzc4LjA4NzIxNjcsMC42MzY3MTgzMDEgNzguMTg4Nzc4MiwwLjU2NzM4MzA1NyA3OC4zMDU5NjYzLDAuNTE4NTU0Njg4IEM3OC40MjMxNTQ0LDAuNDY5NzI2MzE4IDc4LjU0NjIsMC40NDUzMTI1IDc4LjY3NTEwNjksMC40NDUzMTI1IEM3OC44MDQwMTM4LDAuNDQ1MzEyNSA3OC45MjcwNTk1LDAuNDY5NzI2MzE4IDc5LjA0NDI0NzYsMC41MTg1NTQ2ODggQzc5LjE2MTQzNTcsMC41NjczODMwNTcgNzkuMjY0OTUwMiwwLjYzNjcxODMwMSA3OS4zNTQ3OTQ0LDAuNzI2NTYyNSBDNzkuNDQ0NjM4NiwwLjgxNjQwNjY5OSA3OS41MTM5NzM5LDAuOTE5OTIxMjg5IDc5LjU2MjgwMjMsMS4wMzcxMDkzOCBDNzkuNjExNjMwNiwxLjE1NDI5NzQ2IDc5LjYzNjA0NDQsMS4yNzczNDMxMSA3OS42MzYwNDQ0LDEuNDA2MjUgQzc5LjYzNjA0NDQsMS41MzUxNTY4OSA3OS42MTE2MzA2LDEuNjU4MjAyNTQgNzkuNTYyODAyMywxLjc3NTM5MDYyIEM3OS41MTM5NzM5LDEuODkyNTc4NzEgNzkuNDQ0NjM4NiwxLjk5MjE4NzA5IDc5LjM1NDc5NDQsMi4wNzQyMTg3NSBDNzkuMjY0OTUwMiwyLjE2MDE1NjY4IDc5LjE2MTQzNTcsMi4yMjc1Mzg4MiA3OS4wNDQyNDc2LDIuMjc2MzY3MTkgQzc4LjkyNzA1OTUsMi4zMjUxOTU1NiA3OC44MDQwMTM4LDIuMzQ5NjA5MzggNzguNjc1MTA2OSwyLjM0OTYwOTM4IFogTTc3Ljg2MDY1MzgsOS4wNzAzMTI1IEM3Ny40Nzc4Mzk0LDkuMDcwMzEyNSA3Ny4xNzUxMDgxLDguOTU3MDMyMzggNzYuOTUyNDUwNyw4LjczMDQ2ODc1IEM3Ni43MDI0NDk0LDguNDgwNDY3NSA3Ni41Nzc0NTA3LDguMTE1MjM2NzggNzYuNTc3NDUwNyw3LjYzNDc2NTYyIEM3Ni41Nzc0NTA3LDcuNDA4MjAxOTkgNzYuNjA4NzAwNCw3LjE0NjQ4NTg2IDc2LjY3MTIwMDcsNi44NDk2MDkzOCBMNzcuNDg1NjUzOCwzIEw3OS4yMTQxNjk0LDMgTDc4LjM1Mjg0MTMsNy4wNzgxMjUgQzc4LjMyMTU5MTIsNy4xNzk2ODgwMSA3OC4zMDU5NjYzLDcuMzA4NTkyOTcgNzguMzA1OTY2Myw3LjQ2NDg0Mzc1IEM3OC4zMDU5NjYzLDcuNjI4OTA3MDcgNzguMzQ0MDUxOSw3Ljc0NDE0MDI5IDc4LjQyMDIyNDEsNy44MTA1NDY4OCBDNzguNDk2Mzk2NCw3Ljg3Njk1MzQ2IDc4LjYyMDQxODYsNy45MTAxNTYyNSA3OC43OTIyOTQ0LDcuOTEwMTU2MjUgQzc4LjkwOTQ4MjUsNy45MTAxNTYyNSA3OS4wMjM3MzkyLDcuODgzNzg5MzMgNzkuMTM1MDY3OSw3LjgzMTA1NDY5IEM3OS4yNDYzOTY2LDcuNzc4MzIwMDUgNzkuMzQ4OTM0Niw3LjcwNTA3ODU5IDc5LjQ0MjY4NTEsNy42MTEzMjgxMiBDNzkuNjM0MDkyMyw3LjQxOTkyMDkyIDc5Ljc3ODYyMjEsNy4xNjYwMTcyMSA3OS44NzYyNzg4LDYuODQ5NjA5MzggTDgwLjM4MDE4NTEsNi44NDk2MDkzOCBDODAuMTY1MzQwMiw3LjQ1NTA4MTE1IDc5Ljg5NTgxMTcsNy45Mzc0OTgyIDc5LjU3MTU5MTMsOC4yOTY4NzUgQzc5LjI5ODE1MjUsOC41ODk4NDUyMSA3OC45ODk1NjE4LDguODAwNzgwNjEgNzguNjQ1ODEwMSw4LjkyOTY4NzUgQzc4LjM5NTgwODgsOS4wMjM0Mzc5NyA3OC4xMzQwOTI3LDkuMDcwMzEyNSA3Ny44NjA2NTM4LDkuMDcwMzEyNSBaIE04NC44NjA5MDI0LDkuMDcwMzEyNSBDODQuMzY0ODA2Miw5LjA3MDMxMjUgODMuOTk3NjIyNCw4LjkyOTY4ODkxIDgzLjc1OTMzOTksOC42NDg0Mzc1IEM4My41NTIzMDc2LDguNDA2MjQ4NzkgODMuNDQ4NzkzMSw4LjA5NTcwNTAyIDgzLjQ0ODc5MzEsNy43MTY3OTY4OCBDODMuNDQ4NzkzMSw3LjUzNzEwODQ4IDgzLjQ3MTI1MzgsNy4zMjgxMjYxOSA4My41MTYxNzU5LDcuMDg5ODQzNzUgQzgzLjU2MTA5OCw2Ljg1MTU2MTMxIDgzLjYyODQ4MDEsNi41NDQ5MjM3NSA4My43MTgzMjQzLDYuMTY5OTIxODggQzgzLjgwODE2ODUsNS43ODcxMDc0NiA4My44NzU1NTA2LDUuNDgxNDQ2NDYgODMuOTIwNDcyNyw1LjI1MjkyOTY5IEM4My45NjUzOTQ4LDUuMDI0NDEyOTIgODMuOTg3ODU1Niw0LjgyNjE3MjcxIDgzLjk4Nzg1NTYsNC42NTgyMDMxMiBDODMuOTg3ODU1Niw0LjI0ODA0NDgyIDgzLjg0MzMyNTcsNC4wNDI5Njg3NSA4My41NTQyNjE4LDQuMDQyOTY4NzUgQzgzLjM1MTEzNTgsNC4wNDI5Njg3NSA4My4xNjM2Mzc3LDQuMTUwMzg5NTUgODIuOTkxNzYxOCw0LjM2NTIzNDM4IEM4Mi44NDcyMjk4LDQuNTQ4ODI5MDQgODIuNzIyMjMxMSw0LjgxMDU0NTE4IDgyLjYxNjc2MTgsNS4xNTAzOTA2MiBMODEuODAyMzA4Nyw5IEw4MC4wNzM3OTMxLDkgTDgxLjM0NTI3NzQsMyBMODMuMDczNzkzMSwzIEw4Mi45NDQ4ODY4LDMuNjIxMDkzNzUgQzgzLjE3OTI2MywzLjM1OTM3MzY5IDgzLjQzMTIxMzYsMy4xNzU3ODE3OCA4My43MDA3NDYyLDMuMDcwMzEyNSBDODMuODk5OTY1OSwyLjk5MjE4NzExIDg0LjExNDgwNzUsMi45NTMxMjUgODQuMzQ1Mjc3NCwyLjk1MzEyNSBDODQuNzUxNTI5NSwyLjk1MzEyNSA4NS4wNzE4Mzg4LDMuMDU4NTkyNyA4NS4zMDYyMTQ5LDMuMjY5NTMxMjUgQzg1LjU1NjIxNjIsMy41MDAwMDExNSA4NS42ODEyMTQ5LDMuODQ1NzAwODIgODUuNjgxMjE0OSw0LjMwNjY0MDYyIEM4NS42ODEyMTQ5LDQuNTgzOTg1NzYgODUuNjMwNDM0Miw0Ljk0NTMxMDI3IDg1LjUyODg3MTIsNS4zOTA2MjUgQzg1LjUwMTUyNzMsNS41MTk1MzE4OSA4NS40NTY2MDU5LDUuNzEyODg5MzQgODUuMzk0MTA1Niw1Ljk3MDcwMzEyIEM4NS4yODA4MjM3LDYuNDA0Mjk5MDQgODUuMTk4NzkzMyw2Ljc0OTk5ODcxIDg1LjE0ODAxMTgsNy4wMDc4MTI1IEM4NS4xMTY3NjE2LDcuMTcxODc1ODIgODUuMTAxMTM2OCw3LjMwNDY4Njk5IDg1LjEwMTEzNjgsNy40MDYyNSBDODUuMTAxMTM2OCw3LjU2NjQwNzA1IDg1LjEzNzI2OTMsNy42OTA0MjkyNSA4NS4yMDk1MzUyLDcuNzc4MzIwMzEgQzg1LjI4MTgwMTIsNy44NjYyMTEzOCA4NS40MDU4MjM0LDcuOTEwMTU2MjUgODUuNTgxNjA1Niw3LjkxMDE1NjI1IEM4NS44MTk4ODgsNy45MTAxNTYyNSA4Ni4wMjEwNTc5LDcuODEyNTAwOTggODYuMTg1MTIxMiw3LjYxNzE4NzUgQzg2LjMxMDEyMTgsNy40Njg3NDkyNiA4Ni40NDQ4ODYxLDcuMjEyODkyNDQgODYuNTg5NDE4MSw2Ljg0OTYwOTM4IEw4Ny4wOTMzMjQzLDYuODQ5NjA5MzggQzg2Ljc5NjQ0NzgsNy43Mjg1MjAwMiA4Ni40MjE0NTE2LDguMzQzNzQ4MjQgODUuOTY4MzI0Myw4LjY5NTMxMjUgQzg1LjY0ODAxMDIsOC45NDUzMTM3NSA4NS4yNzg4NzMzLDkuMDcwMzEyNSA4NC44NjA5MDI0LDkuMDcwMzEyNSBaIE04OC40MzM0MTY3LDkuMDcwMzEyNSBDODguMDUwNjAyMyw5LjA3MDMxMjUgODcuNzQ3ODcwOSw4Ljk1NzAzMjM4IDg3LjUyNTIxMzUsOC43MzA0Njg3NSBDODcuMjc1MjEyMyw4LjQ4MDQ2NzUgODcuMTUwMjEzNSw4LjExNTIzNjc4IDg3LjE1MDIxMzUsNy42MzQ3NjU2MiBDODcuMTUwMjEzNSw3LjQwODIwMTk5IDg3LjE4MTQ2MzIsNy4xNDY0ODU4NiA4Ny4yNDM5NjM1LDYuODQ5NjA5MzggTDg3Ljk2NDY2NjcsMy40ODA0Njg3NSBMODcuNTY2MjI5MiwzLjQ4MDQ2ODc1IEw4Ny42NjU4Mzg1LDMgTDg4LjA1ODQxNjcsMyBMODguNDIxNjk3OSwxLjM0MTc5Njg4IEw5MC4xOTcwODg1LDEuMTAxNTYyNSBMODkuNzg2OTMyMywzIEw5MC41MDc2MzU0LDMgTDkwLjQxMzg4NTQsMy40ODA0Njg3NSBMODkuNjkzMTgyMywzLjQ4MDQ2ODc1IEw4OC45MjU2MDQyLDcuMDc4MTI1IEM4OC44OTQzNTQsNy4xNzk2ODgwMSA4OC44Nzg3MjkyLDcuMzA4NTkyOTcgODguODc4NzI5Miw3LjQ2NDg0Mzc1IEM4OC44Nzg3MjkyLDcuNjI4OTA3MDcgODguOTE2ODE0Nyw3Ljc0NDE0MDI5IDg4Ljk5Mjk4Nyw3LjgxMDU0Njg4IEM4OS4wNjkxNTkyLDcuODc2OTUzNDYgODkuMTkzMTgxNCw3LjkxMDE1NjI1IDg5LjM2NTA1NzMsNy45MTAxNTYyNSBDODkuNDgyMjQ1NCw3LjkxMDE1NjI1IDg5LjU5NjUwMiw3Ljg4Mzc4OTMzIDg5LjcwNzgzMDcsNy44MzEwNTQ2OSBDODkuODE5MTU5NCw3Ljc3ODMyMDA1IDg5LjkyMTY5NzQsNy43MDUwNzg1OSA5MC4wMTU0NDc5LDcuNjExMzI4MTIgQzkwLjIwNjg1NTEsNy40MTk5MjA5MiA5MC4zNTEzODQ5LDcuMTY2MDE3MjEgOTAuNDQ5MDQxNyw2Ljg0OTYwOTM4IEw5MC45NTI5NDc5LDYuODQ5NjA5MzggQzkwLjczODEwMzEsNy40NTUwODExNSA5MC40Njg1NzQ1LDcuOTM3NDk4MiA5MC4xNDQzNTQyLDguMjk2ODc1IEM4OS44NzA5MTUzLDguNTg5ODQ1MjEgODkuNTYyMzI0Niw4LjgwMDc4MDYxIDg5LjIxODU3MjksOC45Mjk2ODc1IEM4OC45Njg1NzE3LDkuMDIzNDM3OTcgODguNzA2ODU1NSw5LjA3MDMxMjUgODguNDMzNDE2Nyw5LjA3MDMxMjUgWiIgaWQ9InBhdGgtMyI+PC9wYXRoPgogICAgICAgIDxmaWx0ZXIgeD0iLTYuNiUiIHk9Ii0xNi43JSIgd2lkdGg9IjEwOC44JSIgaGVpZ2h0PSIxNjYuNyUiIGZpbHRlclVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgaWQ9ImZpbHRlci00Ij4KICAgICAgICAgICAgPGZlT2Zmc2V0IGR4PSItMiIgZHk9IjIiIGluPSJTb3VyY2VBbHBoYSIgcmVzdWx0PSJzaGFkb3dPZmZzZXRPdXRlcjEiPjwvZmVPZmZzZXQ+CiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjEiIGluPSJzaGFkb3dPZmZzZXRPdXRlcjEiIHJlc3VsdD0ic2hhZG93Qmx1ck91dGVyMSI+PC9mZUdhdXNzaWFuQmx1cj4KICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdmFsdWVzPSIwIDAgMCAwIDAgICAwIDAgMCAwIDAgICAwIDAgMCAwIDAgIDAgMCAwIDAuMjE1OTE5Mzg0IDAiIHR5cGU9Im1hdHJpeCIgaW49InNoYWRvd0JsdXJPdXRlcjEiPjwvZmVDb2xvck1hdHJpeD4KICAgICAgICA8L2ZpbHRlcj4KICAgIDwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJHcm91cC0yIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0LjAwMDAwMCwgMC4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMy4wMDAwMDAsIDcuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0iRmlsbC0yOCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzQuMDAwMDAwLCAyNS4wMDAwMDApIHNjYWxlKDEsIC0xKSByb3RhdGUoLTcxLjAwMDAwMCkgdHJhbnNsYXRlKC0zNC4wMDAwMDAsIC0yNS4wMDAwMDApICI+CiAgICAgICAgICAgICAgICAgICAgPHVzZSBmaWxsPSJibGFjayIgZmlsbC1vcGFjaXR5PSIxIiBmaWx0ZXI9InVybCgjZmlsdGVyLTIpIiB4bGluazpocmVmPSIjcGF0aC0xIj48L3VzZT4KICAgICAgICAgICAgICAgICAgICA8dXNlIGZpbGw9IiNGRkZGRkYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgeGxpbms6aHJlZj0iI3BhdGgtMSI+PC91c2U+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjEuOTMxMTg1NCw5LjY3ODA5NDQ2IEMyMi4yNTI1NDA4LDkuNDM1MzQ3NTkgMjIuNTY4OTQyNyw5LjE4Njk5ODg2IDIyLjg5NzcyODMsOC45NTM1ODg0IEMyMy4yMjg5OTA2LDguNzE4OTMzMDkgMjMuNTYyMTEwNCw4LjQ4NzM4OTkxIDIzLjg5MzM3MjcsOC4yNTI3MzQ2IEMyNC41NTgzNzQsNy43Nzk2ODk0MSAyNS4yNDM4MDgyLDcuMzM0NjUzNDYgMjUuOTEzMTQzOCw2Ljg2NzgzMjU1IEMyNi41NzM4MTA4LDYuNDA4NDgwNzcgMjcuMjQ5MzM4Miw1Ljk3MTUzNjM5IDI3LjkxMDYyNDQsNS41MTM0Mjk0NiBDMjguMjY3ODkyMyw1LjI2Njk0ODAyIDI4LjYyMDgyNiw1LjAxNDg2NDcyIDI4Ljk3Mzc1OTYsNC43NjI3ODE0MyBDMjkuMjkxMzk5OSw0LjUzNDk3MjgyIDI5LjYyMTQyMzgsNC4zMjUyMTQ2MiAyOS45NDIxNiw0LjEwMzAwNzg3IEMzMC4yODc2NjM0LDMuODYzMzczMTMgMzAuNjIzMjYsMy42MTE5MTIyNiAzMC45NjYyODY3LDMuMzY3OTIwNTMgQzMxLjMxODYwMTIsMy4xMTY0NTk2NyAzMS42NzUyNDk5LDIuODY3NDg4NTEgMzIuMDI2OTQ1MiwyLjYxNDE2MDM2IEMzMi42OTUwNDI0LDIuMTMyNDAxMTcgMzMuMzYyNTIwNCwxLjY0OTM5NzEzIDM0LjAzMDYxNzYsMS4xNjgyNjAzNyBDMzQuMzU4MTY0OCwwLjkzMjM2MDIwNSAzNC42OTQ5OTk3LDAuNzEwMTUzNDQ4IDM1LjAyNjg4MTIsMC40Nzk4NTUxMyBDMzUuMzQwODA2NCwwLjI2MTM4Mjk0MSAzNS42NDM1ODYzLDAuMDI2MTA1MTk5MSAzNS45NTkzNjksLTAuMTg5ODc3Mjc4IEMzNi4zNjI0NTY0LC0wLjQ2NDk5MDQwNSAzNi43NzIzNTQ4LC0wLjcyOTUyMjI1NyAzNy4xNzExMDc5LC0xLjAwOTYxNDgxIEMzNy41ODg0MzY0LC0xLjMwNDAyMzIgMzguMDExMzM3NiwtMS41OTAzNDAwMyAzOC40MzMwMDA0LC0xLjg3ODUyNDE0IEMzOC42NTU5MDU5LC0yLjAzMTY0MTQgMzguODc4MTkyMiwtMi4xODcyNDgzNyAzOS4xMDI5NTUyLC0yLjMzODQ5ODM1IEMzOS4xMDI5NTUyLC0yLjMzMzUxODkzIDM5LjEwMjMzNiwtMi4zMjg1Mzk1IDM5LjEwMTcxNjgsLTIuMzIyOTM3NjUgQzM5LjA1NDAzOTgsLTEuNzU1MjgzNDIgMzkuMDU1ODk3NCwtMS4xODM4OTQ2MiAzOS4wNDE2NTYyLC0wLjYxNDM3MzA5OCBDMzguOTY2MTE2LDAuOTgyMTU0NDM2IDM4LjgyMjQ2NTgsMi41NzY4MTQ2OSAzOC43NzQ3ODg4LDQuMTc1MjA5NSBDMzguNzUxMjU5OSw0Ljk3MDA0OTkyIDM4Ljc1MzExNzQsNS43NjgwMDI0NyAzOC44MTU2NTQ4LDYuNTYwOTc1NiBDMzguODgwMDQ5Nyw3LjM3Njk3ODU2IDM4Ljk1NDk3MDcsOC4xOTI5ODE1MiAzOS4wMjM2OTk5LDkuMDA4OTg0NDggQzM5LjE1NTU4NTYsMTAuNTczNzY4MiAzOS4yOTE4MDU2LDEyLjEzODU1MTkgMzkuNDcyNjA2NywxMy42OTc3MzM4IEMzOS41MjA5MDI5LDE0LjExMjg5MzIgMzkuNTY3OTYwNywxNC41MjgwNTI2IDM5LjYyMjQ0ODcsMTQuOTQyNTg5NSBDMzkuNjczODQwOCwxNS4zMzIyMjk0IDM5Ljc0NjI4NTEsMTUuNzE5Mzc5NSAzOS44MTA2OCwxNi4xMDY1Mjk3IEMzOS45MzUxMzU2LDE2Ljg1NDA2NTYgNDAuMDU1MjU2OCwxNy41OTk3MzQyIDQwLjIxOTk1OTIsMTguMzM5ODAxIEM0MC4zNDkzNjgyLDE4LjkxODY1ODkgNDAuNDgxODczMSwxOS40OTYyNzIgNDAuNjMxMDk1OSwyMC4wNzA3NzI5IEM0MC42NTgzMzk5LDIwLjE3NzIwODEgNDAuNjg4MDYwNywyMC4yODM2NDMzIDQwLjcxNjU0MywyMC4zOTAwNzg0IEM0MC41ODc3NTMyLDIwLjM2NjQyNjIgNDAuNDU4OTYzNCwyMC4zNDQwMTg4IDQwLjMzMDE3MzYsMjAuMzE4NDk5MiBDMzkuNzk4OTE1NiwyMC4yMTI2ODY1IDM5LjI3Mzg0OTQsMjAuMDgwNzMxOCAzOC43NDU2ODczLDE5Ljk2MTg0OCBDMzguMjM2MTAwNiwxOS44NDczMjEzIDM3LjcyNTg5NDgsMTkuNzI0MDgwNiAzNy4yMjA2NDI0LDE5LjU5MDI1ODYgQzM2LjgxMDEyNDksMTkuNDgwNzExMyAzNi4zOTcxMzA2LDE5LjQzNTI3NCAzNS45Nzg1NjM3LDE5LjQxNTk3ODggQzM1Ljg4ODc4MjMsMTkuMzY2MTg0NSAzNS43OTE1NzA3LDE5LjMzMDcwNjIgMzUuNjg5NDA1NywxOS4zMTIwMzMzIEMzNS42MzYxNTYxLDE5LjMwMjY5NjkgMzUuNTgxNjY4MSwxOS4yOTgzMzk5IDM1LjUyNzc5OTMsMTkuMjk4MzM5OSBDMzUuMzM1MjMzNywxOS4yOTgzMzk5IDM1LjE0NDUyNTcsMTkuMzU3NDcwNiAzNC45ODUzOTYsMTkuNDY5NTA3NiBDMzQuNzk0MDY4OCwxOS42MDM5NTIgMzQuNjIxMzE3MSwxOS44NDA0NzQ2IDM0LjU5NzE2OSwyMC4wODEzNTQyIEMzNC41MDY3Njg0LDIwLjk4MzI1MjIgMzQuNDc1ODA5NCwyMS44OTI2MTkzIDM0LjUxMjM0MTEsMjIuNzk4MjUxOSBDMzQuNTIwMzkwNCwyMy4wMDQ4OTggMzQuNTMzMzkzMywyMy4yMTA5MjE2IDM0LjU1MTM0OTUsMjMuNDE2OTQ1MiBDMzQuNDM2ODAwOSwyMy41OTQzMzcyIDM0LjM4MjkzMjEsMjMuODA5MDc0OCAzNC40MDI3NDU5LDI0LjAyMDcwMDMgQzM0LjQyNTAzNjQsMjQuMjYyMjAyMyAzNC41NDIwNjE4LDI0LjQ4ODE0MzYgMzQuNzI0MTAxMywyNC42NDc0ODUyIEMzNC43NjkzMDE1LDI0Ljg3NDA0ODkgMzQuODIxOTMyLDI1LjA5OTM2NzggMzQuODgzMjMxLDI1LjMyMjgxOTQgQzM0Ljk5NTMwMjksMjUuNzI3Mzk3NiAzNS4xMTE3MDkxLDI2LjEyOTQ4NiAzNS4yNjk2MDA1LDI2LjUxOTEyNTggQzM1LjQ0OTc4MjQsMjYuOTYyOTE2OSAzNS42NDY2ODIyLDI3LjQwMTEwNjIgMzUuODczMzAyNywyNy44MjM3MzQ3IEMzNi4yNjc3MjE2LDI4LjU1Njk1NDcgMzYuNzE4NDg1OSwyOS4yNDM0OTI3IDM3LjI2Mzk4NTEsMjkuODcyMTQ0OSBDMzcuNjAxNDM5MiwzMC4yNjA1Mzk5IDM3Ljk1OTMyNjMsMzAuNjQ1ODIyNyAzOC4zNzI5Mzk4LDMwLjk1NDU0NyBDMzguODI3NDE5MywzMS4yOTI1MjUzIDM5LjMwMTcxMjUsMzEuNjAwMDA0NyAzOS43ODU5MTI3LDMxLjg5Mzc5MDcgQzQwLjYwNTA5MDMsMzIuMzkzNjAwMyA0MS41MjgyOTA0LDMyLjY5MzYxMDUgNDIuNDM5MTA2OSwzMi45ODE3OTQ2IEM0Mi41MjE0NTgxLDMzLjAwOTgwMzkgNDIuNjAxOTUxNywzMy4wMzkwNTggNDIuNjgxMjA3LDMzLjA3MjY2OTEgQzQyLjY4MTgyNjIsMzMuMDcyNjY5MSA0Mi42ODE4MjYyLDMzLjA3MzI5MTUgNDIuNjgxODI2MiwzMy4wNzMyOTE1IEM0Mi43NDQ5ODI3LDMzLjQ3NDc1NzUgNDIuNzMxOTc5OSwzMy44OTQyNzM5IDQyLjc0Njg0MDMsMzQuMjk3NjA3MiBDNDIuNzYyMzE5OCwzNC43MTQwMTE0IDQyLjc4NzA4NzEsMzUuMTI5NzkzMyA0Mi44MTI0NzM1LDM1LjU0NjgxOTkgQzQyLjg2MzI0NjQsMzYuMzY2NTU3NSA0Mi45NDI1MDE3LDM3LjE4NDQyNzcgNDMuMDAxMzI0LDM4LjAwNDc4NzcgQzQzLjExNzExMSwzOS42NDE3NzMgNDMuMTQxMjU5MSw0MS4yODA2MjU2IDQzLjEzMzgyODksNDIuOTIxMzQ1NiBDNDMuMTI2Mzk4Nyw0NC41NDE1MjU0IDQzLjA5ODUzNTUsNDYuMTU5ODM3OSA0My4wNTE0Nzc3LDQ3Ljc3ODc3MjggQzQyLjc1MzAzMjEsNDcuNzY2MzI0MiA0Mi40NTIxMDk3LDQ3Ljc2NjMyNDIgNDIuMTU0OTAyNCw0Ny43NjI1ODk3IEM0MS43ODQ2MzE3LDQ3Ljc1Njk4NzggNDEuNDE0MzYxLDQ3Ljc0OTUxODcgNDEuMDQ0MDkwMiw0Ny43MzU4MjUzIEM0MC4xOTcwNDk1LDQ3LjY5MzUwMDIgMzkuMzYxNzczMiw0Ny42MDIwMDMzIDM4LjUyNjQ5NjksNDcuNDUxMzc1NyBDMzcuNzA5MTc2OSw0Ny4zMDI2MTU1IDM2Ljg5NjgxMDMsNDcuMTAwOTQ4OCAzNi4xMDI0LDQ2Ljg1NjMzNDcgQzM1LjE1ODc2NjksNDYuNTE2NDg5IDM0LjIzMjQ3MDksNDYuMTM0OTQwNyAzMy4zMDkyNzA4LDQ1Ljc0MzQzMzYgQzMyLjgzOTkzMSw0NS41NDQ4NzkxIDMyLjM3OTg3ODksNDUuMzIxNDI3NSAzMS45MzE1OTEyLDQ1LjA3OTkyNTUgQzMxLjUyNjY0NjMsNDQuODYyMDc1NyAzMS4xMzcxODA5LDQ0LjYyMjQ0MSAzMC43NTAxOTIzLDQ0LjM3NTMzNzEgQzI5Ljk0Mjc3OTIsNDMuODEzMjg0NyAyOS4xNDA5Mzg3LDQzLjIzNDQyNjggMjguNDEzNCw0Mi41Njc4MDY1IEMyOC4wMjU3OTIyLDQyLjIxMjQwMDIgMjcuNjMxMzczNCw0MS44NjAxMDYgMjcuMjU5MjQ1MSw0MS40ODc4OTQxIEMyNi45MTU1OTkyLDQxLjE0NDkzNjQgMjYuNTc5MzgzNSw0MC43OTg4NjY1IDI2LjI0Njg4MjgsNDAuNDQ1MzI3NCBDMjYuMTA1NzA5NCw0MC4yNzc4OTQzIDI1Ljk2NTE1NTEsNDAuMTA5ODM4OCAyNS44MjQ2MDA4LDM5Ljk0MjQwNTcgQzI1LjY3MjkwMTMsMzkuNzYyNTI0IDI1LjUzOTE1OCwzOS41NjM5Njk1IDI1LjM5Nzk4NDUsMzkuMzc0NzUxNCBDMjUuMTMzNTkzOSwzOS4wMjA1OSAyNC44OTc2ODU2LDM4LjY0MjE1MzggMjQuNjYwNTM5LDM4LjI2ODY5NzEgQzI0LjE3MzI0MjksMzcuNTAxODY1OSAyMy43MjE4NTkzLDM2LjcxNTczOTUgMjMuMjgyODU5NCwzNS45MjAyNzY3IEMyMi45MDc2MzUyLDM1LjE4MjY5OTYgMjIuNTQ0MTc1NSwzNC40Mzk1MjA3IDIyLjIzODkxODgsMzMuNjY4MzMyNiBDMjIuMDc3MzEyNCwzMy4yNTg3NzUgMjEuOTA5NTE0MSwzMi44NDYxMDUzIDIxLjc4MzgyMDIsMzIuNDIyODU0NCBDMjEuNjU1NjQ5NSwzMS45ODUyODc2IDIxLjUzNjc2NjYsMzEuNTQ3NzIwOCAyMS40MjM0NTYzLDMxLjEwNTc5NyBDMjEuMjU3NTE1NiwzMC4zMjE1Mzc4IDIxLjEwODkxMiwyOS41MzU0MTE0IDIxLjAzMzk5MSwyOC43MzYyMTQgQzIwLjk1NDczNTcsMjcuODgyODY1MyAyMC44NzExNDYyLDI3LjAyODI3MTkgMjAuODkyMTk4MywyNi4xNzE4MTExIEMyMC45MjYyNTMzLDI1LjU3NDkwMjcgMjAuOTc3NjQ1NCwyNC45NzkyMzkyIDIxLjA0NTEzNjIsMjQuMzg0MTk4MiBDMjEuMDUzODA0OCwyNC4zMDk1MDY4IDIxLjA1NjI4MTUsMjQuMjM3MzA1MiAyMS4wNTI1NjY0LDI0LjE2NTcyNiBDMjEuMDY2ODA3NiwyNC4wMzk5OTU2IDIxLjA4MTA0ODgsMjMuOTEzNjQyNyAyMS4wOTk2MjQyLDIzLjc4NzI4OTggQzIxLjEzODAxMzUsMjMuNTIyNzU4IDIxLjE5NzQ1NSwyMy4yNjEzMzgzIDIxLjI1NTY1ODEsMjMuMDAwNTQxIEMyMS4zNjQ2MzQxLDIyLjUwOTQ0NTQgMjEuNTAyMDkyNCwyMi4wMjUxOTY1IDIxLjY1MTMxNTMsMjEuNTQ0NjgyMiBDMjEuODM0NTkzMSwyMC45NzE0MjYxIDIyLjAyNDA2MjcsMjAuNDAxMjgyMSAyMi4yNDQ0OTE1LDE5Ljg0MDQ3NDYgQzIyLjQ5MTU0NSwxOS4yMTEyIDIyLjc1MjgzOTcsMTguNTg2OTA0OCAyMy4wMzE0NzE2LDE3Ljk3MTMyMzcgQzIzLjI4NzgxMjgsMTcuNDAzNjY5NCAyMy41NjcwNjM4LDE2Ljg1MDk1MzUgMjMuODc1NDE2NCwxNi4zMDk0NDEyIEMyNC4xNjQ1NzQzLDE1LjgwMDkxNzYgMjQuNDc0MTY1MiwxNS4zMDI5NzUzIDI0Ljc4NzQ3MTIsMTQuODA4NzY3NSBDMjQuODI0NjIyMSwxNC43NTA4ODE4IDI0Ljg2MTc3MzEsMTQuNjkyOTk2IDI0Ljg5OTU0MzEsMTQuNjM1MTEwMiBDMjQuOTcxOTg3NCwxNC40NzcwMTM1IDI1LjAwMTA4OSwxNC4zMTE0NDc3IDI0Ljk4NjIyODYsMTQuMTM5MDM1MSBDMjQuOTg1NjA5NCwxNC4xMjkwNzYzIDI0Ljk4MzEzMjcsMTQuMTE5NzM5OSAyNC45ODE4OTQzLDE0LjExMDQwMzUgQzI0Ljk4MzEzMjcsMTQuMDcxMTkwNSAyNC45ODMxMzI3LDE0LjAzMTk3NzUgMjQuOTc5NDE3NiwxMy45OTI3NjQ2IEMyNC45NTUyNjk1LDEzLjczMjU4OTcgMjQuODMwMTk0OCwxMy41MzgzOTIyIDI0LjY1MTI1MTIsMTMuMzU5NzU1NCBDMjQuNDcwNDUwMSwxMy4xODA0OTYyIDI0LjI5MzM2NDEsMTIuOTk3NTAyNCAyNC4xMDIwMzY5LDEyLjgzMDA2OTMgQzIzLjkwODIzMywxMi42NjI2MzYyIDIzLjY5MzM3NjksMTIuNTI2MzI0NSAyMy40OTAyODUzLDEyLjM3MTk2MjQgQzIzLjA4NDcyMTIsMTIuMDY1MTA1NCAyMi42OTMzOTgzLDExLjczNjQ2MzUgMjIuMjgxMDIzMiwxMS40MzgzMjA1IEMyMS44NzU0NTkxLDExLjE0NTE1NyAyMS40NjM3MDMyLDEwLjg1NzU5NTMgMjEuMDc0MjM3OCwxMC41NDIwMjQ0IEMyMS4wMTM1NTgsMTAuNDkzNDc1IDIwLjk1MTYzOTgsMTAuNDQ2NzkyOSAyMC44OTA5NiwxMC4zOTg4NjYgQzIxLjI0NTc1MTIsMTAuMTcwNDM0OSAyMS41OTQ5Njk3LDkuOTMxNDIyNjIgMjEuOTMxMTg1NCw5LjY3ODA5NDQ2IFogTTQyLjEyMzk0MzMsLTAuNjAwNjc5Njg1IEM0Mi40ODk4Nzk4LC0wLjI1NDYwOTc3OSA0Mi44NTM5NTg3LDAuMDg4OTcwNDE1OCA0My4xOTg4NDMsMC40NTU1ODA0NDIgQzQzLjIxNjE4MDEsMC42MjM2MzU5NzIgNDMuMjE0MzIyNSwwLjc5MjkzNjM1OCA0My4yMTYxODAxLDAuOTYyODU5MTcxIEM0My4yMTc0MTg0LDEuMTU1ODExODIgNDMuMjE5ODk1MiwxLjM0ODE0MjAzIDQzLjIyMTc1MjcsMS41NDA0NzIyNSBDNDMuMjI2NzA2MiwxLjkzMzIyNDI1IDQzLjIzMjg5OCwyLjMyNTM1MzgyIDQzLjI0MDMyODIsMi43MTc0ODMzOSBDNDMuMjU3MDQ2MSwzLjU1NDAyNjQ3IDQzLjI3MTkwNjQsNC4zODk5NDcxMiA0My4yNzk5NTU4LDUuMjI3MTEyNjMgQzQzLjI5NzI5MjksNi45MTQ1MTQ2NCA0My4zMTg5NjQzLDguNjA2ODk2MDcgNDMuNDQxNTYyMywxMC4yOTExODU5IEM0My41NjcyNTYyLDEyLjAwNjU5NzIgNDMuODE2MTY3MywxMy43MTM5MTY5IDQ0LjA0NDAyNjIsMTUuNDE3NTAyIEM0NC4xNDkyODcxLDE2LjE5OTg5MzkgNDQuMjQ4OTc1NCwxNi45ODIyODU3IDQ0LjM0MTIzMzUsMTcuNzY1OTIyNCBDNDQuNDQwMzAyNiwxOC42MTc0MDM4IDQ0LjUzMzc5OSwxOS40Njc2NDAzIDQ0LjU3NTI4NDIsMjAuMzI0MTAxMSBDNDQuNjAxMjg5OCwyMC44ODMwNDEzIDQ0LjYwNjg2MjUsMjEuNDQwNzM2NyA0NC42MDI1MjgyLDIyLjAwMDI5OTQgQzQ0LjU5OTQzMjMsMjIuMDczNzQ1OSA0NC41OTYzMzY0LDIyLjE0NjU2OTkgNDQuNTkyMDAyMSwyMi4yMjAwMTY0IEM0NC41ODAyMzc3LDIyLjIxMzE2OTcgNDQuNTY4NDczMiwyMi4yMDYzMjMgNDQuNTU3MzI3OSwyMi4xOTk0NzYzIEM0NC4yOTE2OTg5LDIyLjA0NTExNDIgNDQuMDI3MzA4MywyMS44ODg4ODQ4IDQzLjc2MjI5ODUsMjEuNzMzOTAwMiBDNDMuNDUzOTQ1OSwyMS41NTMzOTYxIDQzLjE0NjgzMTcsMjEuMzcxMDI0OCA0Mi44Mzk3MTc1LDIxLjE4OTI3NTggQzQyLjgzMTA0OSwyMS4xMzEzOSA0Mi44MjA1MjI5LDIxLjA3MzUwNDIgNDIuODA4MTM5MywyMS4wMTQzNzM2IEM0Mi43Mzg3OTA5LDIwLjY4NTEwOTIgNDIuNjUzOTYzLDIwLjM1ODMzNDYgNDIuNTY2MDM5MiwyMC4wMzM0MjcyIEM0Mi40MDg3NjcsMTkuNDUwMjEyMyA0Mi4yNjA3ODI1LDE4Ljg2NTc1MjUgNDIuMTI0NTYyNSwxOC4yNzgxODA2IEM0MS45Njc5MDk1LDE3LjU3NDIxNDcgNDEuODQxNTk2NCwxNi44NjY1MTQxIDQxLjcyNTgwOTQsMTYuMTUzODM0MiBDNDEuNjYzODkxMiwxNS43NzUzOTgxIDQxLjU5MzkyMzcsMTUuMzk2OTYxOSA0MS41MzY5NTksMTUuMDE2NjU4NSBDNDEuNDczMTgzMiwxNC41OTQ2NTI0IDQxLjQyNjc0NDYsMTQuMTY5NTM0MSA0MS4zNzY1OTA5LDEzLjc0NTAzODMgQzQxLjE5NTc4OTgsMTIuMTg4MzQ2MSA0MS4wNTg5NTA2LDEwLjYyNzkxOTQgNDAuOTIyMTExNCw5LjA2Njg3MDI4IEM0MC44NDQwOTQ1LDguMTcxODE4OTcgNDAuNzY0MjIsNy4yNzczOTAxIDQwLjY5MzYzMzMsNi4zODE3MTYzNyBDNDAuNjI2NzYxNyw1LjUyOTYxMjU5IDQwLjYzMzU3MjcsNC42NzUwMTkxIDQwLjY1NzcyMDgsMy44MjE2NzA0NiBDNDAuNjk4NTg2OCwyLjk1NTg3MzI3IDQwLjc2MTEyNDEsMi4wOTEzMjA5MyA0MC44MTI1MTYyLDEuMjI2MTQ2MTcgQzQwLjg0MTYxNzgsMC43NTA2MTEyNjEgNDAuODY2Mzg1LDAuMjc0NDUzOTI3IDQwLjg5NDg2NzQsLTAuMjAyMzI1ODM2IEM0MC45MjM5Njg5LC0wLjY5MDMwOTMwMSA0MC45MjQ1ODgxLC0xLjE3ODkxNTE5IDQwLjkzODgyOTMsLTEuNjY4MTQzNTEgQzQwLjk0MTMwNiwtMS43MTIzMzU4OSA0MC45NDU2NDAzLC0xLjc1NjUyODI3IDQwLjk0ODczNjIsLTEuODAwNzIwNjUgQzQxLjMyODkxMzksLTEuMzg5OTE4MjUgNDEuNzE2NTIxNywtMC45ODQ3MTc2OTIgNDIuMTIzOTQzMywtMC42MDA2Nzk2ODUgWiBNNDIuMjg3NDA3MywtMy4xMTUyODgzNSBDNDIuMjcxOTI3OCwtMy4xMzIwOTM5MSA0Mi4yNTY0NDgyLC0zLjE0ODI3NzAzIDQyLjI0MTU4NzksLTMuMTY1MDgyNTggQzQyLjI0MTU4NzksLTMuMTY1NzA1MDEgNDIuMjQwOTY4NywtMy4xNjU3MDUwMSA0Mi4yNDA5Njg3LC0zLjE2NTcwNTAxIEM0Mi4yNTY0NDgyLC0zLjE0ODg5OTQ2IDQyLjI3MTkyNzgsLTMuMTMyMDkzOTEgNDIuMjg3NDA3MywtMy4xMTUyODgzNSBaIE00NS4yNTUxNDU5LDIyLjU4NDEzNjcgQzQ1LjI1MjA0OTksMjIuNTg0MTM2NyA0NS4yNDg5NTQsMjIuNTgzNTE0MyA0NS4yNDU4NTgxLDIyLjU4MzUxNDMgQzQ1LjI0NTg1ODEsMjIuNTgzNTE0MyA0NS4yNDU4NTgxLDIyLjU4MzUxNDMgNDUuMjQ1MjM4OSwyMi41ODM1MTQzIEM0NS4yNDgzMzQ5LDIyLjU4MzUxNDMgNDUuMjUyMDQ5OSwyMi41ODM1MTQzIDQ1LjI1NTE0NTksMjIuNTg0MTM2NyBaIE00MS4wMTQzNjk1LDIzLjIzODMwODQgQzQwLjI2NTE1OTUsMjMuMTgwNDIyNiAzOS41MTQ3MTExLDIzLjEzNDM2MyAzOC43NjQyNjI3LDIzLjA5NzYzOTcgQzM4LjAwNTE0NTgsMjMuMDYwMjk0MSAzNy4yNDY2NDgsMjMuMDE3MzQ2NSAzNi40ODc1MzExLDIyLjk5NzQyODggQzM2LjQ2MTUyNTUsMjIuOTk3NDI4OCAzNi40MzYxMzksMjIuOTk3NDI4OCAzNi40MTAxMzM0LDIyLjk5NjE4NCBDMzYuMzcyMzYzMywyMi40NDg0NDc1IDM2LjM2Njc5MDcsMjEuODk3NTk4OCAzNi4zODQxMjc4LDIxLjM0ODYxNzQgQzM2LjM4NDEyNzgsMjEuMzQ3OTk0OSAzNi4zODQxMjc4LDIxLjM0Nzk5NDkgMzYuMzg0MTI3OCwyMS4zNDczNzI1IEMzNi40MjI1MTcsMjEuMzUzNTk2OCAzNi40NjA5MDYzLDIxLjM1NzMzMTQgMzYuNDk4Njc2NCwyMS4zNjQ4MDA1IEMzNi43Mjk2MzEyLDIxLjQwODk5MjkgMzYuOTU1NjMyNiwyMS40NzQ5NzAyIDM3LjE4NDExMDcsMjEuNTMwMzY2MyBDMzcuNjY5NTQ5MiwyMS42NTExMTczIDM4LjE1NTYwNywyMS43Njc1MTEzIDM4LjY0MjkwMzEsMjEuODc5NTQ4NCBDMzkuMTEyODYyMSwyMS45ODcyMjg0IDM5LjU4MDk2MzYsMjIuMTAzNjIyNCA0MC4wNTQwMTg1LDIyLjE5NTExOTMgQzQwLjQzMTcxOTQsMjIuMjY4NTY1OCA0MC44MDk0MjAzLDIyLjMzMzkyMDcgNDEuMTg3NzQwNCwyMi4zOTkyNzU2IEM0MS4yMTkzMTg3LDIyLjQyMTA2MDYgNDEuMjUxNTE2MSwyMi40NDE2MDA3IDQxLjI4NjE5MDMsMjIuNDYyMTQwOSBDNDEuODIxNzgyNiwyMi43Nzk1NzkxIDQyLjM1OTIzMjQsMjMuMDk1NzcyNSA0Mi44OTYwNjMxLDIzLjQxMTk2NTggQzQyLjI2NzU5MzUsMjMuMzYzNDE2NCA0MS42NDI4MzkxLDIzLjI4NzQ4MDIgNDEuMDE0MzY5NSwyMy4yMzgzMDg0IFogTTQ2LjkwNzc0MjIsMzUuNDA5ODg1OCBDNDYuOTg4ODU1LDM1LjQ2NzE0OTIgNDcuMDY2ODcxOSwzNS41MjQ0MTI1IDQ3LjE0MjQxMjEsMzUuNTg3Mjc3NyBDNDcuMTQ0ODg4OCwzNS41OTQ3NDY5IDQ3LjE0Nzk4NDcsMzUuNjAyMjE2IDQ3LjE1MDQ2MTQsMzUuNjA5Njg1MiBDNDcuMTk2MjgwOSwzNS45NTY5OTk5IDQ3LjE5NDQyMzQsMzYuMzA4MDQ5MiA0Ny4yMDEyMzQ0LDM2LjY1ODQ3NjEgQzQ3LjIwODY2NDUsMzcuMDU2ODMgNDcuMjE3OTUyMywzNy40NTU4MDYzIDQ3LjIzMDMzNTksMzcuODU1NDA1IEM0Ny4yNTUxMDMyLDM4LjY1NzA5MjEgNDcuMzA2NDk1MywzOS40NTc1MzQ0IDQ3LjM0NTUwMzcsNDAuMjU5MjIxNSBDNDcuNDI1OTk3NCw0MS44OTQ5NjIgNDcuNTU1NDA2NCw0My41Mjk0NTc2IDQ3LjYxNjA4NjIsNDUuMTY1ODIwNSBDNDcuNjU4ODA5Nyw0Ni4zNjA4ODIxIDQ3LjY0NTgwNjksNDcuNTU4NDMzMyA0Ny42MDA2MDY2LDQ4Ljc1Mjg3MjQgQzQ3LjU3NTIyMDIsNDkuMjg0NDI1OSA0Ny41NDQ4ODAzLDQ5LjgyMDMzNjMgNDcuNDcxMTk3Niw1MC4zNDgxNTUxIEM0Ny4zNjkwMzI2LDUwLjI4NTI4OTkgNDcuMjY2ODY3Niw1MC4yMjE4MDIzIDQ3LjE2NTk0MSw1MC4xNTcwNjk4IEM0Ni42NDM5NzA3LDQ5LjgwOTEzMjYgNDYuMTMwMDQ5OCw0OS40NTE4NTkgNDUuNjAzNzQ1Miw0OS4xMTA3Njg1IEM0NS4zNjkwNzUzLDQ4Ljk1ODI3MzYgNDUuMTMzMTY3LDQ4LjgwODI2ODUgNDQuODk3ODc3OSw0OC42NTc2NDEgQzQ0LjkwNjU0NjUsNDguNTg4NTUxNSA0NC45MTAyNjE2LDQ4LjUxNzU5NDcgNDQuOTA0MDY5OCw0OC40NDUzOTMxIEM0NC45NjIyNzI4LDQ2LjcxNjkxMDggNDUuMDAxMjgxMyw0NC45ODkwNTEgNDUuMDA5MzMwNyw0My4yNTk5NDYzIEM0NS4wMTMwNDU4LDQyLjQzMjExNzIgNDUuMDI1NDI5NCw0MS42MDM2NjU3IDQ1LjAwODA5MjMsNDAuNzc1MjE0MiBDNDQuOTkwMTM2LDM5LjkzNDMxNDEgNDQuOTU0ODQyNywzOS4wOTI3OTE2IDQ0LjkwNjU0NjUsMzguMjUzMTM2NCBDNDQuODQzMzg5OSwzNy4xNzYzMzYxIDQ0LjczMTMxOCwzNi4xMDMyNzA1IDQ0LjY3MDAxOSwzNS4wMjU4NDc4IEM0NC42NTUxNTg3LDM0Ljc3Mzc2NDUgNDQuNjQzMzk0MiwzNC41MjIzMDM2IDQ0LjYzMjg2ODEsMzQuMjcwMjIwMyBDNDQuNzkxOTk3OCwzNC4zNDc0MDE0IDQ0Ljk1MzYwNDMsMzQuNDE5NjAzIDQ1LjExODMwNjcsMzQuNDg2ODI1MiBDNDUuNzQ0Mjk5NSwzNC43NDEzOTgyIDQ2LjMzNTYxODIsMzUuMDUzODU3IDQ2LjkwNzc0MjIsMzUuNDA5ODg1OCBaIE00Ny4zMzA2NDM0LDUyLjkwMzg0NCBDNDcuMTg2Mzc0LDUyLjk3MTY4ODcgNDcuMDM5NjI3OSw1My4wMzIwNjQyIDQ2Ljg4NzMwOTIsNTMuMDc5OTkxMSBDNDYuNjQ4OTI0Miw1My4xMTU0Njk1IDQ2LjQxMjM5NjcsNTMuMTEyMzU3NCA0Ni4xNjc4MTk5LDUzLjEwODAwMDQgQzQ1LjkyNDQ4MTQsNTMuMTAzNjQzNCA0NS42ODExNDMsNTMuMDk2Nzk2NyA0NS40MzcxODUzLDUzLjA4NzQ2MDMgQzQ0LjkyMzI2NDQsNTMuMDYzMTg1NiA0NC40MDkzNDM1LDUzLjAyNjQ2MjMgNDMuODk3ODk5Myw1Mi45NjY3MDkyIEM0My4yOTkxNTA0LDUyLjg5NjM3NDkgNDIuNzA3ODMxOCw1Mi43OTE4MDcgNDIuMTE2NTEzMiw1Mi42NzQ3OTA2IEM0MS4wNzAwOTU5LDUyLjQ2OTM4OTQgNDAuMDQyMjU0LDUyLjE3NjIyNTggMzkuMDI0OTM4Myw1MS44NTY5MjAzIEMzOC4zNTYyMjE5LDUxLjYzNTk1ODQgMzcuNjk3NDEyNCw1MS4zOTI1ODkxIDM3LjA0NjY1MjMsNTEuMTIxODMzIEMzNi4zNTA2OTE5LDUwLjgzMjQwNCAzNS42Njg5NzI3LDUwLjUwOTk4NjQgMzQuOTg0MTU3Niw1MC4xOTgxNSBDMzMuNjk1NjQwMiw0OS42MTE4MjI5IDMyLjQzMTI3MDksNDguOTg0NDE1NiAzMS4yMzYyNSw0OC4yMjM4MDg3IEMzMC40ODMzMjQ5LDQ3LjcxNDY2MjcgMjkuNzM2NTkxNiw0Ny4xODkzMzM2IDI5LjAxNjQ4MzEsNDYuNjM1MzcyOCBDMjguNjU3OTc2OSw0Ni4zNjAyNTk2IDI4LjMxMzcxMTgsNDYuMDcyMDc1NSAyNy45Njc1ODkxLDQ1Ljc4MjY0NjYgQzI3LjY0ODcxMDUsNDUuNTE2ODY5OSAyNy4zNDUzMTE0LDQ1LjI0MzAwMTYgMjcuMDYwNDg3Nyw0NC45NDExMjQxIEMyNi40NzQ3NDE3LDQ0LjI4MDEwNTYgMjUuOTM3MjkxOSw0My41NzgwMDcgMjUuNDg0NjcsNDIuODE2Nzc3NyBDMjUuMjU1NTcyNyw0Mi40MzE0OTQ4IDI1LjAzMjY2NzIsNDIuMDQyNDc3NCAyNC44MTQ3MTUyLDQxLjY1MDk3MDIgQzI1LjI1MzcxNTIsNDIuMTQ1ODAwNCAyNS43MTEyOTA1LDQyLjYyMzgyNSAyNi4xOTE3NzU2LDQzLjA4MDA2NDcgQzI2LjgyMjcyMTksNDMuNjc4ODQwMyAyNy40NTkyNDA4LDQ0LjI2NzY1NzEgMjguMTQyMTk4NCw0NC44MDY2Nzk2IEMyOC40NTU1MDQ0LDQ1LjA1MzE2MTEgMjguNzczMTQ0Nyw0NS4yOTQ2NjMxIDI5LjEwMDA3MjcsNDUuNTIxODQ5MyBDMjkuNTA3NDk0Myw0NS44MDU2NzY0IDI5LjkxNjc3MzUsNDYuMDkzODYwNSAzMC4zNDQ2MjgyLDQ2LjM0NjU2NjIgQzMxLjA2NjU5NDIsNDYuNzczNTUxOCAzMS44MDQwMzk3LDQ3LjE2MDcwMTkgMzIuNTc2Nzc4Nyw0Ny40ODg3MjE0IEMzMy4zNjI1MjA0LDQ3LjgyMjM0MjggMzQuMTQ5NTAwNSw0OC4xNTg0NTM4IDM0Ljk1MjU3OTQsNDguNDQ2NjM3OSBDMzUuMzMwODk5NSw0OC41ODIzMjcyIDM1LjcxMTY5NjMsNDguNzE2MTQ5MiAzNi4wOTk5MjMzLDQ4LjgyMjU4NDQgQzM2LjQ0OTc2MSw0OC45MTc4MTU4IDM2LjgwMjA3NTUsNDkuMDA4MDY3OSAzNy4xNTU2MjgzLDQ5LjA5NDU4NTQgQzM3LjgxNjI5NTMsNDkuMjU1MTcxOCAzOC40ODc0ODg0LDQ5LjM4NzEyNjUgMzkuMTYxNzc3NSw0OS40NzIzOTkxIEM0MC40MjQ5MDg0LDQ5LjYzMjM2MzEgNDEuNjk1NDY5NSw0OS42MjYxMzg4IDQyLjk2NTQxMTQsNDkuNjYyMjM5NiBDNDIuOTg0NjA2MSw0OS42NzI4MjA5IDQzLjAwMzE4MTUsNDkuNjg0NjQ3IDQzLjAyMzYxNDUsNDkuNjk1MjI4MyBDNDMuNTg5NTQ2Nyw1MC4wNTMxMjQzIDQ0LjE1NjcxNzMsNTAuNDExMDIwMyA0NC43MTg5MzQ0LDUwLjc3Mzg5NTggQzQ1LjQyMTA4NjYsNTEuMjM1NzM3MyA0Ni4xMDQwNDQxLDUxLjcyNDM0MzIgNDYuODIzNTMzNCw1Mi4xNjAwNDI3IEM0Ni45ODAxODY0LDUyLjI1NDY1MTcgNDcuMTM3NDU4Niw1Mi4zNDkyNjA4IDQ3LjI5NjU4ODQsNTIuNDQyMDAyNSBDNDcuNDQwMjM4NSw1Mi41MjU0MDc5IDQ3LjU5NDQxNDgsNTIuNTgwMTgxNSA0Ny43NTQ3ODI5LDUyLjYyMDYzOTMgQzQ3LjczNjgyNjYsNTIuNjMzMDg3OSA0Ny43MTgyNTEyLDUyLjY0NDI5MTYgNDcuNzAwMjk0OSw1Mi42NTY3NDAyIEM0Ny41Nzc2OTY5LDUyLjc0MjAxMjggNDcuNDU3NTc1Niw1Mi44MjcyODU0IDQ3LjMzMDY0MzQsNTIuOTAzODQ0IFogTTIwLjkyNDM5NTgsMTIuNzg1ODc2OSBDMjAuOTcwMjE1MiwxMi44MTg4NjU2IDIxLjAxNjAzNDcsMTIuODUxMjMxOCAyMS4wNjEyMzUsMTIuODg0MjIwNSBDMjEuNDYzNzAzMiwxMy4xNzQ4OTQzIDIxLjg0Njk3NjcsMTMuNDk0ODIyMyAyMi4yNDI2MzM5LDEzLjc5NjA3NzQgQzIyLjQzOTUzMzcsMTMuOTQ2NzA0OSAyMi42NTI1MzIzLDE0LjA3NjE2OTkgMjIuODM5NTI1MiwxNC4yMzkyNDYgQzIyLjg1OTk1ODIsMTQuMjU2Njc0IDIyLjg3ODUzMzYsMTQuMjc1OTY5MyAyMi44OTgzNDc1LDE0LjI5NDAxOTcgQzIyLjcxODc4NDcsMTQuNTgwOTU4OSAyMi41NDI5MzcxLDE0Ljg3MDM4NzkgMjIuMzcxNDIzNywxNS4xNjIzMDY2IEMyMi4zNDE3MDMsMTUuMTE2ODY5NCAyMi4zMTMyMjA2LDE1LjA3MDE4NzMgMjIuMjgzNDk5OSwxNS4wMjQ3NSBDMjEuOTk0OTYxMiwxNC41OTI3ODUxIDIxLjcyNjIzNjMsMTQuMTQ5NjE2NCAyMS40NTkzNjg5LDEzLjcwMzk1OCBDMjEuMjc3MzI5NCwxMy40MDAyMTMyIDIxLjA5OTYyNDIsMTMuMDkzMzU2MyAyMC45MjQzOTU4LDEyLjc4NTg3NjkgWiBNMTkuOTAyNzQ1OCwxNC43NzIwNDQzIEMyMC4xNjQ2NTk3LDE1LjIxMDIzMzUgMjAuNDI4NDMxMSwxNS42NDQ2ODgyIDIwLjcxMDc3ODEsMTYuMDcwNDI4OSBDMjAuODYwMDAwOSwxNi4yOTM4ODA1IDIxLjAwNzk4NTMsMTYuNTE3MzMyMSAyMS4xNDc5MjA0LDE2Ljc0NzYzMDQgQzIxLjIxNzg4OCwxNi44NjI3Nzk2IDIxLjI4NjYxNzIsMTYuOTc5Nzk2IDIxLjM1NTk2NTUsMTcuMDk1NTY3NiBDMjEuMjc5ODA2MiwxNy4yNjIzNzgzIDIxLjIwNTUwNDMsMTcuNDI5ODExNCAyMS4xMzI0NDA5LDE3LjU5Nzg2NjkgQzIwLjgyMTYxMTYsMTguMzA0OTQ1IDIwLjUyMzc4NTEsMTkuMDIzMjI2OCAyMC4yNjkzMDE0LDE5Ljc1MzMzNDcgQzE5Ljk4NzU3MzcsMjAuNTYzNzM1OCAxOS43MjAwODcxLDIxLjM4NDcxODIgMTkuNTA4OTQ2MSwyMi4yMTY5MDQzIEMxOS40MjUzNTY2LDIyLjU0Njc5MTEgMTkuMzQ5ODE2NCwyMi44Nzg1NDUxIDE5LjI4MzU2MzksMjMuMjEyMTY2NSBDMTkuMjA4NjQyOSwyMy41OTM3MTQ4IDE5LjE3NTgyNjMsMjMuOTgzMzU0NiAxOS4xNDExNTIxLDI0LjM3MTEyNzIgQzE5LjEzNTU3OTUsMjQuNDM2NDgyMSAxOS4xMzMxMDI4LDI0LjUwMDU5MjIgMTkuMTM0OTYwMywyNC41NjI4MzUgQzE5LjEwNzA5NzEsMjQuODM3OTQ4MSAxOS4wODEwOTE1LDI1LjExNDMwNjEgMTkuMDYzMTM1MiwyNS4zOTA2NjQxIEMxOS4wMzA5Mzc3LDI1Ljg3MTE3ODQgMTguOTk1NjQ0NCwyNi4zNTQ4MDQ5IDE5LjAwODY0NzIsMjYuODM1OTQxNiBDMTkuMDMyMTc2MSwyNy42NTQ0MzQzIDE5LjA5NzE5MDIsMjguNDc4NTI4OCAxOS4yMDA1OTM2LDI5LjI5MTQxOTcgQzE5LjI0MTQ1OTYsMjkuNjE1MDgyMiAxOS4yOTIyMzI1LDI5LjkzNjg3NzQgMTkuMzQ3MzM5NywzMC4yNTc0Mjc3IEMxOS4yODEwODcyLDMwLjQwMjQ1MzQgMTkuMjUwMTI4MSwzMC41NjU1Mjk1IDE5LjI2NjIyNjgsMzAuNzMyOTYyNiBDMTkuMjk3MTg1OSwzMS4wNjQwOTQzIDE5LjMyMTMzNCwzMS4zOTgzMzgxIDE5LjM2NTkxNTEsMzEuNzI3NjAyNCBDMTkuNDEzNTkyMSwzMi4wNzkyNzQyIDE5LjQ5NDA4NTgsMzIuNDIzNDc2OCAxOS41Nzg5MTM3LDMyLjc2ODMwMTggQzE5LjY0OTUwMDQsMzMuMTEyNTA0NSAxOS42OTkwMzQ5LDMzLjQ2MTA2NDEgMTkuNzcwMjQwOSwzMy44MDQ2NDQzIEMxOS44NjM3MzczLDM0LjI1MDMwMjYgMTkuOTY4Mzc5LDM0LjY5MDM1OTIgMjAuMTA3MDc1OCwzNS4xMjQxOTE0IEMyMC4zNDY2OTkxLDM1Ljg3Mjk3MjEgMjAuNTk0OTkxMSwzNi42MTk4ODU2IDIwLjg1MDA5NCwzNy4zNjMwNjQ1IEMyMS4wODk3MTczLDM4LjA1OTU2MTMgMjEuMzc1Nzc5MywzOC43MzU1MTggMjEuNjUzNzkyLDM5LjQxNzA3NjUgQzIxLjc5MTg2OTUsMzkuNzU1MDU0OSAyMS45MjYyMzIsNDAuMDk0Mjc4MSAyMi4wNzYwNzQsNDAuNDI3Mjc3IEMyMi4yNTc0OTQzLDQwLjgyOTM2NTQgMjIuNDUzNzc0OSw0MS4yMjA4NzI2IDIyLjY1ODcyNDEsNDEuNjEwNTEyNCBDMjMuMDAyOTg5Miw0Mi4yNjM0MzkzIDIzLjM1ODM5OTYsNDIuOTA4ODk3IDIzLjcyOTI4OTUsNDMuNTQ2ODg1NiBDMjMuOTI4NjY2LDQzLjg5MDQ2NTggMjQuMTM1NDcyOCw0NC4yMjk2ODkgMjQuMzU2NTIwNyw0NC41NjA4MjA2IEMyNC41NjgyODA5LDQ0Ljg3NzYzNjQgMjQuODA0ODA4Myw0NS4xNzcwMjQyIDI1LjA0NTY3MDEsNDUuNDcyNjc3NSBDMjUuMzQ3MjExNiw0NS44NDQyNjY5IDI1LjY2NDIzMjcsNDYuMjA0MDMwMiAyNS45OTQyNTY2LDQ2LjU1MDEwMDEgQzI2LjIzNTczNzUsNDYuODAzNDI4MyAyNi41MDQ0NjI1LDQ3LjAyNTYzNTEgMjYuNzcyNTY4Miw0Ny4yNDkwODY3IEMyNy4wNjQyMDI4LDQ3LjQ5MzA3ODQgMjcuMzUyNzQxNiw0Ny43Mzk1NTk4IDI3LjY1NDI4MzEsNDcuOTcxNzI1NCBDMjcuOTg1NTQ1NCw0OC4yMjY5MjA5IDI4LjMyMzYxODcsNDguNDczNDAyMyAyOC42NjM1NDk1LDQ4LjcxODAxNjUgQzI5LjM2NTcwMTcsNDkuMjIxNTYwNiAzMC4wNjg0NzMxLDQ5LjcyMDc0NzggMzAuODAzNDQxOSw1MC4xNzQ0OTc3IEMzMS40OTM4Mjk3LDUwLjYwMDg2MDggMzIuMjEyNjk5OCw1MC45NzgwNTIxIDMyLjk0MjA5Niw1MS4zMzA5Njg4IEMzMy43MTM1OTY1LDUxLjcwNDQyNTUgMzQuNDk1MDA0LDUyLjA1NjcxOTcgMzUuMjc1MTczMSw1Mi40MTAyNTg3IEMzNi4wMTUwOTU0LDUyLjc0NjM2OTggMzYuNzYzMDY3LDUzLjA2OTQwOTkgMzcuNTMwMjMzMyw1My4zMzc2NzYzIEMzOC4zNTk5MzcsNTMuNjI4MzUwMSAzOS4xOTk1NDc1LDUzLjg4OTE0NzQgNDAuMDQ3MjA3NSw1NC4xMjE5MzU0IEM0MC44NDU5NTIsNTQuMzQxNjUyNSA0MS42NDk2NTAxLDU0LjUxOTY2NjggNDIuNDYzODc0Miw1NC42NzA5MTY4IEM0My4yMzA0MjEzLDU0LjgxNDY5NzYgNDQuMDA4MTEzNiw1NC44ODg3NjY2IDQ0Ljc4NTE4NjgsNTQuOTM3OTM4NCBDNDUuMjQ5NTczMiw1NC45NjcxOTI1IDQ1LjcxNTgxNzEsNTQuOTgwODg1OSA0Ni4xODAyMDM1LDU0Ljk5MjA4OTYgQzQ2LjM2ODQzNDgsNTQuOTk3MDY5IDQ2LjU1NjY2NjEsNTUuMDAxNDI2IDQ2Ljc0NDg5NzMsNTQuOTk5NTU4NyBDNDYuOTk2OTA0Myw1NC45OTcwNjkgNDcuMjQ3NjczLDU0Ljk0MDQyODEgNDcuNDg5NzczMSw1NC44NzM4MjgzIEM0Ny44ODE3MTUyLDU0Ljc2Njc3MDcgNDguMjY0OTg4Nyw1NC41NjU3MjY1IDQ4LjU5OTM0NjksNTQuMzM4NTQwMyBDNDguNzUwNDI3Myw1NC4yMzUyMTczIDQ4Ljg5OTAzMDksNTQuMTMwNjQ5NCA0OS4wNTM4MjY0LDU0LjAzMTY4MzQgQzQ5LjE5NTYxOSw1My45NDA4MDg5IDQ5LjMyMzc4OTcsNTMuODMxODg0IDQ5LjQ0MzI5MTgsNTMuNzEzMDAwMyBDNDkuNTAyNzMzMiw1My42NTQ0OTIxIDQ5LjU0OTE3MTksNTMuNTk3ODUxMSA0OS41OTQ5OTEzLDUzLjUyNzUxNjggQzQ5LjY2MDYyNDYsNTMuNDQwMzc2OSA0OS43MTc1ODkzLDUzLjM0NzYzNTEgNDkuNzY1MjY2Myw1My4yNDkyOTE1IEM0OS44MDkyMjgyLDUzLjE0NTk2ODUgNDkuODQ1MTQwOCw1My4wMzg5MTA5IDQ5Ljg3MzAwNCw1Mi45MjkzNjM2IEM0OS45OTU2MDIsNTIuNTI0MTYzIDUwLjAwMzAzMjEsNTIuMDgwMzcxOSA0OS45OTkzMTcsNTEuNjYwODU1NSBDNDkuOTk3NDU5NSw1MS40Nzg0ODQyIDQ5Ljk4MTM2MDgsNTEuMjk2NzM1MiA0OS45NzE0NTM5LDUxLjExNDk4NjMgQzQ5Ljk2NTg4MTIsNTEuMDIyODY3IDQ5Ljk2MjE2NjEsNTAuOTMxOTkyNSA0OS45NTY1OTM1LDUwLjg0MDQ5NTYgQzQ5Ljk0MTczMzEsNTAuNjIwNzc4NSA0OS44ODc4NjQzLDUwLjQwODUzMDYgNDkuODM0NjE0Nyw1MC4xOTU2NjAzIEM0OS44MjY1NjUzLDUwLjE2NDUzODkgNDkuODE1NDIsNTAuMTM0NjYyNCA0OS44MDE3OTgsNTAuMTA0Nzg1OCBDNDkuNzgxMzY1LDQ5LjI2MjAxODUgNDkuNzcwMjE5OCw0OC40MTg2Mjg3IDQ5Ljc2ODk4MTQsNDcuNTc0NjE2NSBDNDkuNzY3MTIzOSw0NS45NzY4NDQxIDQ5LjgwMzY1NTYsNDQuMzc0NzE0NyA0OS43MTc1ODkzLDQyLjc3ODE4NzEgQzQ5LjY3OTIsNDIuMDgyOTM1MiA0OS42NDIwNDkxLDQxLjM4NzY4MzIgNDkuNjA2NzU1OCw0MC42OTE4MDg5IEM0OS41OTAwMzc5LDQwLjM0ODg1MTEgNDkuNTgwMTMwOSw0MC4wMDUyNzA5IDQ5LjU1NDc0NDUsMzkuNjYzNTU4IEM0OS41Mjg3Mzg5LDM5LjMxNjg2NTcgNDkuNDkzNDQ1NSwzOC45NzE0MTgyIDQ5LjQ2MDAwOTcsMzguNjI0NzI1OCBDNDkuMzk3NDcyMywzNy45NzU1MzM2IDQ5LjM1MzUxMDQsMzcuMzI1MDk2NCA0OS4yODY2Mzg4LDM2LjY3NzE0OSBDNDkuMjE3OTA5NiwzNi4wMDM2ODIgNDkuMTM2MTc3NiwzNS4zMDkwNTI1IDQ4Ljk0Nzk0NjMsMzQuNjU3OTkyOSBDNDguODgxNjkzOCwzNC40MzAxODQzIDQ4LjY3NjEyNTUsMzQuMjI5NzYyNSA0OC40Njc0NjEyLDM0LjEzMDc5NjUgQzQ4LjQwNDMwNDYsMzQuMTAwOTIgNDguMzM3NDMzLDM0LjA3Nzg5MDEgNDguMjY5MzIzLDM0LjA2Mjk1MTggQzQ4LjIyNzIxODYsMzQuMDMxODMwNSA0OC4xODUxMTQzLDM0LjAwMjU3NjMgNDguMTQyMzkwNywzMy45NzMzMjIyIEM0Ny45ODYzNTY5LDMzLjg2NzUwOTUgNDcuODI3ODQ2NCwzMy43NjM1NjQgNDcuNjY3NDc4MywzMy42NjU4NDI5IEM0Ny4yNjYyNDg0LDMzLjQxODczOSA0Ni44NTUxMTE3LDMzLjE4NDcwNjEgNDYuNDI3MjU3MSwzMi45ODczOTY1IEM0Ni4wNjY4OTMyLDMyLjgyMDU4NTggNDUuNjkyMjg4MiwzMi42ODkyNTM1IDQ1LjMzNjg3NzksMzIuNTA5MzcxOCBDNDQuOTkzMjMxOSwzMi4zMzUwOTIgNDQuNjYzMjA4LDMyLjEyNTk1NjMgNDQuMzMxMzI2NiwzMS45Mjc0MDE4IEM0NC4yNTUxNjcyLDMxLjg3Mzg3MyA0NC4xNzU5MTE5LDMxLjgzMTU0NzkgNDQuMDk1NDE4MywzMS43OTczMTQzIEM0My44OTM1NjUsMzEuNTc1MTA3NiA0My42NDUyNzMxLDMxLjQwNzY3NDUgNDMuMzU0MjU3NiwzMS4zMDM3MjkgQzQzLjE4ODMxNjksMzEuMjQzOTc1OSA0My4wMTg2NjExLDMxLjE5MjkzNjkgNDIuODUwMjQzNiwzMS4xNDEyNzUzIEM0Mi4zODc3MTQ4LDMwLjk5MDAyNTQgNDEuOTIwMjMyNSwzMC44MzU2NjMyIDQxLjQ3NzUxNzUsMzAuNjM1MjQxNSBDNDEuMDAwNzQ3NSwzMC40MjA1MDM4IDQwLjU1NDkzNjYsMzAuMTYxNTczOCA0MC4xMTUzMTc1LDI5Ljg4MjEwMzcgQzM5Ljg2ODI2MzksMjkuNzEwOTM2MSAzOS42MjM2ODcxLDI5LjUzODUyMzUgMzkuMzkyNzMyMywyOS4zNDU1NzA5IEMzOS4xNzQxNjExLDI5LjE2MjU3NzEgMzguOTc2NjQyMSwyOC45NjA5MTA0IDM4Ljc4MjIxOSwyOC43NTQyNjQ0IEMzOC41Mzc2NDIyLDI4LjQ2OTE5MjQgMzguMjk4NjM4LDI4LjE3Nzg5NjIgMzguMDkxODMxMiwyNy44NjM1NzAxIEMzNy44NzgyMTM1LDI3LjUzODA0MDMgMzcuNjc4ODM3LDI3LjIxMDY0MzIgMzcuNDkxMjI0OSwyNi44NzA3OTc2IEMzNy4zMDg1NjYyLDI2LjQ5NTQ3MzYgMzcuMTIzNDMwOSwyNi4xMTc2NTk5IDM2Ljk4NDExNSwyNS43MjM2NjMgQzM2Ljg4NjI4NDIsMjUuNDQ4NTQ5OSAzNi44MDA4MzcxLDI1LjE3MDk0NyAzNi43MjA5NjI3LDI0Ljg5MTQ3NjkgQzM2Ljg4OTk5OTMsMjQuODk1MjExNSAzNy4wNTkwMzYsMjQuODk3NzAxMiAzNy4yMjg2OTE4LDI0LjkwMzkyNTUgQzM4LjMxNDczNjcsMjQuOTUxODUyNCAzOS40MDIwMiwyNS4wMDYwMDM2IDQwLjQ4NjIwNzQsMjUuMDkwMDMxNCBDNDEuMTIwMjQ5NiwyNS4xMzg1ODA4IDQxLjc1MTgxNTEsMjUuMjEzODk0NiA0Mi4zODY0NzY0LDI1LjI2ODA0NTggQzQyLjc1NjEyOCwyNS4yOTkxNjcyIDQzLjEyNjM5ODcsMjUuMzE3MjE3NiA0My40OTc5MDc4LDI1LjMyMjE5NyBDNDMuOTIzMjg1NywyNS4zMjg0MjEzIDQ0LjMzMDA4ODIsMjUuMjM0NDM0NyA0NC43Mjg4NDEzLDI1LjA5MTI3NjMgQzQ1LjEzNTAyNDYsMjQuOTQ1NjI4MSA0NS40ODMwMDQ4LDI0LjcwMjI1ODggNDUuODI2NjUwNywyNC40NDgzMDgzIEM0Ni4wODIzNzI4LDI0LjI2MDMzNSA0Ni4yMjQxNjU0LDIzLjk2NTkyNjYgNDYuMjI2MDIzLDIzLjY2NjUzODggQzQ2LjIyNjY0MjEsMjMuNjY0MDQ5MSA0Ni4yMjg0OTk3LDIzLjY2MjE4MTggNDYuMjI5NzM4MSwyMy42NTk2OTIxIEM0Ni4yOTI4OTQ2LDIzLjUyMzM4MDQgNDYuMzI4ODA3MiwyMy4zNjkwMTgzIDQ2LjM2NTk1ODEsMjMuMjIzMzcwMiBDNDYuMzkyNTgyOSwyMy4xMjAwNDcxIDQ2LjQwODA2MjQsMjMuMDExNzQ0NyA0Ni40MTkyMDc3LDIyLjkwNDY4NzEgQzQ2LjU5MDEwMTksMjEuMTMzMjU3MyA0Ni40MjQxNjEyLDE5LjM0NzUxMTcgNDYuMjE4NTkyOCwxNy41ODcyODU2IEM0Ni4wMjI5MzEzLDE1LjkxNDE5OTUgNDUuNzgyMDY5NiwxNC4yNDczMzc2IDQ1LjU3NDY0MzcsMTIuNTc2MTE4NyBDNDUuNDczNzE3LDExLjc1NjM4MTIgNDUuMzc5NjAxNCwxMC45MzUzOTg4IDQ1LjMxOTU0MDgsMTAuMTExOTI2NyBDNDUuMjU4MjQxOCw5LjI3MTAyNjYzIDQ1LjIyNDgwNTksOC40MjgyNTkyNiA0NS4yMDQzNzI5LDcuNTg1NDkxOSBDNDUuMTYyMjY4Niw1LjkwMzA2OTMyIDQ1LjE1MDUwNDEsNC4yMjA2NDY3NCA0NS4xMTgzMDY3LDIuNTM4ODQ2NTggQzQ1LjExMDg3NjUsMi4xNDYwOTQ1OSA0NS4xMDQ2ODQ3LDEuNzUzOTY1MDIgNDUuMDk5NzMxMiwxLjM2MjQ1Nzg4IEM0NS4wOTcyNTQ1LDEuMTc4MjE5MjIgNDUuMDk1Mzk2OSwwLjk5NDYwMjk5MyA0NS4wOTM1Mzk0LDAuODEwMzY0MzM4IEM0NS4wOTE2ODE5LDAuNTc2MzMxNDUyIDQ1LjA5NjYzNTMsMC4zNDM1NDM0MjIgNDUuMDUzMjkyNiwwLjExMjAwMDI0OCBDNDQuOTk5NDIzOCwtMC4xODY3NjUxMzkgNDQuODk2MDIwNCwtMC40NTQ0MDkxMzEgNDQuNjk3MjYzLC0wLjY4NjU3NDczMyBDNDQuNTkxMzgyOSwtMC44MDk4MTU0NTUgNDQuNDc4MDcyNywtMC45MjgwNzY3NTQgNDQuMzY4NDc3NSwtMS4wNDc1ODI5MSBDNDQuMjI5MTYxNiwtMS4yMDAwNzc3NCA0NC4wODI0MTU1LC0xLjM0NDQ4MTAxIDQzLjkzMzgxMTgsLTEuNDg4ODg0MjggQzQzLjY0NzEzMDYsLTEuNzY4MzU0NCA0My4zNTExNjE3LC0yLjAzNzg2NTY4IDQzLjA2Mzg2MTQsLTIuMzE1NDY4NTIgQzQyLjc3Nzc5OTMsLTIuNTkyNDQ4OTMgNDIuNTA1MzU5MywtMi44ODMxMjI3NSA0Mi4yMzQ3NzY5LC0zLjE3NTA0MTQzIEM0Mi4yMDA3MjE5LC0zLjIyMTcyMzUyIDQyLjE2Mjk1MTgsLTMuMjY0NjcxMDUgNDIuMTIyMDg1OCwtMy4zMDM4ODQgQzQyLjA4NjE3MzIsLTMuMzQ5MzIxMjQgNDIuMDQ3MTY0OCwtMy4zOTA0MDE0OCA0Mi4wMDUwNjA0LC0zLjQyODM2OTU4IEM0Mi4wMDEzNDUzLC0zLjQzMTQ4MTcyIDQxLjk5ODI0OTQsLTMuNDM0NTkzODYgNDEuOTk1MTUzNSwtMy40Mzc3MDYgQzQxLjc2NjY3NTQsLTMuNjkxNjU2NTggNDEuNTM4ODE2NSwtMy45NDQ5ODQ3MyA0MS4zMDYwMDQxLC00LjE5NDU3ODMxIEM0MS4yMzQxNzksLTQuMjcyMzgxOCA0MS4xMzI2MzMyLC00LjMyOTAyMjc0IDQxLjAyMzAzOCwtNC4zNjU3NDU5OCBDNDAuOTk3MDMyNCwtNC40MzA0Nzg0OCA0MC45NjU0NTQxLC00LjQ5Mzk2NjEzIDQwLjkyMjczMDYsLTQuNTUxODUxOTIgQzQwLjgxMTI3NzksLTQuNzAxODU3MDQgNDAuNjk3OTY3NiwtNC44MjA3NDA3NyA0MC41MjcwNzM0LC00LjkwMjI3ODgyIEM0MC4zOTcwNDUyLC00Ljk2NDUyMTYxIDQwLjIzMjM0MjgsLTUgNDAuMDgyNTAwOCwtNSBDNDAuMDU0NjM3NywtNSA0MC4wMjY3NzQ1LC00Ljk5ODc1NTE0IDQwLjAwMDE0OTcsLTQuOTk2MjY1NDMgQzM5Ljc3ODQ4MjYsLTQuOTc1MTAyODggMzkuNjI3NDAyMiwtNC44ODI5ODM1NiAzOS40MzczMTM0LC00Ljc4MDkwNTM4IEMzOS4zMTQ3MTU0LC00LjcxNTU1MDQ1IDM5LjE5NzY5LC00LjY0MjcyNjM5IDM5LjA4MDA0NTUsLTQuNTY5Mjc5OSBDMzguNzk0NjAyNiwtNC4zOTEyNjU1MyAzOC41MDkxNTk4LC00LjIxMTM4Mzg3IDM4LjIyNjE5MzcsLTQuMDI4MzkwMDcgQzM3LjkxMjI2ODUsLTMuODI2MTAxIDM3LjYwODg2OTQsLTMuNjA4MjUxMjQgMzcuMzAwNTE2OSwtMy4zOTcyNDgxOSBDMzYuOTU5MzQ3NywtMy4xNjMyMTUzIDM2LjYxNjk0MDEsLTIuOTMxNjcyMTMgMzYuMjc3NjI4NSwtMi42OTQ1MjcxIEMzNS42NDExMDk2LC0yLjI1MTM1ODQ0IDM0Ljk4NjYzNDQsLTEuODM0MzMxNzYgMzQuMzYxMjYwNywtMS4zNzQ5Nzk5OCBDMzMuNzA1NTQ3MiwtMC44OTM4NDMyMiAzMy4wMjc1NDMsLTAuNDQ1MDcyNzEyIDMyLjM3MTgyOTUsMC4wMzY2ODY0NzMyIEMzMS43MDg2ODU3LDAuNTI0MDQ3NTEgMzEuMDM4MTExOCwxLjAwMzkzOTQxIDMwLjM2MzgyMjgsMS40NzYzNjIxOCBDMzAuMDIyMDM0NCwxLjcxNTk5NjkyIDI5LjY4NDU4MDMsMS45NjEyMzM1IDI5LjM0NTg4NzksMi4yMDcwOTI1MiBDMjkuMDA5MDUzLDIuNDUxMDg0MjUgMjguNjY0MTY4NywyLjY4MjAwNSAyOC4zMTg2NjUyLDIuOTE0MTcwNiBDMjcuOTY4MjA4MywzLjE1MDY5MzIgMjcuNjI1ODAwOCwzLjQwMDkwOTIxIDI3LjI4MTUzNTcsMy42NDU1MjMzNyBDMjYuOTQ1MzE5OSwzLjg4NTc4MDU0IDI2LjYwMTY3NCw0LjExNDgzNCAyNi4yNTkyNjY0LDQuMzQ4MjQ0NDYgQzI1LjYzNjk4ODcsNC43NzE0OTU0MiAyNS4wMDk3NTc1LDUuMTg5NzY2OTYgMjQuMzkyNDMzMiw1LjYyMTEwOTQ5IEMyMy43ODEzMDA4LDYuMDQ5OTYyMyAyMy4xNTUzMDc5LDYuNDU1MTYyODYgMjIuNTQ2NjUyMiw2Ljg4Nzc1MDI0IEMyMi4yNDYzNDksNy4xMDEyNDMwMSAyMS45NDA0NzMyLDcuMzA3MjY2NjQgMjEuNjQzMjY1OSw3LjUyNTExNjQgQzIxLjM1MjI1MDQsNy43Mzg2MDkxNiAyMS4wNzExNDE5LDcuOTY3MDQwMiAyMC43NzgyNjg5LDguMTc4NjY1NjggQzIwLjE0MTEzMDgsOC42MzkyNjIzMiAxOS40NzkyMjU0LDkuMDY2ODcwMjggMTguODAwNjAyMSw5LjQ2MjczNDQyIEMxOC41OTM3OTU0LDkuNTgyODYzIDE4LjQ1MjYyMTksOS44NDU1Mjc1NyAxOC40MTIzNzUxLDEwLjA3Mzk1ODYgQzE4LjM5NjI3NjQsMTAuMTY2NzAwNCAxOC4zOTM3OTk2LDEwLjI2MTMwOTQgMTguNDA0OTQ0OSwxMC4zNTI4MDYzIEMxOC40MDI0NjgyLDEwLjM1NDY3MzYgMTguMzk5OTkxNSwxMC4zNTU5MTg0IDE4LjM5NzUxNDcsMTAuMzU3Nzg1NyBDMTguMTkzODAzOSwxMC41MDA5NDQxIDE4LjA1MzI0OTYsMTAuNzIxOTA2IDE4LjAxMDUyNjEsMTAuOTY5MDA5OSBDMTguMDA2ODExLDExLjA1MzY2MDEgMTguMDAzNzE1MSwxMS4xMzgzMTAzIDE4LDExLjIyMjk2MDUgQzE4LjAxNjcxNzksMTEuMzg5MTQ4NyAxOC4wNzE4MjUxLDExLjU0MDM5ODcgMTguMTY2NTU5OSwxMS42NzczMzI4IEMxOC43MzE4NzI5LDEyLjcxNjc4NzQgMTkuMjk2NTY2OCwxMy43NTU2MTk2IDE5LjkwMjc0NTgsMTQuNzcyMDQ0MyBaIiBpZD0iRmlsbC0yOC1Db3B5IiBmaWxsPSIjMDAwMDAwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNC4wMDAwMDAsIDI1LjAwMDAwMCkgc2NhbGUoMSwgLTEpIHJvdGF0ZSgtNzEuMDAwMDAwKSB0cmFuc2xhdGUoLTM0LjAwMDAwMCwgLTI1LjAwMDAwMCkgIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPGcgaWQ9IkRyYWctRm9jdXMtUG9pbnQiPgogICAgICAgICAgICAgICAgPHVzZSBmaWxsPSJibGFjayIgZmlsbC1vcGFjaXR5PSIxIiBmaWx0ZXI9InVybCgjZmlsdGVyLTQpIiB4bGluazpocmVmPSIjcGF0aC0zIj48L3VzZT4KICAgICAgICAgICAgICAgIDx1c2UgZmlsbD0iIzAwMDAwMCIgZmlsbC1ydWxlPSJldmVub2RkIiB4bGluazpocmVmPSIjcGF0aC0zIj48L3VzZT4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+');\n    width: 97px;\n    height: 58px;\n    position: absolute;\n    top: 24px;\n    right: 2px;\n    z-index: 999;\n    pointer-events: none;\n}\n\n.attachment-info.attachment-info .thumbnail {\n    padding: 5px;\n    background: #fff;\n}\n"]}<?php
module.exports = [
    'assets/css/better-smart-thumbnails.css',
];
<?php
<?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */


/**
 * User Metabox Fields Generator
 */
class BF_User_Metabox_Front_End_Generator extends BF_Admin_Fields {


	/**
	 * Constructor Function
	 *
	 * @param array  $items  Panel All Options
	 * @param string $id     Panel ID
	 * @param array  $values Panel Saved Values
	 *
	 * @since  1.4
	 * @access public
	 */
	public function __construct( array &$items, &$id, &$values = array() ) {
		// Parent Constructor
		parent::__construct( array(
			'templates_dir' => BF_PATH . 'metabox/templates/'
		) );

		$this->items  = $items;
		$this->id     = $id;
		$this->values = $values;
	}


	/**
	 * Used for creating input name
	 *
	 * @since 1.4
	 *
	 * @param $options
	 *
	 * @return string
	 */
	public function input_name( &$options ) {

		$id   = isset( $options['id'] ) ? $options['id'] : '';
		$type = isset( $options['type'] ) ? $options['type'] : '';

		switch ( $type ) {

			default:
				return "{$id}";
				break;

		}

	}


	/**
	 *  Metabox panel generator
	 *
	 * @since 1.4
	 */
	public function callback( $is_ajax = false ) {

		$skip_ajax_fields      = ! $is_ajax;
		$this->items['fields'] = BF_User_Metabox_Core::get_metabox_fields( $this->id );
		$metabox_config        = BF_User_Metabox_Core::get_metabox_config( $this->id );
		$items_has_tab         = ! $is_ajax && $this->has_tab();
		$has_tab               = false;

		if ( ! $is_ajax ) {
			$wrapper = Better_Framework::html()->add( 'div' )->class( 'bf-user-meta-wrap bf-metabox-wrap bf-clearfix' )->data( 'id', $this->id );

			// Better Option Title
			$wrapper->text(
				Better_Framework::html()->add( 'div' )->class( 'bf-user-metabox-title' )->text(
					Better_Framework::html()->add( 'h3' )->text( $metabox_config['title'] )
				)
			);

			// Add Class For Post Format Filter
			if ( isset( $metabox_config['post_format'] ) ) {
				$wrapper->data( 'bf_pf_filter', implode( ',', $metabox_config['post_format'] ) );
			}
		}

		$container = Better_Framework::html()->add( 'div' );
		if ( ! $is_ajax ) {
			$container = $container->class( 'bf-metabox-container' );
		}

		$tab_counter = 0;

		$group_counter = 0;

		if ( $items_has_tab && ! $is_ajax ) {
			$container->class( 'bf-with-tabs' );
			$tabs_container = Better_Framework::html()->add( 'div' )->class( 'bf-metabox-tabs' );
			$tabs_container->text( $this->get_tabs() );
			$wrapper->text( $tabs_container->display() );
		}

		if ( isset( $this->items['panel-id'] ) ) {
			$std_id = Better_Framework::options()->get_panel_std_id( $this->items['panel-id'] );
		} else {
			$std_id = 'std';
		}

		foreach ( $this->items['fields'] as $field ) {

			$field['input_name'] = $this->input_name( $field );

			$field['value'] = isset( $field['id'] ) && isset( $this->values[ $field['id'] ] ) ? $this->values[ $field['id'] ] : NULL;

			if ( is_null( $field['value'] ) && isset( $field[ $std_id ] ) ) {
				$field['value'] = $field[ $std_id ];
			} elseif ( is_null( $field['value'] ) && isset( $field['std'] ) ) {
				$field['value'] = $field['std'];
			}

			if ( $skip_ajax_fields && ! empty( $field['ajax-tab-field'] ) ) {  // Backward compatibility
				continue;
			}

			if ( $skip_ajax_fields && ! empty( $field['ajax-section-field'] ) ) {
				continue;
			}


			if ( $field['type'] == 'repeater' ) {
				$field['clone-name-format'] = 'bf-metabox-option[$1][$2][$3][$4]';
				$field['metabox-id']        = $this->id;
				$field['metabox-field']     = true;
			}

			if ( $field['type'] == 'tab' || $field['type'] == 'subtab' ) {

				// close tag for latest group in tab
				if ( $group_counter != 0 ) {
					$group_counter = 0;
					$container->text( $this->get_fields_group_close( $field ) );
				}

				$is_subtab = $field['type'] == 'subtab';

				if ( $tab_counter != 0 ) {
					$container->text( '</div><!-- /Section -->' );
				}

				if ( $is_subtab ) {
					$container->text( "\n\n<!-- Section -->\n<div class='group subtab-group' id='bf-metabox-{$this->id}-{$field["id"]}'>\n" );
				} else {
					$container->text( "\n\n<!-- Section -->\n<div class='group' id='bf-metabox-{$this->id}-{$field["id"]}'>\n" );
				}
				$has_tab = true;
				$tab_counter ++;
				continue;
			}

			if ( $field['type'] == 'group_close' ) {

				// close tag for latest group in tab
				if ( $group_counter != 0 ) {
					$group_counter = 0;
					$container->text( $this->get_fields_group_close( $field ) );
				}
				continue;
			}

			if ( $field['type'] == 'group' ) {

				// close tag for latest group in tab
				if ( $group_counter != 0 ) {
					$group_counter = 0;
					$container->text( $this->get_fields_group_close( $field ) );
				}

				$container->text( $this->get_fields_group_start( $field ) );

				$group_counter ++;
			}


			if ( ! in_array( $field['type'], $this->supported_fields ) ) {
				continue;
			}

			// Filter Each Field For Post Formats!
			if ( isset( $field['post_format'] ) ) {

				if ( is_array( $field['post_format'] ) ) {
					$field_post_formats = implode( ',', $field['post_format'] );
				} else {
					$field_post_formats = $field['post_format'];
				}
				$container->text( "<div class='bf-field-post-format-filter' data-bf_pf_filter='{$field_post_formats}'>" );
			}

			$container->text(
				$this->section(
					call_user_func(
						array( $this, $field['type'] ),
						$field
					),
					$field
				)
			);

			// End Post Format Filter Wrapper
			if ( isset( $field['post_format'] ) ) {

				$container->text( "</div>" );
			}
		}

		// close tag for latest group in tab
		if ( $group_counter != 0 ) {
			$container->text( $this->get_fields_group_close( $field ) );
		}

		// last sub tab closing
		if ( $has_tab ) {
			$container->text( "</div><!-- /Section -->" );
		}

		if ( $is_ajax ) {
			echo $container->display();
		} else {
			$wrapper->text( $container->display() );
			echo $wrapper; // escaped before
		}

	} // callback
}<?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */


// Prevent Direct Access
defined( 'ABSPATH' ) or die;

/**
 * This class handles all functionality of BetterFramework Users Meta box feature for creating, saving, editing
 *
 * @package    BetterFramework
 * @since      1.4
 */
class BF_User_Metabox_Core {


	/**
	 * Contains all metabox's
	 *
	 * @var array
	 */
	public static $metabox = array();


	/**
	 * Contains config for all metabox's
	 *
	 * @var array
	 */
	public static $config = array();


	/**
	 * Contains all fields
	 *
	 * @var array
	 */
	public static $fields = array();


	/**
	 * Contains all std
	 *
	 * @var array
	 */
	public static $std = array();


	/**
	 * Contains all css
	 *
	 * @var array
	 */
	public static $css = array();


	/**
	 * Initializes all metaboxes
	 */
	public static function init_metabox() {

		static $loaded;

		if ( $loaded ) {
			return;
		}

		self::$metabox = apply_filters( 'better-framework/user-metabox/add', array() );

	}


	/**
	 * loads and returns metabox config
	 *
	 * @param string $metabox_id
	 *
	 * @return array
	 */
	public static function get_metabox_config( $metabox_id = '' ) {

		if ( empty( $metabox_id ) ) {
			return array();
		}

		if ( isset( self::$config[ $metabox_id ] ) ) {
			return self::$config[ $metabox_id ];
		}

		return self::$config[ $metabox_id ] = apply_filters( 'better-framework/user-metabox/' . $metabox_id . '/config', array() );
	}


	/**
	 * loads and returns metabox std values
	 *
	 * @param string $metabox_id
	 *
	 * @return array
	 */
	public static function get_metabox_std( $metabox_id = '' ) {

		if ( empty( $metabox_id ) || ! isset( self::$metabox[ $metabox_id ] ) ) {
			return array( 'asdsd' );
		}

		if ( isset( self::$std[ $metabox_id ] ) ) {
			return self::$std[ $metabox_id ];
		}

		return self::$std[ $metabox_id ] = apply_filters( 'better-framework/user-metabox/' . $metabox_id . '/std', array() );
	}


	/**
	 * loads and returns metabox std values
	 *
	 * @param string $metabox_id
	 *
	 * @return array
	 */
	public static function get_metabox_fields( $metabox_id = '' ) {

		if ( empty( $metabox_id ) || ! isset( self::$metabox[ $metabox_id ] ) ) {
			return array();
		}

		if ( isset( self::$fields[ $metabox_id ] ) ) {
			return self::$fields[ $metabox_id ];
		}

		return self::$fields[ $metabox_id ] = apply_filters( 'better-framework/user-metabox/' . $metabox_id . '/fields', array() );
	}


	/**
	 * loads and returns metabox css
	 *
	 * @param string $metabox_id
	 *
	 * @return array
	 */
	public static function get_metabox_css( $metabox_id = '' ) {

		if ( empty( $metabox_id ) || ! isset( self::$metabox[ $metabox_id ] ) ) {
			return array();
		}

		if ( isset( self::$css[ $metabox_id ] ) ) {
			return self::$css[ $metabox_id ];
		}

		return self::$css[ $metabox_id ] = apply_filters( 'better-framework/user-metabox/' . $metabox_id . '/css', array() );
	}


	/**
	 * Used to add action for constructing the meta box
	 *
	 * @since     1.4
	 * @access    public
	 */
	public function __construct() {

		self::init_metabox();

		// Add options form
		add_action( 'show_user_profile', array( $this, 'add_meta_boxes' ) );
		add_action( 'edit_user_profile', array( $this, 'add_meta_boxes' ) );

		add_action( 'edit_user_profile_update', array( $this, 'save' ), 1 );
		add_action( 'personal_options_update', array( $this, 'save' ), 1 );

		/**
		 * Action to handle ajax user metabox tabs
		 */
		add_action( 'better-framework/user-metabox/ajax-tab', array( $this, 'ajax_tab' ), 10, 3 );
	}


	/**
	 * Used for retrieve meta data values
	 *
	 * @param   string $id meta box id
	 * @param          $user
	 *
	 * @since    1.4
	 * @return  array
	 * @access   public
	 */
	public function get_full_meta_data( $id = '', $user ) {

		global $pagenow;

		$output = array();

		if ( isset( self::$metabox[ $id ]['panel-id'] ) ) {
			$std_id = Better_Framework::options()->get_panel_std_id( self::$metabox[ $id ]['panel-id'] );
		} else {
			$std_id = 'std';
		}

		$metabox_std = self::get_metabox_std( $id );

		if ( $pagenow == 'post-new.php' ) {

			if ( ! empty( $metabox_std ) ) {

				foreach ( (array) $metabox_std as $field_id => $field ) {

					if ( isset( $field[ $std_id ] ) ) {
						$output[ $field_id ] = $field[ $std_id ];
					} elseif ( isset( $field['std'] ) ) {
						$output[ $field_id ] = $field['std'];
					}
				}

			}

			return $output;
		}

		$meta = get_user_meta( $user->ID );

		foreach ( (array) $metabox_std as $field_id => $field ) {

			if ( isset( $meta[ $field_id ] ) ) {

				if ( is_serialized( $meta[ $field_id ][0] ) ) {
					$output[ $field_id ] = unserialize( $meta[ $field_id ][0] );
				} else {
					$output[ $field_id ] = $meta[ $field_id ][0];
				}

			} else {

				if ( isset( $field[ $std_id ] ) ) {
					$output[ $field_id ] = $field[ $std_id ];
				} elseif ( isset( $field['std'] ) ) {
					$output[ $field_id ] = $field['std'];
				}
			}

		}

		return $output;
	}


	/**
	 * Deprecated: Use bf_get_user_meta
	 *
	 * Used for finding user meta field value.
	 *
	 * @since   1.4
	 *
	 * @param $field_key    string              User field ID
	 * @param $user         string|WP_User      User ID or object
	 *
	 * @return mixed
	 */
	public function get_meta( $field_key, $user ) {
		return bf_get_user_meta( $field_key, $user );
	}


	/**
	 * Callback: Used for creating meta boxes
	 *
	 * Action: show_user_profile
	 * Action: edit_user_profile
	 *
	 * @since   1.4
	 * @access  public
	 *
	 * @param   $user   string|WP_User      User ID or object
	 */
	public function add_meta_boxes( $user ) {

		if ( ! class_exists( 'BF_User_Metabox_Front_End_Generator' ) ) {
			require BF_PATH . 'user-metabox/class-bf-user-metabox-front-end-generator.php';
		}

		foreach ( (array) self::$metabox as $metabox_id => $metabox ) {

			$metabox_value = $this->get_full_meta_data( $metabox_id, $user );

			$metabox_config = self::get_metabox_config( $metabox_id );

			if ( empty( $metabox_config['title'] ) ) {
				$metabox_config['title'] = __( 'Better User Options', 'better-studio' );
			}

			$front_end = new BF_User_Metabox_Front_End_Generator( $metabox_config, $metabox_id, $metabox_value );

			$front_end->callback();
		}

	} // add


	/**
	 * Updates user meta in safely
	 *
	 * @param   string|WP_User $user  User ID or object
	 * @param   string         $key   User meta key name
	 * @param   string         $value User meta value
	 *
	 * @static
	 * @since   1.4
	 * @return  bool
	 */
	public static function add_meta( $user, $key, $value ) {

		if ( ! is_object( $user ) ) {
			$user = get_user_by( 'id', $user );
		}

		$old_value = get_user_meta( $user->ID, $key, true );

		if ( $old_value === false ) {
			return add_user_meta( $user->ID, $key, $value );
		} else {
			if ( $old_value === $value ) {
				return true;
			} else {
				delete_user_meta( $user->ID, $key );

				return add_user_meta( $user->ID, $key, $value );
			}
		}

	}


	/**
	 * Callback: Save user meta box values
	 *
	 * Action: edit_user_profile_update
	 * Action: personal_options_update
	 *
	 * @param   int $user_id
	 *
	 * @static
	 * @return  mixed
	 * @since   1.4
	 */
	public function save( $user_id ) {

		if ( ! current_user_can( 'edit_user', $user_id ) ) {
			return false;
		}

		// Iterate all meta boxes
		foreach ( (array) self::$metabox as $metabox_id => $metabox ) {

			if ( isset( $metabox['panel-id'] ) ) {
				$std_id = Better_Framework::options()->get_panel_std_id( $metabox['panel-id'] );
			} else {
				$std_id = 'std';
			}

			$metabox_std = self::get_metabox_std( $metabox_id );

			// Iterate all fields
			foreach ( (array) $metabox_std as $field_id => $field ) {

				if ( ! isset( $_POST[ $field_id ] ) ) {
					continue;
				}

				// Save value if save-std is true or not defined
				if ( ! isset( $field['save-std'] ) || $field['save-std'] == true ) {

					self::add_meta( $user_id, $field_id, $_POST[ $field_id ] );

				} // Don't Save Default Value
				elseif ( isset( $field['save-std'] ) ) {

					// If style std defined then save it
					if ( isset( $field[ $std_id ] ) ) {

						if ( $field[ $std_id ] != $_POST[ $field_id ] ) {
							self::add_meta( $user_id, $field_id, $_POST[ $field_id ] );
						} else {
							delete_user_meta( $user_id, $field_id );
						}

					} // If style std defined then save it
					elseif ( isset( $field['std'] ) ) {

						if ( $field['std'] != $_POST[ $field_id ] ) {
							self::add_meta( $user_id, $field_id, $_POST[ $field_id ] );
						} else {
							delete_user_meta( $user_id, $field_id );
						}

					}

				} // Delete Custom field
				else {
					delete_user_meta( $user_id, $field_id );
				}

			}

		}

	} // save

	/**
	 *
	 *
	 * @param string     $tab_id
	 * @param string     $metabox_id
	 * @param int|string $user_id
	 */
	public function ajax_tab( $tab_id, $metabox_id, $user_id ) {

		$user           = get_user_to_edit( $user_id );
		$fields         = BF_User_Metabox_Core::get_metabox_fields( $metabox_id );
		$metabox_value  = array();
		$metabox_config = self::get_metabox_config( $metabox_id );
		$use_generator  = true;


		if ( empty( $fields[ $tab_id ]['ajax-section-handler'] ) ) {

			$metabox_value = $this->get_full_meta_data( $metabox_id, $user );

			// Modify fields array
			foreach ( $fields as $idx => $field ) {

				// Backward compatibility
				if ( isset( $field['ajax-tab-field'] ) ) {
					$field['ajax-section-field'] = $field['ajax-tab-field'];
				}

				if ( empty( $field['ajax-section-field'] ) || $field['ajax-section-field'] !== $tab_id) {
					unset( $fields[ $idx ] );
				}
			}

		} else {

			$parent_field = $fields[ $tab_id ];

			$args = isset( $parent_field['ajax-section-handler-args'] ) ? $parent_field['ajax-section-handler-args'] : array();
			$args = array_merge( $args, compact( 'metabox_id', 'tab_id' ) );

			if (
				! isset( $parent_field['ajax-section-handler-type'] ) ||
				$parent_field['ajax-section-handler-type'] === 'field-generator'
			) {

				$fields = call_user_func( $parent_field['ajax-section-handler'], $args );

				foreach ( $fields as $key => $field ) {

					$metabox_value[ $field['id'] ] = bf_get_user_meta( $field['id'], $user_id );
				}
			} else {

				$use_generator = false;
				$out           = call_user_func( $parent_field['ajax-section-handler'], $args );

			}
		}

		if ( $use_generator ) {

			if ( ! class_exists( 'BF_User_Metabox_Front_End_Generator' ) ) {
				require BF_PATH . 'user-metabox/class-bf-user-metabox-front-end-generator.php';
			}
			$front_end = new BF_User_Metabox_Front_End_Generator( $metabox_config, $metabox_id, $metabox_value );

			BF_User_Metabox_Core::$fields[ $metabox_id ] = $fields;

			ob_start();
			// print output
			echo $front_end->callback( true );  // escaped before
			$out = ob_get_clean();
		}

		wp_send_json( array( 'out' => $out, 'tab_id' => $tab_id ) );
	}
}
<?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */


if ( ! function_exists( 'bf_get_user_meta' ) ) {
	/**
	 * Used for finding user meta field value.
	 *
	 * @since   2.0
	 *
	 * @param   string         $field_key     User field ID
	 * @param   string|WP_User $user          User ID or object
	 * @param   null           $force_default Default value (Optional)
	 *
	 * @return mixed
	 */
	function bf_get_user_meta( $field_key, $user = NULL, $force_default = NULL ) {

		if ( is_null( $user ) ) {

			// Get current post author id
			if ( is_singular() ) {
				$user = get_the_author_meta( 'ID' );
			} // Get current archive user
			elseif ( is_author() ) {
				$user = bf_get_author_archive_user();
			} // Return default value
			else {
				return $force_default;
			}
		}

		// Get user id from object
		if ( is_object( $user ) ) {
			$user = $user->ID;
		}

		// get value if saved in DB
		$value = get_user_meta( $user, $field_key, true );

		if ( $value !== false ) {
			return $value;
		} // Or return force default value
		elseif ( ! is_null( $force_default ) ) {
			return $force_default;
		}

		// initialize base BF metabox
		if ( ! class_exists( 'BF_User_Metabox_Core' ) ) {
			Better_Framework()->user_meta();
		}

		// Iterate all meta boxes
		foreach ( BF_User_Metabox_Core::$metabox as $metabox_id => $metabox ) {

			// if this meta box connected to a panel for style field
			if ( isset( $metabox['panel-id'] ) ) {
				$std_id = Better_Framework()->options()->get_panel_std_id( $metabox['panel-id'] );
			} else {
				$std_id = 'std';
			}

			$metabox_std = BF_User_Metabox_Core::get_metabox_std( $metabox_id );

			// retrieve default value
			if ( isset( $metabox_std[ $field_key ][ $std_id ] ) ) {
				return $metabox_std[ $field_key ][ $std_id ];
			} elseif ( isset( $metabox_std[ $field_key ]['std'] ) ) {
				return $metabox_std[ $field_key ]['std'];
			}

		}

		return false;
	}
}


if ( ! function_exists( 'bf_echo_user_meta' ) ) {
	/**
	 * Used to echo user meta field value.
	 *
	 * @since   2.0
	 *
	 * @param   string         $field_key     User field ID
	 * @param   string|WP_User $user          User ID or object
	 * @param   null           $force_default Default value (Optional)
	 *
	 * @return mixed
	 */
	function bf_echo_user_meta( $field_key, $user = NULL, $force_default = NULL ) {
		echo bf_get_user_meta( $field_key, $user, $force_default );
	}
}

<?php
die;<?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */


$classes = $this->get_classes( $options );
$iri     = isset( $options['repeater_item'] ) && $options['repeater_item'] == true; // Is this section for a repeater item

$section_classes = $classes['section'];

$heading_classes  = $classes['heading'];
$controls_classes = $classes['controls'];
$explain_classes  = $classes['explain'];

if ( $iri ) {

	$section_classes .= ' ' . $classes['repeater-section'];
	$heading_classes .= ' ' . $classes['repeater-heading'];
	$controls_classes .= ' ' . $classes['repeater-controls'];
	$explain_classes .= ' ' . $classes['repeater-explain'];

} else {

	$section_classes .= ' ' . $classes['nonrepeater-section'];
	$heading_classes .= ' ' . $classes['nonrepeater-heading'];
	$controls_classes .= ' ' . $classes['nonrepeater-controls'];
	$explain_classes .= ' ' . $classes['nonrepeater-explain'];

}

$section_classes .= ' ' . $classes['section-class-by-filed-type'];
$heading_classes .= ' ' . $classes['heading-class-by-filed-type'];
$controls_classes .= ' ' . $classes['controls-class-by-filed-type'];
$explain_classes .= ' ' . $classes['explain-class-by-filed-type'];

if ( empty( $options['desc'] ) ) {
	$section_classes .= ' no-desc ';
}
?>
<div class="bf-section-container bf-metabox bf-clearfix">
	<div class="<?php echo esc_attr( $section_classes ); ?> bf-clearfix"
	     data-id="<?php echo esc_attr( $options['id'] ); ?>">

		<div class="<?php echo esc_attr( $heading_classes ); ?> bf-clearfix">
			<h3><label><?php echo esc_html( $options['name'] ); ?></label></h3>
		</div>

		<div class="<?php echo esc_attr( $controls_classes ); ?> bf-clearfix">
			<?php echo $input; // escaped before ?>
		</div>

		<?php if ( ! empty( $options['desc'] ) ) { ?>
			<div
				class="<?php echo esc_attr( $explain_classes ); ?> bf-clearfix"><?php echo wp_kses( $options['desc'], bf_trans_allowed_html() ); ?></div>
		<?php } ?>

	</div>
</div><?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */

?>
<div class="bf-section-container bf-clearfix">
	<div class="bf-section-hr bf-clearfix">
		<?php echo $input; // escaped before ?>
	</div>
</div><?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */

?>
<div class="bf-section-container bf-metabox bf-clearfix">
	<div class="bf-section-heading bf-clearfix" data-id="<?php echo esc_attr( $options['id'] ); ?>"
	     id="<?php echo esc_attr( $options['id'] ); ?>">
		<div class="bf-section-heading-title bf-clearfix">
			<h3><?php echo esc_html( $options['name'] ); ?></h3>
		</div>
		<?php if ( ! empty( $options['desc'] ) ) { ?>
			<div
				class="bf-section-heading-desc bf-clearfix"><?php echo wp_kses( $options['desc'], bf_trans_allowed_html() ); ?></div>
		<?php } ?>
	</div>
</div><?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */


/**
 * override parent method to discard printed outputs
 *
 * Class BF_Product_Upgrader_Skin
 */
class BF_Product_Upgrader_Skin {

	public function header() {
	}

	public function footer() {
	}

	public function feedback( $string ) {
	}

	public function before() {
	}

	public function after() {
	}

	public function decrement_update_count( $type ) {
	}

	public function set_upgrader( &$upgrader ) {
	}

	public function add_strings() {
	}

	public function set_result( $result ) {
	}

	public function request_filesystem_credentials( $error = false, $context = false, $allow_relaxed_file_ownership = false ) {
	}

	public function error( $errors ) {
	}

	public function bulk_header() {
	}

	public function bulk_footer() {
	}
}<?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */


define( 'BS_PRODUCT_UPDATE_URI', trailingslashit( BF_URI . 'product-updater/' ) );
define( 'BS_PRODUCT_UPDATE_PATH', trailingslashit( BF_PATH . 'product-updater/' ) );

include_once BS_PRODUCT_UPDATE_PATH . 'class-bf-product-updater.php';
include_once BS_PRODUCT_UPDATE_PATH . 'functions.php';

<?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */


if ( ! function_exists( 'bf_remove_reject_unsafe_urls' ) ) {
	function bf_remove_reject_unsafe_urls( $args ) {
		$args['reject_unsafe_urls'] = false;

		return $args;
	}
}
<?php
// Silent is golden!<?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */


BF_Product_Updater::Run();


class BF_Product_Updater {

	public static $plugins_file = array();


	/**
	 * Initialize
	 */
	public static function Run() {

		global $bs_product_updater;

		if ( $bs_product_updater === false ) {
			return;
		}

		if ( ! $bs_product_updater instanceof self ) {
			$bs_product_updater = new self();
			$bs_product_updater->init();
		}

		return $bs_product_updater;
	}

	public function init() {

		add_action( 'wp_update_themes', array( $this, 'update_product_schedule' ) );
		add_action( 'load-themes.php', array( $this, 'update_product_schedule' ) );
		add_action( 'load-update.php', array( $this, 'update_product_schedule' ) );
		add_action( 'load-update-core.php', array( $this, 'update_product_schedule' ) );
		add_action( 'upgrader_process_complete', array( $this, 'update_product_schedule' ) );

		add_filter( 'site_transient_update_themes', array( $this, 'fetch_theme_download_link' ) );
		add_filter( 'upgrader_source_selection', array( $this, 'fix_source_directory' ), 30, 4 );
	}

	function fetch_theme_download_link( $value ) {

		global $pagenow;

		if ( isset( $_REQUEST['action'] ) &&
		     in_array( $pagenow, array( 'admin-ajax.php', 'update.php' ) ) &&
		     in_array( $_REQUEST['action'], array(
			     'upgrade-theme',
			     'update-selected-themes',
			     'update-theme',
		     ) )
		) {
			if ( ! empty( $value->response ) && is_array( $value->response ) ) {

				add_filter( 'http_request_args', 'bf_remove_reject_unsafe_urls', 99 );

				foreach ( $value->response as $idx => $product ) {
					if ( isset( $product['package'] ) && preg_match( '/^FETCH_FROM_BETTER_STUDIO\/(.+)/i', $product['package'], $matched ) ) {
						$r            = &$value->response[ $idx ];
						$dl_link      = $this->get_product_download_link( array_pop( $matched ), $product['slug'] );
						$r['package'] = $dl_link;
					}
				}

				set_site_transient( 'update_themes', $value );
				remove_filter( 'site_transient_update_themes', array( $this, 'fetch_theme_download_link' ) );
			}
		}

		return $value;
	}


	protected function get_product_download_link( $item_id ) {

		if ( $purchase_info = get_option( 'bf-product-updater-items' ) ) {
			if ( isset( $purchase_info[ $item_id ] ) ) {
				$purchase_code = &$purchase_info[ $item_id ];

				$product_data = $this->api_request( 'download-latest-version', array(), compact( 'item_id', 'purchase_code' ) );
				if ( ! empty( $product_data->success ) && ! empty( $product_data->download_link ) ) {
					return $product_data->download_link;
				}
			}
		}
	}


	protected function get_products_info() {

		$results = array();
		$info    = apply_filters( 'better-framework/product-updater/product-info', array() );

		if ( $info ) {

			$cache_data = array();
			foreach ( $info as $d ) {

				if ( isset( $d['item_id'] ) && isset( $d['purchase_code'] ) ) {
					$cache_data[ $d['item_id'] ] = $d['purchase_code'];
				}

				$results[ $d['item_id'] ] = $d;
			}
			update_option( 'bf-product-updater-items', $cache_data, 'no' );
		}

		return $results;
	}

	public function update_product_schedule() {

		static $loaded = false;
		remove_action( 'wp_update_themes', array( $this, 'update_product_schedule' ) );
		if ( $loaded ) {
			return;
		}
		$items_info = $this->get_products_info();
		if ( ! $items_info ) {
			return;
		}

		$status = $this->check_for_update( $items_info, true );

		if ( ! ( $plugins_update = get_site_transient( 'update_plugins' ) ) ) {
			$plugins_update = new stdClass();
		}
		if ( ! ( $themes_update = get_site_transient( 'update_themes' ) ) ) {
			$themes_update = new stdClass();
		}

		if ( ! empty( $status->plugins ) && is_array( $status->plugins ) ) {
			if ( empty( $plugins_update->response ) ) {
				$plugins_update->response = array();
			}

			$r = &$plugins_update->response;
			foreach ( $status->plugins as $plugin_data ) {
				$p_file = self::plugin_slug_to_file_path( $plugin_data['slug'] );

				$r[ $p_file ]          = (object) $plugin_data;
				$r[ $p_file ]->plugin  = $p_file;
				$r[ $p_file ]->package = 'FETCH_FROM_BETTER_STUDIO/' . $plugin_data['slug'];
			}

			set_site_transient( 'update_plugins', $plugins_update );
		}

		if ( ! empty( $status->themes ) && is_array( $status->themes ) ) {
			if ( empty( $themes_update->response ) ) {
				$themes_update->response = array();
			}

			$r = &$themes_update->response;
			foreach ( $status->themes as $item_id => $theme_data ) {

				$slug = &$theme_data['slug'];

				$r[ $slug ] = bf_merge_args( $theme_data, array(
					'package' => 'FETCH_FROM_BETTER_STUDIO/' . $item_id,
					//todo link to readme file
					'url'     => 'http://betterstudio.com/'
				) );
			}

			set_site_transient( 'update_themes', $themes_update );
		}

		$loaded = true;
	}

	/**
	 * Check group of items update
	 *
	 * @param array $items
	 * @param bool  $force
	 *
	 * @return bool|object object on success
	 */
	protected function check_for_update( $items, $force = false ) {

		global $wp_version, $pagenow;

		// Don't check update while updating another item!

		if (
			( isset( $_REQUEST['action'] ) && 'do-theme-upgrade' === $_REQUEST['action'] )
			||
			(
				isset( $_REQUEST['action'] ) &&
				in_array( $pagenow, array( 'admin-ajax.php', 'update.php' ) ) &&
				in_array( $_REQUEST['action'], array(
					'upgrade-theme',
					'update-selected-themes',
					'update-theme',
				) )
			)
		) {
			return false;
		}

		if ( empty( $items ) || ! is_array( $items ) ) {
			return false;
		}

		include ABSPATH . WPINC . '/version.php';

		$update_status               = new stdClass();
		$update_status->last_checked = time();
		$update_status->themes       = array();
		$update_status->plugins      = array();
		$update_status->misc         = array();

		if ( ! $force ) {
			$prev_status = get_option( 'bf-product-items-status' );

			if ( ! is_object( $prev_status ) ) {
				$prev_status               = new stdClass();
				$prev_status->last_checked = time();
				$skip_update               = false;
			} else {
				$skip_update = $this->check_update_duration > ( time() - $prev_status->last_checked );
			}

			if ( $skip_update ) {

				return $prev_status;
			}
		}

		/**
		 * check bundled plugins update
		 */

		$check_update = $this->api_request( 'check-products-update', compact( 'items' ) );

		if ( ! empty( $check_update->success ) && ! empty( $check_update->response ) ) {
			foreach ( $check_update->response as $item_id => $update_info ) {

				$ver       = &$update_info->version;
				$type      = &$update_info->type;
				$slug      = &$update_info->slug;
				$readme    = $update_info->readme ? $update_info->readme : false;
				$changelog = isset( $update_info->changelog ) ? $update_info->changelog : false;

				// Set active theme folder name instead of original folder name
				//  to handle changed folder names
				if ( ! empty( $items[ $item_id ]['active_theme'] ) ) {
					$slug = get_template();
				}

				if ( $ver !== 'latest' ) {

					$info_array = array(
						'slug'        => $slug,
						'new_version' => $ver,
						'url'         => $readme,
						'changelog'   => $changelog,
					);

					if ( $type === 'theme' ) {
						$update_status->themes[ $item_id ] = $info_array;
					} elseif ( $type === 'plugin' ) {
						$update_status->plugins[ $item_id ] = $info_array;
					} else {
						$update_status->misc[ $item_id ] = $info_array;
					}
				}
			}
		}

		do_action( 'better-framework/product-pages/product-update-check', $update_status, $check_update );

		update_option( 'bf-product-items-status', $update_status, 'no' );

		return $update_status;
	}

	/**
	 * Get plugin file path by plugin slug
	 *
	 * Ex: plugin_slug_to_file_path('js_composer') ==> js_composer/js_composer.php
	 *
	 * @param string $slug plugin slug (plugin directory)
	 *
	 * @return bool|string plugin file path on success or false on error
	 */
	public static function plugin_slug_to_file_path( $slug ) {

		if ( ! is_array( self::$plugins_file ) ) {

			self::$plugins_file = array();

			foreach ( get_plugins() as $file => $info ) {

				self::$plugins_file[ dirname( $file ) ] = $file;
			}
		}

		if ( isset( self::$plugins_file[ $slug ] ) ) {
			return self::$plugins_file[ $slug ];
		}

		return false;
	} // plugin_slug_to_file_path


	/**
	 * handle api request
	 *
	 * @see \BetterFramework_Oculus::request
	 *
	 * @param string $action
	 * @param array  $data
	 * @param array  $auth
	 * @param bool   $use_wp_error
	 *
	 * @return array|bool|object|WP_Error
	 */
	protected function api_request( $action, $data = array(), $auth = array(), $use_wp_error = false ) {

		if ( ! class_exists( 'BetterFramework_Oculus' ) ) {
			return false;
		}

		return BetterFramework_Oculus::request( $action, compact( 'auth', 'data', 'use_wp_error' ) );
	} //api_request

	/**
	 * Rename downloaded package folder to user-defined directory name
	 * for support renamed product folders while upgrading process.
	 *
	 * @param string      $source        File source location.
	 * @param string      $remote_source Remote file source location.
	 * @param WP_Upgrader $WP_Upgrader   WP_Upgrader instance. unused
	 * @param array       $hook_extra    Extra arguments passed to hooked filters.
	 *
	 * @hooked upgrader_source_selection
	 *
	 * @since  3.7.0
	 * @return string
	 */
	public function fix_source_directory( $source, $remote_source, $WP_Upgrader, $hook_extra ) {

		if ( ! $source ) {
			return $source;
		}

		if ( ! empty( $hook_extra['theme'] ) ) {

			$product_type        = 'theme';
			$current_folder_name = $hook_extra['theme'];

		} elseif ( ! empty( $hook_extra['plugin'] ) ) {

			$product_type        = 'plugin';
			$current_folder_name = $hook_extra['plugin'];

		} else {

			return $source;
		}

		$check = array(
			'product_type'   => $product_type,
			'product_folder' => basename( $source ),
		);

		$original_folder_name = &$check['product_folder'];

		// Dose user changed original product folder name?

		if ( $current_folder_name === $original_folder_name ) {

			return $source;
		}

		/// Is this a betterstudio product?
		$is_better_product = false;

		foreach ( apply_filters( 'better-framework/product-updater/product-info', array() ) as $info ) {

			if ( ! array_diff_assoc( $check, $info ) ) {

				$is_better_product = true;
				break;
			}
		}

		if ( ! $is_better_product ) {
			// Do not touch none betterstudio themes or plugins
			return $source;
		}

		$file_system   = bf_file_system_instance();
		$renamed_path  = $remote_source . '/' . $current_folder_name;
		$original_path = $remote_source . '/' . $original_folder_name;

		$file_system->delete( $renamed_path, true );

		if ( $file_system->move( $original_path, $renamed_path ) ) {

			return $renamed_path;
		}

		return $source;
	}
}
<?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */


/**
 * Metabox Fields Generator
 */
class BF_Metabox_Front_End_Generator extends BF_Admin_Fields {


	/**
	 * Constructor Function
	 *
	 * @param array $items  Panel All Options
	 * @param int   $id     Panel ID
	 * @param array $values Panel Saved Values
	 *
	 * @since  1.0
	 * @access public
	 */
	public function __construct( array &$items, &$id, &$values = array() ) {

		// Parent Constructor
		parent::__construct( array(
			'templates_dir' => BF_PATH . 'metabox/templates/'
		) );

		$this->items  = $items;
		$this->id     = $id;
		$this->values = $values;
	}


	/**
	 * Used for creating input name
	 *
	 * @param $options
	 *
	 * @return string
	 */
	public function input_name( &$options ) {

		$id   = isset( $options['id'] ) ? $options['id'] : '';
		$type = isset( $options['type'] ) ? $options['type'] : '';

		switch ( $type ) {

			case( 'repeater' ):
				return "bf-metabox-option[%s][%s][%d][%s]";
				break;

			default:
				return "bf-metabox-option[{$this->id}][{$id}]";
				break;

		}

	}


	/**
	 *  Metabox panel generator
	 *
	 * @param bool $is_ajax ignore ajax items
	 */
	public function callback( $is_ajax = false ) {
		$metabox_config = BF_Metabox_Core::get_metabox_config( $this->id );
		$items_has_tab  = $this->has_tab();
		$has_tab        = false;
		$has_wrapper    = $is_ajax !== true;

		if ( $has_wrapper ) {
			$wrapper = Better_Framework::html()->add( 'div' )->class( 'bf-metabox-wrap bf-clearfix' )->data( 'id', $this->id );
		}

		// Add Class For Post Format Filter
		if ( isset( $metabox_config['post_format'] ) && $has_wrapper ) {
			$wrapper->data( 'bf_pf_filter', implode( ',', $metabox_config['post_format'] ) );
		}
		$container = Better_Framework::html()->add( 'div' );
		if ( $is_ajax !== true ) {
			$container = $container->class( 'bf-metabox-container' );
		}

		$tab_counter = 0;

		$group_counter = array();

		if ( $items_has_tab && $is_ajax !== true ) {
			$container->class( 'bf-with-tabs' );
			$tabs_container = Better_Framework::html()->add( 'div' )->class( 'bf-metabox-tabs' );
			$tabs_container->text( $this->get_tabs() );
			if ( $has_wrapper ) {
				$wrapper->text( $tabs_container->display() );
			}
			Better_Framework()->assets_manager()->add_admin_css( '#bf_' . $this->id . ' .inside{margin: 0 !important; padding: 0 !important;}' );
		}

		if ( isset( $this->items['panel-id'] ) ) {
			$std_id = Better_Framework::options()->get_panel_std_id( $this->items['panel-id'] );
		} else {
			$std_id = 'std';
		}

		$metabox_fields = BF_Metabox_Core::get_metabox_fields( $this->id );

		$metabox_std = BF_Metabox_Core::get_metabox_std( $this->id );

		foreach ( $metabox_fields as $field_id => $field ) {

			if ( ! empty( $field['type'] ) && $field['type'] === 'id-holder' ) {
				continue;
			}

			if ( $is_ajax !== true && ! empty( $field['ajax-tab-field'] ) ) {  // Backward compatibility
				continue;
			}

			if ( $is_ajax !== true && ! empty( $field['ajax-section-field'] ) ) {
				continue;
			}

			$field['input_name'] = $this->input_name( $field );

			if ( $field['type'] === 'info' ) {
				if ( isset( $field['std'] ) ) {
					$field['value'] = $field['std'];
				} else {
					$field['value'] = '';
				}
			} else {
				$field['value'] = isset( $field['id'] ) && isset( $this->values[ $field['id'] ] ) ? $this->values[ $field['id'] ] : NULL;
			}

			if ( is_null( $field['value'] ) && isset( $metabox_std[ $field_id ][ $std_id ] ) ) {
				$field['value'] = $metabox_std[ $field_id ][ $std_id ];
			} elseif ( is_null( $field['value'] ) && isset( $metabox_std[ $field_id ]['std'] ) ) {
				$field['value'] = $metabox_std[ $field_id ]['std'];
			}

			if ( isset( $field['filter-field'] ) && $field['filter-field-value'] ) {

				// Get value if is available
				$filter_field_value = isset( $this->values[ $field['filter-field'] ] ) ? $this->values[ $field['filter-field'] ] : NULL;

				// is null means this is post create screen and filter field default value should be used for
				// default comparison
				if ( is_null( $filter_field_value ) ) {

					if ( isset( $metabox_std[ $field['filter-field'] ][ $std_id ] ) ) {
						$filter_field_value = $metabox_std[ $field['filter-field'] ][ $std_id ];
					} elseif ( isset( $metabox_std[ $field['filter-field'] ]['std'] ) ) {
						$filter_field_value = $metabox_std[ $field['filter-field'] ]['std'];
					} else {
						$filter_field_value = false;
					}

				}

				if ( $field['filter-field-value'] !== $filter_field_value ) {
					$field['section-css']['display'] = "none";
				}

			}

			if ( $field['type'] == 'repeater' ) {
				$field['clone-name-format'] = 'bf-metabox-option[$3][$4][$5][$6]';
				$field['metabox-id']        = $this->id;
				$field['metabox-field']     = true;
			}

			if ( $field['type'] == 'tab' || $field['type'] == 'subtab' ) {

				if ( $has_tab ) {

					// close all opened groups
					foreach ( array_reverse( $group_counter ) as $level_k => $level_v ) {

						if ( $level_v === 0 ) {
							continue;
						}

						for ( $i = 0; $i < $level_v; $i ++ ) {
							$container->text( $this->get_fields_group_close( $field ) );
						}

						$group_counter[ $level_k ] = 0;
					}
				}
				$is_subtab = $field['type'] == 'subtab';

				if ( $tab_counter != 0 ) {
					$container->text( '</div><!-- /Section -->' );
				}

				if ( $is_subtab ) {
					$container->text( "\n\n<!-- Section -->\n<div class='group subtab-group' id='bf-metabox-{$this->id}-{$field["id"]}'>\n" );
				} else {
					$container->text( "\n\n<!-- Section -->\n<div class='group' id='bf-metabox-{$this->id}-{$field["id"]}'>\n" );
				}
				$has_tab = true;
				$tab_counter ++;
				continue;
			}
			//
			// Close group
			//
			if ( $field['type'] == 'group_close' ) {

				if ( isset( $field['level'] ) && $field['level'] === 'all' ) {

					krsort( $group_counter );

					// close all opened groups
					foreach ( $group_counter as $level_k => $level_v ) {

						if ( $level_v === 0 ) {
							continue;
						}

						for ( $i = 0; $i < $level_v; $i ++ ) {
							$container->text( $this->get_fields_group_close( $field ) );
						}

						$group_counter[ $level_k ] = 0;
					}

				} else {

					krsort( $group_counter );

					// close last opened group
					foreach ( $group_counter as $level_k => $level_v ) {

						if ( ! $level_v ) {
							continue;
						}

						for ( $i = 0; $i < $level_v; $i ++ ) {
							$container->text( $this->get_fields_group_close( $field ) );
							$group_counter[ $level_k ] --;
							break;
						}

					}
				}


				continue;
			}

			//
			// Group
			// All nested groups and same level groups should be closed
			//
			if ( $field['type'] == 'group' ) {

				if ( ! isset( $field['level'] ) ) {
					$field['level'] = 0;
				}

				if ( ! isset( $group_counter[ $field['level'] ] ) ) {
					$group_counter[ $field['level'] ] = 0;
				}

				krsort( $group_counter );

				foreach ( $group_counter as $level_k => $level_v ) {

					if ( $level_k < $field['level'] ) {
						continue;
					}

					for ( $i = 0; $i < $level_v; $i ++ ) {
						$container->text( $this->get_fields_group_close( $field ) );
					}

					$group_counter[ $level_k ] = 0;
				}

				$container->text( $this->get_fields_group_start( $field ) );

				$group_counter[ $field['level'] ] ++;
			}


			if ( ! in_array( $field['type'], $this->supported_fields ) ) {
				continue;
			}

			// Filter Each Field For Post Formats!
			if ( isset( $field['post_format'] ) ) {

				if ( is_array( $field['post_format'] ) ) {
					$field_post_formats = implode( ',', $field['post_format'] );
				} else {
					$field_post_formats = $field['post_format'];
				}
				$container->text( "<div class='bf-field-post-format-filter' data-bf_pf_filter='{$field_post_formats}'>" );
			}

			$container->text(
				$this->section(
					call_user_func(
						array( $this, $field['type'] ),
						$field
					),
					$field
				)
			);

			// End Post Format Filter Wrapper
			if ( isset( $field['post_format'] ) ) {

				$container->text( "</div>" );
			}
		}

		// last sub tab closing
		if ( $has_tab ) {
			$container->text( "</div><!-- /Section -->" );
		}

		if ( $has_wrapper ) {
			$wrapper->text(
				$container->display()
			);
			echo $wrapper;  // escaped before
		} else {
			echo $container->display();
		}
	} // callback
}
<?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */


// Prevent Direct Access
defined( 'ABSPATH' ) or die;


// initialize all metaboxe
BF_Metabox_Core::init_metabox();


/**
 * This class handles all functionality of BetterFramework Meta box feature for creating, saving, editing
 * and another functionality like filtering metaboxe's for post types, pages and etc
 *
 * @package    BetterFramework
 * @since      1.0
 */
class BF_Metabox_Core {

	/**
	 * Contains all metabox's
	 *
	 * @var array
	 */
	public static $metabox = array();


	/**
	 * Contains config for all metabox's
	 *
	 * @var array
	 */
	public static $config = array();


	/**
	 * Contains all fields
	 *
	 * @var array
	 */
	public static $fields = array();


	/**
	 * Contains all std
	 *
	 * @var array
	 */
	public static $std = array();


	/**
	 * Contains all css
	 *
	 * @var array
	 */
	public static $css = array();


	/**
	 * Initializes all metaboxes
	 */
	public static function init_metabox() {

		static $loaded;

		if ( $loaded ) {
			return;
		}

		self::$metabox = apply_filters( 'better-framework/metabox/add', array() );

	}


	/**
	 * loads and returns metabox config
	 *
	 * @param string $metabox_id
	 *
	 * @return array
	 */
	public static function get_metabox_config( $metabox_id = '' ) {

		if ( empty( $metabox_id ) ) {
			return array();
		}

		if ( isset( self::$config[ $metabox_id ] ) ) {
			return self::$config[ $metabox_id ];
		}

		return self::$config[ $metabox_id ] = apply_filters( 'better-framework/metabox/' . $metabox_id . '/config', array() );
	}


	/**
	 * loads and returns metabox std values
	 *
	 * @param string $metabox_id
	 *
	 * @return array
	 */
	public static function get_metabox_std( $metabox_id = '' ) {

		if ( empty( $metabox_id ) || ! isset( self::$metabox[ $metabox_id ] ) ) {
			return array();
		}

		if ( isset( self::$std[ $metabox_id ] ) ) {
			return self::$std[ $metabox_id ];
		}

		return self::$std[ $metabox_id ] = apply_filters( 'better-framework/metabox/' . $metabox_id . '/std', array() );
	}


	/**
	 * loads and returns metabox std values
	 *
	 * @param string $metabox_id
	 *
	 * @return array
	 */
	public static function get_metabox_fields( $metabox_id = '' ) {

		if ( empty( $metabox_id ) || ! isset( self::$metabox[ $metabox_id ] ) ) {
			return array();
		}

		if ( isset( self::$fields[ $metabox_id ] ) ) {
			return self::$fields[ $metabox_id ];
		}

		return self::$fields[ $metabox_id ] = apply_filters( 'better-framework/metabox/' . $metabox_id . '/fields', array() );
	}


	/**
	 * loads and returns metabox css
	 *
	 * @param string $metabox_id
	 *
	 * @return array
	 */
	public static function get_metabox_css( $metabox_id = '' ) {

		if ( empty( $metabox_id ) || ! isset( self::$metabox[ $metabox_id ] ) ) {
			return array();
		}

		if ( isset( self::$css[ $metabox_id ] ) ) {
			return self::$css[ $metabox_id ];
		}

		return self::$css[ $metabox_id ] = apply_filters( 'better-framework/metabox/' . $metabox_id . '/css', array() );
	}


	/**
	 * Used to add action for constructing the meta box
	 *
	 * @since     1.0
	 * @access    public
	 */
	public function __construct() {

		self::init_metabox();

		add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ) );

		add_action( 'pre_post_update', array( $this, 'save' ), 1 );

		add_action( 'better-framework/metabox/ajax-tab', array( $this, 'ajax_tab' ), 10, 3 );
	}


	/**
	 * Used for creating meta boxes
	 *
	 * Callback: add_meta_boxes action
	 *
	 * @since   1.0
	 * @access  public
	 */
	public function add_meta_boxes() {

		if ( ! class_exists( 'BF_Metabox_Front_End_Generator' ) ) {
			require BF_PATH . 'metabox/class-bf-metabox-front-end-generator.php';
		}

		foreach ( (array) self::$metabox as $metabox_id => $metabox ) {

			$metabox_config = self::get_metabox_config( $metabox_id );

			if ( empty( $metabox_config ) ) {
				continue;
			}

			if ( ! $this->can_output( $metabox_config ) ) {
				continue;
			}

			$metabox_config['fields'] = self::get_metabox_fields( $metabox_id );
			$metabox_value            = $this->get_meta_data( $metabox_id );
			$title                    = empty( $metabox_config['title'] ) ? '' : $metabox_config['title'];
			$generator                = new BF_Metabox_Front_End_Generator( $metabox_config, $metabox_id, $metabox_value );

			if ( is_array( $metabox_config['pages'] ) ) {

				foreach ( $metabox_config['pages'] as $page ) {
					add_meta_box(
						'bf_' . $metabox_id,
						$title,
						array( $generator, 'callback' ),
						$page,
						isset( $metabox_config['context'] ) ? $metabox_config['context'] : 'normal',
						isset( $metabox_config['priority'] ) ? $metabox_config['priority'] : 'default'
					);
				}

			} else if ( is_string( $metabox_config['pages'] ) ) {

				add_meta_box(
					'bf_' . $metabox_id,
					$title,
					array( $generator, 'callback' ),
					$metabox_config['pages'],
					isset( $metabox_config['context'] ) ? $metabox_config['context'] : 'normal',
					isset( $metabox_config['priority'] ) ? $metabox_config['priority'] : 'default'
				);

			}
		}// foreach

	} // add_meta_boxes


	/**
	 * Used for retrieve meta data values
	 *
	 * @param   string $id      meta box id
	 * @param   int    $post_id meta box id
	 *
	 * @since    1.0
	 * @return  array
	 * @access   public
	 */
	public function get_meta_data( $id = '', $post_id = 0 ) {

		global $pagenow;

		$output = array();

		if ( isset( self::$metabox['panel-id'] ) ) {
			$std_id = Better_Framework::options()->get_panel_std_id( self::$metabox['panel-id'] );
		} else {
			$std_id = 'std';
		}

		$metabox_std = self::get_metabox_std( $id );

		if ( $pagenow == 'post-new.php' ) {

			if ( ! empty( $metabox_std ) ) {

				foreach ( (array) $metabox_std as $field_id => $field ) {

					if ( isset( $field[ $std_id ] ) ) {
						$output[ $field_id ] = $field[ $std_id ];
					} elseif ( isset( $field['std'] ) ) {
						$output[ $field_id ] = $field['std'];
					}
				}

			}

			return $output;
		}

		$meta = get_post_custom( $post_id );

		foreach ( (array) $metabox_std as $field_id => $field ) {

			if ( isset( $meta[ $field_id ] ) ) {

				if ( is_serialized( $meta[ $field_id ][0] ) ) {
					$output[ $field_id ] = unserialize( $meta[ $field_id ][0] );
				} else {
					$output[ $field_id ] = $meta[ $field_id ][0];
				}

			} else {

				if ( isset( $field[ $std_id ] ) ) {
					$output[ $field_id ] = $field[ $std_id ];
				} elseif ( isset( $field['std'] ) ) {
					$output[ $field_id ] = $field['std'];
				}
			}

		}

		return $output;
	}


	/**
	 * Generates fields of ajaxified tab
	 *
	 * @param $tab_id
	 * @param $metabox_id
	 * @param $object_id
	 */
	public function ajax_tab( $tab_id, $metabox_id, $object_id ) {

		$metabox_config           = self::get_metabox_config( $metabox_id );
		$metabox_config['fields'] = self::get_metabox_fields( $metabox_id );
		$metabox_values           = array();
		$use_generator            = true;

		if ( empty( $metabox_config['fields'][ $tab_id ]['ajax-section-handler'] ) ) {

			$metabox_values = $this->get_meta_data( $metabox_id, $object_id );

			foreach ( $metabox_config['fields'] as $idx => $field ) {

				// Backward compatibility
				if ( isset( $field['ajax-tab-field'] ) ) {
					$field['ajax-section-field'] = $field['ajax-tab-field'];
				}

				if ( empty( $field['ajax-section-field'] ) || $field['ajax-section-field'] !== $tab_id ) {
					unset( $metabox_config['fields'][ $idx ] );
				}
			}
		} else {

			$parent_field = $metabox_config['fields'][ $tab_id ];

			$args = isset( $parent_field['ajax-section-handler-args'] ) ? $parent_field['ajax-section-handler-args'] : array();
			$args = array_merge( $args, compact( 'metabox_id', 'section_id' ) );

			if (
				! isset( $parent_field['ajax-section-handler-type'] ) ||
				$parent_field['ajax-section-handler-type'] === 'field-generator'
			) {

				$metabox_config['fields'] = call_user_func( $parent_field['ajax-section-handler'], $args );

				foreach ( $metabox_config['fields'] as $key => $field ) {
					$metabox_values[ $field['id'] ] = bf_get_post_meta( $field['id'], $object_id );
				}
			} else {

				$use_generator = false;
				$out           = call_user_func( $parent_field['ajax-section-handler'], $args );

			}
		}

		if ( $use_generator ) {

			if ( ! class_exists( 'BF_Metabox_Front_End_Generator' ) ) {
				require BF_PATH . 'metabox/class-bf-metabox-front-end-generator.php';
			}

			self::$fields[ $metabox_id ] = $metabox_config['fields'];
			$generator                   = new BF_Metabox_Front_End_Generator( $metabox_config, $metabox_id, $metabox_values );

			ob_start();
			$generator->callback( true );
			$out = ob_get_clean();

		}

		wp_send_json( array( 'out' => $out, 'tab_id' => $tab_id ) );

	}


	/**
	 * Calculate when meta box can added
	 *
	 * @param   array $config Configuration values of meta box
	 *
	 * @return bool
	 * @since   1.1.1
	 * @access  public
	 */
	public function can_output( $config ) {

		$post_id = bf_get_admin_current_post_id();

		// post types
		switch ( true ) {
			case ( ! isset( $config['pages'] ) || empty( $config['pages'] ) ):
				$post_types = array();
				break;
			case ( is_array( $config['pages'] ) ):
				$post_types = $config['pages'];
				break;
			case ( is_string( $config['pages'] ) ):
				$post_types[] = $config['pages'];
				break;
		}

		// include_template
		switch ( true ) {

			case( ! isset( $config['include_template'] ) || empty( $config['include_template'] ) ):
				$include_template = array();
				break;

			case( is_array( $config['include_template'] ) ):
				$include_template = $config['include_template'];
				break;

			case ( is_string( $config['include_template'] ) ):
				$include_template[] = $config['include_template'];
				break;
		}

		// exclude_template
		switch ( true ) {

			case ( ! isset( $config['exclude_template'] ) || empty( $config['exclude_template'] ) ):
				$exclude_template = array();
				break;

			case ( is_array( $config['exclude_template'] ) ):
				$exclude_template = $config['exclude_template'];
				break;

			case ( is_string( $config['exclude_template'] ) ):
				$exclude_template[] = $config['exclude_template'];
				break;

		}


		if ( ! empty( $include_template ) || ! empty( $exclude_template ) ) {
			$template_file = get_post_meta( $post_id, '_wp_page_template', true );
		}

		$can_output = true;

		// processing order: "exclude" then "include"
		// processing order: "template"

		if ( ! empty( $include_template ) || ! empty( $exclude_template ) ) {

			if ( ! empty( $exclude_template ) ) {
				if ( in_array( $template_file, $exclude_template ) ) {
					$can_output = false;
				}
			}

			// excludes are not set use "include only" mode
			if ( empty( $exclude_template ) ) {
				$can_output = false;
			}

			if ( ! empty( $include_template ) ) {

				if ( in_array( $template_file, $include_template ) ) {
					$can_output = true;
				}

			}
		}

		// Filter for post types
		$current_post_type = bf_get_admin_current_post_type();

		if ( isset( $current_post_type ) && ! in_array( $current_post_type, $post_types ) ) {
			$can_output = false;
		}

		return $can_output;
	}


	/**
	 * Update Post Meta
	 *
	 * @param   string $id  The id post
	 * @param   string $key Post meta key name
	 * @param   string $val Post meta key value
	 *
	 * @static
	 * @since   1.0
	 * @return  bool
	 */
	public static function update( $id, $key, $val ) {
		return update_post_meta( $id, $key, $val );
	}


	/**
	 * Save post meta box values
	 *
	 * Callback: pre_post_update action
	 *
	 * @param   int $post_id
	 *
	 * @static
	 * @return  mixed
	 * @since   1.0
	 */
	public function save( $post_id ) {

		if (
			empty( $_POST['bf-metabox-option'] )
			|| ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
			|| ( ! isset( $_POST['post_ID'] )
			     || $post_id != $_POST['post_ID'] )
			|| ! current_user_can( 'edit_post', $post_id )
		) {
			return $post_id;
		}


		foreach ( self::$metabox as $metabox_id => $metabox ) {

			if ( ! isset( $_POST['bf-metabox-option'][ $metabox_id ] ) ) {
				continue;
			}

			$metabox_std = self::get_metabox_std( $metabox_id );

			if ( empty( $metabox_std ) || ! is_array( $metabox_std ) ) {
				continue;
			}

			$new_value = &$_POST['bf-metabox-option'][ $metabox_id ];

			foreach ( $metabox_std as $field_key => $_field_value ) {

				// value not passed
				if ( ! isset( $new_value[ $field_key ] ) ) {
					continue;
				}

				$field_value = &$new_value[ $field_key ];

				if ( isset( $metabox['panel-id'] ) ) {
					$std_id = Better_Framework::options()->get_panel_std_id( $metabox['panel-id'] );
				} else {
					$std_id = 'std';
				}

				// Save value if save-std is true or not defined
				if ( ! isset( $metabox_std[ $field_key ]['save-std'] ) || $metabox_std[ $field_key ]['save-std'] == true ) {
					self::update( $post_id, $field_key, $field_value );
				} // Don't Save Default Value
				elseif ( isset( $metabox_std[ $field_key ]['save-std'] ) ) {

					// If style std defined then save it
					if ( isset( $metabox_std[ $field_key ][ $std_id ] ) ) {

						if ( $metabox_std[ $field_key ][ $std_id ] != $field_value ) {
							self::update( $post_id, $field_key, $field_value );
						} else {
							delete_post_meta( $post_id, $field_key );
						}

					} // If style std defined then save it
					elseif ( isset( $metabox_std[ $field_key ]['std'] ) ) {

						if ( $metabox_std[ $field_key ]['std'] != $field_value ) {
							self::update( $post_id, $field_key, $field_value );
						} else {
							delete_post_meta( $post_id, $field_key );
						}

					}

				} // Delete Custom field
				else {
					delete_post_meta( $post_id, $field_key );
				}
			}
		} // foreach
	} // save
}
<?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */


if ( ! function_exists( 'bf_get_post_meta' ) ) {

	/**
	 * Used for retrieving meta fields ofr  posts and pages
	 *
	 * @param null        $key           Field ID
	 * @param null        $post_id       Post ID (Optional)
	 * @param null|string $force_default Default value (Optional)
	 *
	 * @global WPDB       $wpdb          WordPress database access object.
	 *
	 * @return mixed|void
	 */
	function bf_get_post_meta( $key = NULL, $post_id = NULL, $force_default = NULL ) {

		global $wp_query;

		if ( is_null( $post_id ) ) {
			global $post;
			$post_id = isset( $post->ID ) ? $post->ID : 0;
		}

		/**
		 * Detecting the BuddyPress $post object resetting to prevent returning false as default value.
		 *
		 * @see bp_theme_compat_reset_post function for more info
		 */
		static $bp_component_post_id;

		if ( empty( $post_id ) && $wp_query->is_main_query() ) {

			if ( ! isset( $bp_component_post_id ) ) {
				$bp_component_post_id = bf_bp_get_component_page_id();
			}

			$post_id = $bp_component_post_id;
		}

		$meta = get_post_meta( $post_id, $key, true );

		if ( $meta == '' && ! is_null( $force_default ) ) {
			return $force_default;
		}

		// If Meta check for default value
		if ( $meta !== '' ) {
			return $meta;
		}

		// initialize base BF metabox
		if ( ! class_exists( 'BF_Metabox_Core' ) ) {
			Better_Framework()->post_meta();
		}

		foreach ( (array) BF_Metabox_Core::$metabox as $metabox_id => $metabox ) {

			// get style id for current metabox
			if ( isset( $metabox['panel-id'] ) ) {
				$std_id = Better_Framework()->options()->get_panel_std_id( $metabox['panel-id'] );
			} else {
				$std_id = 'std';
			}

			$metabox_std = BF_Metabox_Core::get_metabox_std( $metabox_id );

			if ( isset( $metabox_std[ $key ] ) ) {
				if ( isset( $metabox_std[ $key ][ $std_id ] ) ) {
					return $metabox_std[ $key ][ $std_id ];
				} elseif ( isset( $metabox_std[ $key ]['std'] ) ) {
					return $metabox_std[ $key ]['std'];
				} else {
					return '';
				}
			}

		}

		return '';
	}
}


if ( ! function_exists( 'bf_echo_post_meta' ) ) {

	/**
	 * Used for retrieving meta fields ofr  posts and pages
	 *
	 * @param null        $key           Field ID
	 * @param null        $post_id       Post ID (Optional)
	 * @param null|string $force_default Default value (Optional)
	 *
	 * @return mixed|void
	 */
	function bf_echo_post_meta( $key = NULL, $post_id = NULL, $force_default = NULL ) {
		echo bf_get_post_meta( $key, $post_id, $force_default ); // escaped before
	}
}<?php
die;<?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */


$classes = $this->get_classes( $options );
$iri     = isset( $options['repeater_item'] ) && $options['repeater_item'] == true; // Is this section for a repeater item

$section_classes   = $classes['section'];
$container_classes = $classes['container'];

$heading_classes  = $classes['heading'];
$controls_classes = $classes['controls'];
$explain_classes  = $classes['explain'];

if ( $iri ) {

	$section_classes .= ' ' . $classes['repeater-section'];
	$heading_classes .= ' ' . $classes['repeater-heading'];
	$controls_classes .= ' ' . $classes['repeater-controls'];
	$explain_classes .= ' ' . $classes['repeater-explain'];

} else {

	$section_classes .= ' ' . $classes['nonrepeater-section'];
	$heading_classes .= ' ' . $classes['nonrepeater-heading'];
	$controls_classes .= ' ' . $classes['nonrepeater-controls'];
	$explain_classes .= ' ' . $classes['nonrepeater-explain'];

}

$section_classes .= ' ' . $classes['section-class-by-filed-type'];
$heading_classes .= ' ' . $classes['heading-class-by-filed-type'];
$controls_classes .= ' ' . $classes['controls-class-by-filed-type'];
$explain_classes .= ' ' . $classes['explain-class-by-filed-type'];

if ( empty( $options['desc'] ) ) {
	$section_classes .= ' no-desc ';
}


$section_css_attr = $this->get_section_css_attr( $options );
$section_attr     = $this->get_section_filter_attr( $options );

?>
<div
	class="<?php echo esc_attr( $container_classes ); ?> bf-section-container bf-metabox bf-clearfix" <?php echo $section_css_attr; // escaped before ?> <?php echo $section_attr; // escaped before ?>>
	<div class="<?php echo esc_attr( $section_classes ); ?> bf-clearfix"
	     data-id="<?php echo esc_attr( $options['id'] ); ?>">

		<div class="<?php echo esc_attr( $heading_classes ); ?> bf-clearfix">
			<h3><label
					for="<?php echo esc_attr( $options['input_name'] ); ?>"><?php echo esc_html( $options['name'] ); ?></label>
			</h3>
		</div>

		<div class="<?php echo esc_attr( $controls_classes ); ?> bf-clearfix">
			<?php echo $input; // escaped before ?>
		</div>

		<?php if ( ! empty( $options['desc'] ) ) { ?>
			<div
				class="<?php echo esc_attr( $explain_classes ); ?> bf-clearfix"><?php echo wp_kses( $options['desc'], bf_trans_allowed_html() ); ?></div>
		<?php } ?>

	</div>
</div><?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */

?>
<div class="bf-section-container bf-clearfix">
	<div class="bf-section-hr bf-clearfix">
		<?php echo $input; // escaped before ?>
	</div>
</div><?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */

$style = ! empty( $options['layout'] ) ? $options['layout'] : 'style-1';

?>
<div class="bf-section-container bf-metabox bf-clearfix">
	<div class="bf-section-heading bf-clearfix <?php echo $style; ?>"
	     data-id="<?php echo esc_attr( $options['id'] ); ?>"
	     id="<?php echo esc_attr( $options['id'] ); ?>">
		<div class="bf-section-heading-title bf-clearfix">
			<h3><?php echo esc_html( $options['name'] ); ?></h3>
		</div>
		<?php if ( ! empty( $options['desc'] ) ) { ?>
			<div
				class="bf-section-heading-desc bf-clearfix"><?php echo wp_kses( $options['desc'], bf_trans_allowed_html() ); ?></div>
		<?php } ?>
	</div>
</div><?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */


$classes = $this->get_classes( $options );
$iri     = isset( $options['repeater_item'] ) && $options['repeater_item'] == true; // Is this section for a repeater item

$section_classes = $classes['section'] . ' bf-widget-field-section';

$heading_classes  = $classes['heading'] . ' bf-heading';
$controls_classes = $classes['controls'] . ' bf-control not-prepared';
$explain_classes  = $classes['explain'] . ' bf-desc';

if ( $iri ) {

	$section_classes  .= ' ' . $classes['repeater-section'];
	$heading_classes  .= ' ' . $classes['repeater-heading'];
	$controls_classes .= ' ' . $classes['repeater-controls'];
	$explain_classes  .= ' ' . $classes['repeater-explain'];

} else {

	$section_classes  .= ' ' . $classes['nonrepeater-section'];
	$heading_classes  .= ' ' . $classes['nonrepeater-heading'];
	$controls_classes .= ' ' . $classes['nonrepeater-controls'];
	$explain_classes  .= ' ' . $classes['nonrepeater-explain'];

}

$section_classes  .= ' ' . $classes['section-class-by-filed-type'];
$heading_classes  .= ' ' . $classes['heading-class-by-filed-type'];
$controls_classes .= ' ' . $classes['controls-class-by-filed-type'];
$explain_classes  .= ' ' . $classes['explain-class-by-filed-type'];


if ( ! isset( $options['info-type'] ) ) {
	$options['info-type'] = 'info';
}

if ( ! isset( $options['state'] ) ) {
	$options['state'] = 'open';
}

$section_attr = $this->get_section_filter_attr( $options );

?>
<div class="bf-section-container bf-metabox bf-clearfix" <?php echo $section_attr; ?>>
	<div
			class="bf-section-info <?php echo esc_attr( $options['info-type'] ); ?> <?php echo esc_attr( $options['state'] ); ?> bf-clearfix">
		<div class="bf-section-info-title bf-clearfix">
			<h3><?php

				switch ( $options['info-type'] ) {

					case 'help':
						echo '<i class="fa fa-support"></i> ';
						break;

					case 'info':
						echo '<i class="fa fa-info"></i> ';
						break;

					case 'warning':
						echo '<i class="fa fa-warning"></i> ';
						break;

					case 'danger':
						echo '<i class="fa fa-exclamation"></i> ';
						break;

					default:
						echo '<i class="fa fa-info"></i> ';
						break;


				}

				echo esc_html( $options['name'] ); ?></h3>
		</div>
		<div class="<?php echo esc_attr( $controls_classes ); ?>  bf-clearfix">
			<?php echo $input; // escaped before ?>
		</div>
	</div>
</div><?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */


if ( ! function_exists( 'bf_get_query_var_paged' ) ) {
	/**
	 * Handy function used to find current page paged query var
	 * This is home page firendly
	 *
	 * @since 2.0
	 *
	 * @param int $default
	 *
	 * @return int|mixed
	 */
	function bf_get_query_var_paged( $default = 1 ) {

		return get_query_var( 'paged' ) ? get_query_var( 'paged' ) : ( get_query_var( 'page' ) ? get_query_var( 'page' ) : $default );

	}
}


if ( ! function_exists( 'bf_is_search_page' ) ) {
	/**
	 * Used for detecting current page is search page or not
	 */
	function bf_is_search_page() {

		if ( stripos( $_SERVER['REQUEST_URI'], '/?s=' ) === false && stripos( $_SERVER['REQUEST_URI'], '/search/' ) === false ) {
			return false;
		} elseif ( ! is_search() ) {
			return false;
		}

		return true;
	}
}


if ( ! function_exists( 'bf_get_author_archive_user' ) ) {
	/**
	 * Used for finding user in author archive page
	 *
	 * @since   2.0
	 * @return WP_User|false WP_User object on success, false on failure.
	 */
	function bf_get_author_archive_user() {

		global $author_name, $author;

		return isset( $_GET['author_name'] ) ? get_user_by( 'slug', $author_name ) : get_userdata( intval( $author ) );

	}
}


if ( ! function_exists( 'bf_get_admin_current_post_type' ) ) {
	/**
	 * Used to check for the current post type, works when creating or editing a
	 * new post, page or custom post type.
	 *
	 * @since    1.0
	 * @return    string [custom_post_type], page or post
	 */
	function bf_get_admin_current_post_type() {

		// admin side
		if ( is_admin() ) {

			$uri = isset( $_SERVER['REQUEST_URI'] ) ? $_SERVER['REQUEST_URI'] : NULL;

			if ( isset( $uri ) ) {

				$uri_parts = parse_url( $uri );

				$file = basename( $uri_parts['path'] );

				$_check = array(
					'post.php'     => '',
					'post-new.php' => '',
				);

				// Post types
				if ( $uri AND isset( $_check[ $file ] ) ) {
					$post_id = bf_get_admin_current_post_id();

					$post_type = isset( $_GET['post_type'] ) ? $_GET['post_type'] : NULL;

					$post_type = $post_id ? get_post_type( $post_id ) : $post_type;

					if ( isset( $post_type ) ) {

						return $post_type;

					} else {

						// because of the 'post.php' and 'post-new.php' checks above, we can default to 'post'
						return 'post';

					}
				} // Taxonomies
				elseif ( $uri AND ( $file === 'edit-tags.php' || $file === 'term.php' ) ) {

					$taxonomy = isset( $_GET['taxonomy'] ) ? $_GET['taxonomy'] : NULL;

					return $taxonomy;

				} // Pages custom css
				elseif ( isset( $_GET['bs_per_page_custom_css'] ) && ! empty( $_GET['bs_per_page_custom_css'] ) ) {

					if ( isset( $_GET['post_id'] ) && ! empty( $_GET['post_id'] ) ) {

						return get_post_type( $_GET['post_id'] );

					}

				}
			}

		} // if used in front end
		else {

			return get_post_type( bf_get_admin_current_post_id() );

		}


		return NULL;
	}
}


if ( ! function_exists( 'bf_get_admin_current_post_id' ) ) {
	/**
	 * Used to get the current post id.
	 *
	 * @since    1.0
	 * @return    int post ID
	 */
	function bf_get_admin_current_post_id() {

		global $post;

		$p_post_id = isset( $_POST['post_ID'] ) ? $_POST['post_ID'] : NULL;

		$g_post_id = isset( $_GET['post'] ) ? $_GET['post'] : NULL;

		$post_id = $g_post_id ? $g_post_id : $p_post_id;

		$post_id = isset( $post->ID ) ? $post->ID : $post_id;

		if ( isset( $post_id ) ) {
			return (integer) $post_id;
		} else {
			return 0;
		}

	}
}<?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */


if ( ! function_exists( 'bf_enqueue_modal' ) ) {
	/**
	 * Enqueue BetterFramework modals safely
	 *
	 * @param $modal_key
	 */
	function bf_enqueue_modal( $modal_key = '' ) {

		Better_Framework::assets_manager()->add_modal( $modal_key );

	}
}


if ( ! function_exists( 'bf_enqueue_style' ) ) {
	/**
	 * @see   wp_enqueue_style for more documentation.
	 *
	 * @param string           $handle
	 * @param string           $src
	 * @param array            $deps
	 * @param string           $file_path
	 * @param string|bool|null $ver
	 */
	function bf_enqueue_style( $handle, $src = '', $deps = array(), $file_path = '', $ver = false ) {

		// check list to change for backward compatibility
		$check = array(
			'better-social-font-icon' => 'bs-icons'
		);

		if ( isset( $check[ $handle ] ) ) {
			$handle = $check[ $handle ];
		}

		if ( ! bf_booster_is_active( 'minify-css' ) ) {
			wp_enqueue_style( $handle, $src, $deps, $ver );

			return;
		}

		if ( $src ) {
			bf_styles()->add( $handle, $src, $deps, $ver, 'all' );
		}

		if ( $file_path ) {
			bf_styles()->files_path[ $handle ] = $file_path;
		}

		bf_styles()->enqueue( $handle );
	}
}


if ( ! function_exists( 'bf_enqueue_wp_script_deps' ) ) {

	function bf_enqueue_wp_script_deps( $handle ) {

		if ( ! isset( bf_scripts()->registered[ $handle ] ) ) {
			return;
		}

		$deps = &bf_scripts()->registered[ $handle ]->deps;
		foreach ( $deps as $index => $dep ) {

			if ( ! isset( bf_scripts()->registered[ $dep ] ) ) {

				if ( ! isset( wp_scripts()->registered[ $dep ] ) ) {
					continue;
				}

				unset( $deps[ $index ] );

				if ( wp_scripts()->registered[ $dep ]->args === 1 ) {
					wp_scripts()->registered[ $dep ]->args = NULL;
				}

				if ( ! wp_script_is( $dep ) ) {
					wp_enqueue_script( $dep );
				}

			} else {

				bf_enqueue_wp_script_deps( $dep );
			}
		}
	}
}


if ( ! function_exists( 'bf_enqueue_script' ) ) {
	/**
	 * Enqueue BetterFramework scripts safely
	 *
	 * @see   wp_enqueue_script for more documentation.
	 *
	 * @param string           $handle
	 * @param string           $src
	 * @param array            $deps
	 * @param string           $file_path
	 * @param string|bool|null $ver
	 */
	function bf_enqueue_script( $handle, $src = '', $deps = array(), $file_path = '', $ver = false ) {

		if ( ! bf_booster_is_active( 'minify-js' ) ) {
			wp_enqueue_script( $handle, $src, $deps, $ver, true );

			return;
		}

		if ( $src ) {
			bf_scripts()->add( $handle, $src, $deps, $ver, '1' );
		}

		if ( $file_path ) {
			bf_scripts()->files_path[ $handle ] = $file_path;
		}

		bf_enqueue_wp_script_deps( $handle );

		bf_scripts()->enqueue( $handle );
	}
}


if ( ! function_exists( 'bf_register_script' ) ) {

	function bf_register_script( $handle, $src = '', $deps = array(), $file_path = '', $ver = false ) {

		if ( ! bf_booster_is_active( 'minify-js' ) ) {
			wp_register_script( $handle, $src, $deps, $ver );

			return;
		}

		if ( $file_path ) {
			bf_scripts()->files_path[ $handle ] = $file_path;
		}

		bf_scripts()->add( $handle, $src, $deps, $ver, '1' );
	}
}


if ( ! function_exists( 'bf_deregister_script' ) ) {

	function bf_deregister_script( $handle ) {

		if ( bf_booster_is_active( 'minify-js' ) ) {
			bf_scripts()->remove( $handle );
		} else {
			bf_call_func( 'wp' . '_' . 'deregister' . '_script', $handle );
		}
	}
}


if ( ! function_exists( 'bf_print_scripts' ) ) {

	/**
	 * Print scripts in document head that are in the $handles queue.
	 *
	 * @param string|bool|array $handles
	 *
	 * @return array
	 */
	function bf_print_scripts( $handles = false ) {

		if ( ! bf_booster_is_active( 'minify-js' ) ) {
			return wp_print_scripts( $handles );
		}

		return bf_scripts()->do_items( $handles );
	}
}


if ( ! function_exists( 'bf_add_style_file' ) ) {

	/**
	 * Append inline css content into a file
	 *
	 * @param string   $id unique name
	 * @param callable $content_cb
	 *
	 * @since 2.9.0
	 */
	function bf_add_style_file( $id, $content_cb ) {

		bf_styles()->add_css_file( $id, $content_cb );
	}
}


if ( ! function_exists( 'bf_register_style' ) ) {

	function bf_register_style( $handle, $src = '', $deps = array(), $file_path = '', $ver = false, $media = '1' ) {

		if ( ! bf_booster_is_active( 'minify-css' ) ) {
			wp_register_style( $handle, $src, $deps, $ver );

			return;
		}

		if ( $file_path ) {
			bf_styles()->files_path[ $handle ] = $file_path;
		}

		bf_styles()->add( $handle, $src, $deps, $ver, $media );
	}
}


if ( ! function_exists( 'bf_deregister_style' ) ) {

	function bf_deregister_style( $handle ) {

		if ( bf_booster_is_active( 'minify-css' ) ) {
			bf_styles()->remove( $handle );
		} else {
			wp_deregister_style( $handle );
		}
	}
}


if ( ! function_exists( 'bf_print_styles' ) ) {

	/**
	 * Print scripts in document head that are in the $handles queue.
	 *
	 * @param string|bool|array $handles
	 *
	 * @return array
	 */
	function bf_print_styles( $handles ) {

		if ( ! bf_booster_is_active( 'minify-css' ) ) {
			return wp_print_styles( $handles );
		}

		return bf_styles()->do_items( $handles );
	}
}


if ( ! function_exists( 'bf_add_jquery_js' ) ) {
	/**
	 * Used for adding inline js to front end
	 *
	 * @param string $code
	 * @param bool   $to_top
	 * @param bool   $force
	 */
	function bf_add_jquery_js( $code = '', $to_top = false, $force = false ) {

		Better_Framework::assets_manager()->add_jquery_js( $code, $to_top, $force );

	}
}


if ( ! function_exists( 'bf_add_js' ) ) {
	/**
	 * Used for adding inline js to front end
	 *
	 * @param string $code
	 * @param bool   $to_top
	 * @param bool   $force
	 */
	function bf_add_js( $code = '', $to_top = false, $force = false ) {

		Better_Framework::assets_manager()->add_js( $code, $to_top, $force );

	}
}


if ( ! function_exists( 'bf_add_css' ) ) {
	/**
	 * Used for adding inline css to front end
	 *
	 * @param string $code
	 * @param bool   $to_top
	 * @param bool   $force
	 */
	function bf_add_css( $code = '', $to_top = false, $force = false ) {

		Better_Framework::assets_manager()->add_css( $code, $to_top, $force );

	}
}


if ( ! function_exists( 'bf_add_admin_js' ) ) {
	/**
	 * Used for adding inline js to back end
	 *
	 * @param string $code
	 * @param bool   $to_top
	 * @param bool   $force
	 */
	function bf_add_admin_js( $code = '', $to_top = false, $force = false ) {

		Better_Framework::assets_manager()->add_admin_js( $code, $to_top, $force );

	}
}


if ( ! function_exists( 'bf_add_admin_css' ) ) {
	/**
	 * Used for adding inline css to back end
	 *
	 * @param string $code
	 * @param bool   $to_top
	 * @param bool   $force
	 */
	function bf_add_admin_css( $code = '', $to_top = false, $force = false ) {

		Better_Framework::assets_manager()->add_admin_css( $code, $to_top, $force );

	}
}


if ( ! function_exists( 'bf_append_suffix' ) ) {
	/**
	 * Used for adding .min quickly
	 *
	 * @param string $before
	 * @param string $after
	 *
	 * @return string
	 */
	function bf_append_suffix( $before = '', $after = '' ) {

		static $suffix;

		if ( is_null( $suffix ) ) {
			$suffix = bf_is( 'dev' ) ? '' : '.min';
		}

		return $before . $suffix . $after;
	}
}

if ( ! function_exists( 'bf_enqueue_tinymce_style' ) ) {
	/**
	 * Register style for tinymce view add-on
	 *
	 * @param string $type inline|custom|extra|registered
	 * @param string $data
	 *                     bf_add_style_file() handle id if $type == extra
	 *                     unique handle id              if $type == registered
	 *                     custom inline css code        if $type == inline
	 *                     stylesheet url                if $type == inline
	 *
	 *
	 * @since 3.0.0
	 */
	function bf_enqueue_tinymce_style( $type, $data ) {

		$enqueue = array();

		if ( $type === 'inline' ) {
			$enqueue = array(
				'type' => 'inline',
				'data' => $data,
			);
		} elseif ( $type === 'custom' ) {
			$enqueue = array(
				'type' => 'custom',
				'url'  => $data,
			);
		} elseif ( $type === 'extra' ) {
			$enqueue = array(
				'type'    => 'extra',
				'handles' => (array) $data,
			);
		} elseif ( $type === 'registered' ) {
			$enqueue = array(
				'type'    => 'registered',
				'handles' => (array) $data,
			);
		}
		if ( empty( BF_Shortcodes_Manager::$tinymce_extra_enqueues['styles'] ) ) {
			BF_Shortcodes_Manager::$tinymce_extra_enqueues['styles'] = array();
		}

		BF_Shortcodes_Manager::$tinymce_extra_enqueues['styles'][] = $enqueue;
	}
}


if ( ! function_exists( '_bf_normalize_enqueue_tinymce' ) ) {
	/**
	 * @see   bf_enqueue_tinymce_style for documentation
	 * @see   BF_Shortcodes_Manager::tinymce_view_shortcode
	 *
	 * @param string $type
	 * @param string $data
	 *
	 * @since 3.0.0
	 * @return array
	 */
	function _bf_normalize_enqueue_tinymce( $type, $data ) {

		$enqueue = array();

		if ( $type === 'inline' ) {
			$enqueue = array(
				'type' => 'inline',
				'data' => $data,
			);
		} elseif ( $type === 'custom' ) {
			$enqueue = array(
				'type' => 'custom',
				'url'  => $data,
			);
		} elseif ( $type === 'extra' ) {
			$enqueue = array(
				'type'    => 'extra',
				'handles' => (array) $data,
			);
		} elseif ( $type === 'registered' ) {
			$enqueue = array(
				'type'    => 'registered',
				'handles' => (array) $data,
			);
		}

		return $enqueue;
	}

}
if ( ! function_exists( 'bf_enqueue_tinymce_style' ) ) {
	/**
	 * Register style for tinymce view add-on
	 *
	 * @param string $type inline|custom|extra|registered
	 * @param string $data
	 *                     bf_add_style_file() handle id if $type == extra
	 *                     unique handle id              if $type == registered
	 *                     custom inline css code        if $type == inline
	 *                     stylesheet url                if $type == custom
	 *
	 *
	 * @since 3.0.0
	 * @return true on success or false on failure
	 */
	function bf_enqueue_tinymce_style( $type, $data ) {

		if ( class_exists( 'BF_Shortcodes_Manager' ) ) {

			if ( empty( BF_Shortcodes_Manager::$tinymce_extra_enqueues['styles'] ) ) {
				BF_Shortcodes_Manager::$tinymce_extra_enqueues['styles'] = array();
			}

			BF_Shortcodes_Manager::$tinymce_extra_enqueues['styles'][] = _bf_normalize_enqueue_tinymce( $type, $data );

			return true;
		}

		return false;
	}
}
if ( ! function_exists( 'bf_enqueue_tinymce_script' ) ) {
	/**
	 * Register style for tinymce view add-on
	 *
	 * @param string $type inline|custom|extra|registered
	 * @param string $data
	 *                     bf_add_style_file() handle id if $type == extra
	 *                     unique handle id              if $type == registered
	 *                     custom inline css code        if $type == inline
	 *                     stylesheet url                if $type == custom
	 *
	 *
	 * @since 3.0.0
	 * @return true on success or false on failure
	 */
	function bf_enqueue_tinymce_script( $type, $data ) {

		if ( class_exists( 'BF_Shortcodes_Manager' ) ) {
			if ( empty( BF_Shortcodes_Manager::$tinymce_extra_enqueues['scripts'] ) ) {
				BF_Shortcodes_Manager::$tinymce_extra_enqueues['scripts'] = array();
			}

			BF_Shortcodes_Manager::$tinymce_extra_enqueues['scripts'][] = _bf_normalize_enqueue_tinymce( $type, $data );

			return true;
		}

		return false;
	}
}
<?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */


// Callback For Video Format auto-embed
add_filter( 'better-framework/content/video-embed', 'bf_auto_embed_content' );
add_filter( 'better-framework/content/auto-embed', 'bf_auto_embed_content' );


if ( ! function_exists( 'bf_auto_embed_content' ) ) {
	/**
	 * Filter Callback: Auto-embed using a link
	 *
	 * @param string $content
	 *
	 * @return string
	 */
	function bf_auto_embed_content( $content ) {

		//
		// Custom External Videos
		//
		preg_match( '#^(http|https)://.+\.(mp4|m4v|webm|ogv|wmv|flv)$#i', $content, $matches );
		if ( ! empty( $matches[0] ) ) {
			return array(
				'type'    => 'external-video',
				'content' => do_shortcode( '[video src="' . $matches[0] . '"]' ),
			);
		}


		//
		// Custom External Audio
		//
		preg_match( '#^(http|https)://.+\.(mp3|m4a|ogg|wav|wma)$#i', $content, $matches );
		if ( ! empty( $matches[0] ) ) {
			return array(
				'type'    => 'external-audio',
				'content' => do_shortcode( '[audio src="' . $matches[0] . '"]' ),
			);
		}


		//
		// Default embeds and other registered
		//

		global $wp_embed;

		if ( ! is_object( $wp_embed ) ) {
			return array(
				'type'    => 'unknown',
				'content' => $content,
			);
		}

		$embed = $wp_embed->autoembed( $content );

		if ( $embed !== $content ) {
			return array(
				'type'    => 'embed',
				'content' => $embed,
			);
		}

		// No embed detected!
		return array(
			'type'    => 'unknown',
			'content' => $content,
		);
	}
}
<?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */


if ( ! function_exists( 'bf_get_menu_location_name_from_id' ) ) {
	/**
	 * Used For retrieving current sidebar
	 *
	 * #since 2.0
	 *
	 * @param $location
	 *
	 * @return
	 */
	function bf_get_menu_location_name_from_id( $location ) {

		$locations = get_registered_nav_menus();

		if ( isset( $locations[ $location ] ) ) {
			return $locations[ $location ];
		}

	}
}


if ( ! function_exists( 'bf_get_menus_option' ) ) {
	/**
	 * Handy function to get select option for using this as deferred callback
	 *
	 * @since 2.5.5
	 *
	 * @param bool   $default
	 * @param string $default_label
	 * @param string $menus_label
	 *
	 * @return array
	 */
	function bf_get_menus_option( $default = false, $default_label = '', $menus_label = '', $args = array() ) {

		$menus = array();

		if ( $default ) {
			$menus['default'] = ! empty( $default_label ) ? $default_label : __( 'Default Navigation', 'better-studio' );
		}

		$menus[] = array(
			'label'   => ! empty( $menus_label ) ? $menus_label : __( 'Menus', 'better-studio' ),
			'options' => bf_get_menus(),
		);

		if ( isset( $args['append'] ) ) {
			$menus = array_merge( $menus, $args['append'] );
		}

		return $menus;

	} // bf_get_menus_option
} // if


if ( ! function_exists( 'bf_get_menus_animations_option' ) ) {
	/**
	 * Handy function to get select option of all menu animations for using as deferred callback
	 *
	 * @since 2.5.5
	 *
	 * @param array $args used for future changes
	 *
	 * @return array
	 */
	function bf_get_menus_animations_option( $args = array() ) {

		$animations = array(

			'default' => __( '-- Default --', 'better-studio' ),
			'none'    => __( 'No Animation', 'better-studio' ),
			'random'  => __( 'Random Animation', 'better-studio' ),

			array(
				'label'   => __( 'Fading', 'better-studio' ),
				'options' => array(
					'fade'       => __( 'Simple Fade', 'better-studio' ),
					'slide-fade' => __( 'Fading Slide', 'better-studio' ),
				),
			),

			array(
				'label'   => __( 'Attention Seekers', 'better-studio' ),
				'options' => array(
					'bounce' => __( 'Bounce', 'better-studio' ),
					'tada'   => __( 'Tada', 'better-studio' ),
					'shake'  => __( 'Shake', 'better-studio' ),
					'swing'  => __( 'Swing', 'better-studio' ),
					'wobble' => __( 'Wobble', 'better-studio' ),
					'buzz'   => __( 'Buzz', 'better-studio' ),
				),
			),

			array(
				'label'   => __( 'Sliding', 'better-studio' ),
				'options' => array(
					'slide-top-in'    => __( 'Slide &#x2193; In', 'better-studio' ),
					'slide-bottom-in' => __( 'Slide &#x2191; In', 'better-studio' ),
					'slide-left-in'   => __( 'Slide &#x2192; In', 'better-studio' ),
					'slide-right-in'  => __( 'Slide &#x2190; In', 'better-studio' ),
				),
			),

			array(
				'label'   => __( 'Flippers', 'better-studio' ),
				'options' => array(
					'filip-in-x' => __( 'Filip In X - &#x2195;', 'better-studio' ),
					'filip-in-y' => __( 'Filip In Y - &#x2194;', 'better-studio' ),
				),
			),

		);

		return $animations;

	} // bf_get_menus_animations_option
} // if


<?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */


if ( ! function_exists( 'bf_get_current_sidebar' ) ) {
	/**
	 * Used For retrieving current sidebar
	 *
	 * @since 2.5.5
	 *
	 * @return string
	 */
	function bf_get_current_sidebar() {
		return Better_Framework::widget_manager()->get_current_sidebar();
	}
}


if ( ! function_exists( 'bf_get_sidebar_name_from_id' ) ) {
	/**
	 * Used For retrieving current sidebar
	 *
	 * @since 2.0
	 *
	 * @param $sidebar_id
	 *
	 * @return
	 */
	function bf_get_sidebar_name_from_id( $sidebar_id ) {

		global $wp_registered_sidebars;

		if ( isset( $wp_registered_sidebars[ $sidebar_id ] ) ) {
			return $wp_registered_sidebars[ $sidebar_id ]['name'];
		}

	}
}
<?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */


if ( ! function_exists( 'bf_shortcode_show_title' ) ) {
	/**
	 * Used to show shortcodes heading in standard way!
	 * You can redefine this function or use 'better-framework/shortcodes/title' filter
	 * for changing values.
	 *
	 * @param array $atts
	 *
	 * @since 2.5.5
	 *
	 * @return string
	 */
	function bf_shortcode_show_title( $atts = array() ) {

		if ( isset( $atts['show_title'] ) && $atts['show_title'] == false ) {
			return;
		}

		if ( isset( $atts['hide_title'] ) && $atts['hide_title'] == true ) {
			return;
		}

		if ( empty( $atts['title'] ) ) {
			return;
		}

		if ( bf_get_current_sidebar() && bf_get_current_sidebar() !== 'bs-vc-sidebar-column' ) {
			return;
		}

		$result = apply_filters( 'better-framework/shortcodes/title', $atts );

		if ( is_string( $result ) ) {
			echo $result; // escaped before
		}

	}
}


if ( ! function_exists( 'bf_shortcode_custom_css_prop' ) ) {
	/**
	 * @param        $css
	 * @param        $prop_name
	 * @param string $default
	 *
	 * @return string
	 *
	 * @since 2.5.2
	 */
	function bf_shortcode_custom_css_prop( $css, $prop_name, $default = '' ) {

		preg_match( '/' . $prop_name . ':([^!]*)/', $css, $css );

		if ( ! empty( $css[1] ) ) {
			return trim( $css[1] );
		}

		return $default;
	}
}


if ( ! function_exists( 'bf_shortcode_custom_css_class' ) ) {
	/**
	 * Custom function used to get custom css class name form VC/Shortcode css atribute
	 *
	 * @param        $param_value
	 * @param string $prefix
	 * @param string $css_key
	 *
	 * @return string
	 *
	 * @since 2.5.2
	 */
	function bf_shortcode_custom_css_class( $param_value, $prefix = '', $css_key = 'css' ) {

		$css_class = '';

		// prepare field
		if ( is_array( $param_value ) && ! empty( $param_value[ $css_key ] ) ) {
			$param_value = $param_value[ $css_key ];
		} else {
			return $css_class;
		}

		if ( is_string( $param_value ) ) {
			$css_class = preg_match( '/\s*\.([^\{]+)\s*\{\s*([^\}]+)\s*\}\s*/', $param_value ) ? $prefix . preg_replace( '/\s*\.([^\{]+)\s*\{\s*([^\}]+)\s*\}\s*/', '$1', $param_value ) : '';
		}

		return $css_class;
	}
}


if ( ! function_exists( 'bf_vc_edit_form_classes' ) ) {
	/**
	 * Filter: vc_edit_form_class
	 * Description: add some class to visual composer edit form. used in admin-scripts.js setup_interactive_fields_for_vc() method
	 *
	 * @see setup_interactive_fields_for_vc method on `Better_Framework` JS Object
	 *
	 * @param array $classes
	 * @param array $atts
	 * @param array $params
	 *
	 * @return mixed
	 */
	function bf_vc_edit_form_classes( $classes, $atts, $params ) {

		$added_fields      = array();
		$interactive_added = false;
		foreach ( $params as $param ) {
			if ( ! empty( $param['show_on'] ) ) {
				if ( ! $interactive_added ) {
					array_push( $classes, 'bf-interactive-fields', 'bf-has-filters' );
					$interactive_added = true;
				}

				foreach ( (array) $param['show_on'] as $conditions ) {
					foreach ( (array) $conditions as $condition ) {
						$field_name = explode( '=', $condition, 2 );
						$field_name = $field_name[0];
						if ( ! in_array( $field_name, $added_fields ) ) {
							array_push( $classes, 'bf-filter-field-' . $field_name );
							$added_fields[] = $field_name;
						}
					}
				}
			}
		}

		return array_unique( $classes );
	}

	add_filter( 'vc_edit_form_class', 'bf_vc_edit_form_classes', 8, 3 );
}


if ( ! function_exists( 'bf_vc_layout_state' ) ) {
	/**
	 * Returns VC Columns state
	 *
	 * @return array
	 */
	function bf_vc_layout_state() {

		global $_bf_override_vc_layout_state, $_bf_vc_column_atts, $_bf_vc_column_inner_atts, $_bf_vc_row_columns;

		if ( ! empty( $_bf_override_vc_layout_state ) ) {
			return $_bf_override_vc_layout_state; # Allow to override state value
		}

		$_bf_vc_column_atts = array_filter( (array) $_bf_vc_column_atts );
		$_bf_vc_column_atts = bf_merge_args( $_bf_vc_column_atts, array(
			'width'      => '1',
			'list'       => $_bf_vc_row_columns,
			'list_count' => $_bf_vc_row_columns ? count( $_bf_vc_row_columns ) : 0,
		) );

		$_bf_vc_column_inner_atts = array_filter( (array) $_bf_vc_column_inner_atts );
		$_bf_vc_column_inner_atts = bf_merge_args( $_bf_vc_column_inner_atts, array(
			'width' => '1'
		) );

		return array(
			'column' => $_bf_vc_column_atts,
			'row'    => $_bf_vc_column_inner_atts,
		);
	}
}


add_filter( 'vc_shortcode_set_template_vc_column', 'bf_vc_column_filter' );

if ( ! function_exists( 'bf_vc_column_filter' ) ) {
	/**
	 * Callback: Handy filter to calculate columns state
	 * Filter: vc_shortcode_set_template_vc_column
	 *
	 * @param $file
	 *
	 * @return string
	 */
	function bf_vc_column_filter( $file ) {

		global $_vc_column_template_file;

		$_vc_column_template_file = $file;

		return BF_PATH . 'vc-extend/vc_column.php';
	}
}


add_filter( 'vc_shortcode_set_template_vc_column_inner', 'bf_vc_column_inner_filter' );

if ( ! function_exists( 'bf_vc_column_inner_filter' ) ) {
	/**
	 * Callback: Handy filter to calculate columns state
	 * Filter: vc_shortcode_set_template_vc_column_inner
	 *
	 * @param $file
	 *
	 * @return string
	 */
	function bf_vc_column_inner_filter( $file ) {

		global $_vc_column_inner_template_file;

		$_vc_column_inner_template_file = $file;

		return BF_PATH . '/vc-extend/vc_column_inner.php';
	}
}


add_filter( 'better-framework/shortcodes/design-fields', 'bf_shortcpdes_design_fields', 10, 2 );

if ( ! function_exists( 'bf_shortcpdes_design_fields' ) ) {
	/**
	 * Generates general design options for shortcodes
	 *
	 * @param array  $fields
	 * @param string $shortcode_id
	 *
	 * @return array
	 */
	function bf_shortcpdes_design_fields( $fields = array(), $shortcode_id = '' ) {

		$fields['design_tab']       = array(
			'type' => 'tab',
			'name' => __( 'Design Options', 'better-studio' ),
			'id'   => 'design_tab',
		);
		$fields['bs-show-desktop']  = array(
			"type"           => 'switchery',
			"name"           => __( 'Show on Desktop', 'better-studio' ),
			"id"             => 'bs-show-desktop',
			'section_class'  => 'style-floated-left bordered bf-css-edit-switch',
			//
			"vc_admin_label" => false,
		);
		$fields['bs-show-tablet']   = array(
			"type"           => 'switchery',
			"name"           => __( 'Show on Tablet Portrait', 'better-studio' ),
			"id"             => 'bs-show-tablet',
			'section_class'  => 'style-floated-left bordered bf-css-edit-switch',
			'group'          => __( 'Design options', 'better-studio' ),
			//
			"vc_admin_label" => false,
		);
		$fields['bs-show-phone']    = array(
			"type"           => 'switchery',
			"name"           => __( 'Show on Phone', 'better-studio' ),
			"id"             => 'bs-show-phone',
			'section_class'  => 'style-floated-left bordered bf-css-edit-switch',
			//
			"vc_admin_label" => false,
		);
		$fields['css']              = array(
			'type'           => 'css_editor',
			'name'           => __( 'CSS box', 'better-studio' ),
			'id'             => 'css',
			"vc_admin_label" => false,
		);
		$fields['custom-css-class'] = array(
			'type'           => 'text',
			'name'           => __( 'Custom CSS Class', 'better-studio' ),
			'id'             => 'custom-css-class',
			'section_class'  => 'bf-section-two-column',
			//
			'vc_admin_label' => false,
		);
		$fields['custom-id']        = array(
			'type'           => 'text',
			'name'           => __( 'Custom ID', 'better-studio' ),
			'id'             => 'custom-id',
			'value'          => '',
			'section_class'  => 'bf-section-two-column',
			//
			'vc_admin_label' => false,
		);

		return $fields;
	}
}
<?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */


if ( ! function_exists( 'bf_get_current_lang_raw' ) ) {
	/**
	 * Used for finding current language in multilingual
	 *
	 * @sine 2.0
	 *
	 * @return string
	 */
	function bf_get_current_lang_raw() {

		static $lang;

		if ( $lang ) {
			return $lang;
		}

		// WPML : https://wpml.org/
		if ( defined( 'ICL_SITEPRESS_VERSION' ) ) {

			$lang = icl_get_current_language();

			// Fix conditions WPML is active but not setup
			if ( is_null( $lang ) ) {
				$lang = 'none';
			}

		} // xili-language : https://wordpress.org/plugins/xili-language/
		elseif ( function_exists( 'xili_curlang' ) ) {

			// Tip for separating admin language when user selects specific locale
			if ( is_admin() ) {

				// get all xili active languages
				$languages = bf_get_all_languages();

				// get current locale
				$locale = get_locale();

				foreach ( (array) $languages as $_lang ) {

					if ( $_lang['locale'] == $locale ) {
						$lang = $_lang['id'];
					}

				}

			} else {
				$lang = xili_curlang();
			}

			if ( empty( $lang ) ) {
				$lang = 'all';
			}
		} // qTranslate : http://www.qianqin.de/qtranslate/
		elseif ( function_exists( 'qtrans_getLanguage' ) ) {
			$lang = qtrans_getLanguage();
		} // WPGlobe : http://www.wpglobus.com/
		elseif ( class_exists( 'WPGlobus' ) ) {

			// Tip for separating admin language when user selects specific locale
			if ( is_admin() ) {

				// get all xili active languages
				$languages = bf_get_all_languages();

				// get current locale
				$locale = get_locale();

				foreach ( (array) $languages as $_lang ) {

					if ( $_lang['locale'] == $locale ) {
						$lang = $_lang['id'];
					}

				}

			} else {
				$lang = WPGlobus::Config()->language;
			}

		} // Polylang : https://wordpress.org/plugins/polylang/
		elseif ( function_exists( 'pll_languages_list' ) ) {
			$lang = pll_current_language();

			$langs_list = pll_languages_list();

			// Fix conditions Polylang is active but not setup
			if ( count( $langs_list ) == 0 ) {
				$lang = 'none';
			} elseif ( $lang == false ) {
				$lang = 'all';
			}

		} else {
			$lang = 'none';
		}

		return $lang;
	}
}


if ( ! function_exists( 'bf_get_current_lang' ) ) {
	/**
	 * Used for finding current language in multilingual
	 *
	 * @sine 2.0
	 *
	 * @return string
	 */
	function bf_get_current_lang() {

		$lang = bf_get_current_lang_raw();

		// Default language is en!
		if ( $lang == 'en' ) {
			$lang = 'none';
		}

		return $lang;
	}
}


if ( ! function_exists( 'bf_get_all_languages' ) ) {
	/**
	 * Returns all active multilingual languages
	 *
	 * @since 2.0
	 *
	 * @return array
	 */
	function bf_get_all_languages() {

		$languages = array();

		// WPML : https://wpml.org/
		if ( defined( 'ICL_SITEPRESS_VERSION' ) ) {

			global $sitepress;

			// get filtered active language informations
			$temp_lang = icl_get_languages( 'skip_missing=1' );

			foreach ( $temp_lang as $lang ) {

				// Get language raw data from DB
				$_lang = $sitepress->get_language_details( $lang['language_code'] );

				$languages[] = array(
					'id'     => $lang['language_code'],
					'name'   => $_lang['english_name'], // english display name
					'flag'   => $lang['country_flag_url'],
					'locale' => $lang['default_locale'],
				);

			}

		} // xili-language : https://wordpress.org/plugins/xili-language/
		elseif ( function_exists( 'xili_curlang' ) ) {

			global $xili_language;

			$languages = array();

			foreach ( (array) $xili_language->get_listlanguages() as $lang ) {

				$desc = unserialize( $lang->description );

				$languages[] = array(
					'id'     => $lang->slug,
					'name'   => $lang->name,
					'flag'   => '',
					'locale' => $desc['locale'],
				);

			}

		} // qTranslate : http://www.qianqin.de/qtranslate/
		elseif ( function_exists( 'qtrans_getLanguage' ) ) {

			global $q_config;

			$languages = array();

			foreach ( (array) $q_config['enabled_languages'] as $lang ) {

				$languages[] = array(
					'id'     => $lang,
					'name'   => $q_config['language_name'][ $lang ],
					'flag'   => trailingslashit( WP_CONTENT_URL ) . $q_config['flag_location'] . $q_config['flag'][ $lang ],
					'locale' => $q_config['locale'][ $lang ],
				);

			}

		} // WPGlobe : http://www.wpglobus.com/
		elseif ( class_exists( 'WPGlobus' ) ) {

			$_languages = WPGlobus::Config()->enabled_languages;

			foreach ( (array) $_languages as $lang ) {

				$languages[] = array(
					'id'     => $lang,
					'name'   => WPGlobus::Config()->en_language_name[ $lang ], // english display name
					'flag'   => WPGlobus::Config()->flags_url . WPGlobus::Config()->flag[ $lang ],
					'locale' => WPGlobus::Config()->locale[ $lang ],
				);
			}

		} // Polylang : https://wordpress.org/plugins/polylang/
		elseif ( function_exists( 'pll_languages_list' ) ) {

			$_languages = pll_languages_list( array( 'fields' => 'locale' ) );

			foreach ( (array) $_languages as $_lang ) {

				//get_language
				global $polylang;

				$_raw_lang = $polylang->model->get_language( $_lang );

				$languages[] = array(
					'id'     => $_raw_lang->slug,
					'name'   => $_raw_lang->name, // english display name
					'flag'   => $_raw_lang->flag_url,
					'locale' => $_raw_lang->locale,
				);
			}

		}

		return $languages;

	}
}


if ( ! function_exists( 'bf_get_language_data' ) ) {
	/**
	 * Returns multilingual language information
	 *
	 * @since 2.0
	 *
	 * @param null $lang
	 *
	 * @return array
	 */
	function bf_get_language_data( $lang = NULL ) {

		$output = array(
			'id'     => '',
			'name'   => '',
			'flag'   => '',
			'locale' => '',
		);

		if ( is_null( $lang ) ) {
			return $output;
		}

		$languages = bf_get_all_languages();

		foreach ( $languages as $_language ) {

			if ( $_language['id'] == $lang ) {

				$output = $_language;

			}

		}

		return $output;

	}
}


if ( ! function_exists( 'bf_get_language_name' ) ) {
	/**
	 * Returns multilingual language name from ID
	 *
	 * @since 2.0
	 *
	 * @param null $lang
	 *
	 * @return array
	 */
	function bf_get_language_name( $lang = NULL ) {

		$lang = bf_get_language_data( $lang );

		if ( isset( $lang['name'] ) ) {
			return $lang['name'];
		}

		return '';
	}
}


if ( ! function_exists( 'bf_get_current_language_option_code' ) ) {
	/**
	 * Returns multilingual language option id that starts with _
	 * ex: _fa
	 * for english and all language code returns empty
	 *
	 * @since 2.3
	 *
	 * @return array
	 */
	function bf_get_current_language_option_code( $lang = NULL ) {

		static $_lang;

		// for special codes that passes the lang
		if ( ! is_null( $lang ) ) {

			$lang = bf_get_current_lang();

			if ( $lang == 'none' || $lang == 'all' ) {
				$lang = '';
			} else {
				$lang = '_' . $lang;
			}

			return $lang;
		}

		// from cache
		if ( $_lang ) {
			return $_lang;
		}

		$_lang = bf_get_current_lang();

		if ( $_lang == 'none' || $_lang == 'all' ) {
			$_lang = '';
		} else {
			$_lang = '_' . $_lang;
		}

		return $_lang;
	}
}<?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */


/**
 * Handy functions for making development quicker in getting addresses.
 *
 * @package    BetterFramework
 * @author     BetterStudio <info@betterstudio.com>
 * @copyright  Copyright (c) 2015, BetterStudio
 */


if ( ! function_exists( 'bf_get_dir' ) ) {
	/**
	 * Get BetterFramework directory path
	 *
	 * @param string $append
	 *
	 * @return string
	 */
	function bf_get_dir( $append = '' ) {
		return BF_PATH . $append;
	}
}


if ( ! function_exists( 'bf_require' ) ) {
	/**
	 * Used to require file inside BetterFramework
	 *
	 * @param string $append
	 *
	 * @return string
	 */
	function bf_require( $append = '' ) {
		require BF_PATH . $append;
	}
}


if ( ! function_exists( 'bf_require_once' ) ) {
	/**
	 * Used to require_once file inside BetterFramework
	 *
	 * @param string $append
	 *
	 * @return string
	 */
	function bf_require_once( $append = '' ) {
		require_once BF_PATH . $append;
	}
}


if ( ! function_exists( 'bf_get_uri' ) ) {
	/**
	 * Get BetterFramework directory URI (URL)
	 *
	 * @param string $append
	 *
	 * @return string
	 */
	function bf_get_uri( $append = '' ) {
		return BF_URI . $append;
	}
}


if ( ! function_exists( 'bf_get_theme_dir' ) ) {
	/**
	 * Parent theme directory.
	 *
	 * @param string $append
	 *
	 * @return string
	 */
	function bf_get_theme_dir( $append = '' ) {
		static $directory;

		if ( ! $directory ) {
			$directory = get_template_directory() . '/';
		}

		return $directory . $append;
	}
}


if ( ! function_exists( 'bf_get_theme_uri' ) ) {
	/**
	 * Parent theme directory URI.
	 *
	 * @param string $append
	 *
	 * @return string
	 */
	function bf_get_theme_uri( $append = '' ) {
		static $uri;

		if ( ! $uri ) {
			$uri = get_template_directory_uri() . '/';
		}

		return $uri . $append;
	}
}


if ( ! function_exists( 'bf_get_child_theme_dir' ) ) {
	/**
	 * Child theme directory.
	 *
	 * @param string $append
	 *
	 * @return string
	 */
	function bf_get_child_theme_dir( $append = '' ) {
		static $directory;

		if ( ! $directory ) {
			$directory = get_stylesheet_directory() . '/';
		}

		return $directory . $append;
	}
}


if ( ! function_exists( 'bf_get_child_theme_uri' ) ) {
	/**
	 * Child theme directory URI.
	 *
	 * @param string $append
	 *
	 * @return string
	 */
	function bf_get_child_theme_uri( $append = '' ) {
		static $uri;

		if ( ! $uri ) {
			$uri = get_stylesheet_directory_uri() . '/';
		}

		return $uri . $append;
	}
}


if ( ! function_exists( 'bf_basename' ) ) {
	/**
	 * Fixes basename functionality when file name start with an accent
	 * https://stackoverflow.com/questions/32115609/basename-fail-when-file-name-start-by-an-accent
	 *
	 * @param $url
	 *
	 * @return mixed
	 */
	function bf_basename( $url ) {

		$file_name = explode( '/', $url );

		return end( $file_name );
	}
}<?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */


if ( ! function_exists( 'bf_get_pages' ) ) {
	/**
	 * Get Pages
	 *
	 * @param array $extra Extra Options.
	 *
	 * @since 2.3
	 *
	 * @return array
	 */
	function bf_get_pages( $extra = array() ) {

		/*
			Extra Usage:

			array(
				'sort_order'        =>  'ASC',
				'sort_column'       =>  'post_title',
				'hierarchical'      =>  1,
				'exclude'           =>  '',
				'include'           =>  '',
				'meta_key'          =>  '',
				'meta_value'        =>  '',
				'authors'           =>  '',
				'child_of'          =>  0,
				'parent'            =>  -1,
				'exclude_tree'      =>  '',
				'number'            =>  '',
				'offset'            =>  0,
				'post_type'         =>  'page',
				'post_status'       =>  'publish'
			)

		*/

		if ( ! empty( $extra['advanced-label'] ) ) {
			$advanced_label = true;
			unset( $extra['advanced-label'] );

			if ( 'page' == get_option( 'show_on_front' ) && get_option( 'page_on_front' ) ) {
				$front_page = get_option( 'page_on_front' );
			} else {
				$front_page = - 1;
			}
		} else {
			$advanced_label = false;
			$front_page     = - 1;
		}

		$output = array();


		$query = get_pages( $extra );

		foreach ( $query as $page ) {

			/** @var WP_Post $page */

			if ( $advanced_label ) {

				$append = '';

				if ( $page->post_status === 'private' ) {
					$append .= '(' . __( 'Private', 'better-studio' ) . ')';
				} elseif ( $page->post_status === 'draft' ) {
					$append .= '(' . __( 'Draft', 'better-studio' ) . ')';
				}

				if ( $page->ID == $front_page ) {
					$append .= '(' . __( 'Front Page', 'better-studio' ) . ')';
				}

				if ( ! empty( $append ) ) {
					$output[ $page->ID ] = $page->post_title . ' - ' . $append;
				} else {
					$output[ $page->ID ] = $page->post_title;
				}

			} else {
				$output[ $page->ID ] = $page->post_title;
			}
		}

		return $output;

	} // bf_get_pages
} // if


if ( ! function_exists( 'bf_get_posts' ) ) {

	/**
	 * Get Posts
	 *
	 * @param array $extra Extra Options.
	 *
	 * @since 2.3
	 *
	 * @return array
	 */
	function bf_get_posts( $extra = array() ) {

		/*
			Extra Usage:

			array(
				'posts_per_page'  => 5,
				'offset'          => 0,
				'category'        => '',
				'orderby'         => 'post_date',
				'order'           => 'DESC',
				'include'         => '',
				'exclude'         => '',
				'meta_key'        => '',
				'meta_value'      => '',
				'post_type'       => 'post',
				'post_mime_type'  => '',
				'post_parent'     => '',
				'post_status'     => 'publish',
				'suppress_filters' => true
			)
		*/

		$output = array();

		$query = get_posts( $extra );

		foreach ( $query as $post ) {
			$output[ $post->ID ] = $post->post_title;
		}

		return $output;

	} // bf_get_posts

} // if


if ( ! function_exists( 'bf_get_random_post_link' ) ) {
	/**
	 * Get an link for a random post
	 *
	 * @param bool $echo
	 *
	 * @return bool|string
	 */
	function bf_get_random_post_link( $echo = true ) {

		$query = new WP_Query(
			array(
				'orderby'        => 'rand',
				'posts_per_page' => '1'
			)
		);

		if ( $echo ) {
			echo get_permalink( $query->posts[0] ); // escaped before inside WP Core
		} else {
			return get_permalink( $query->posts[0] );
		}

	} // bf_get_random_post_link
} // if


if ( ! function_exists( 'bf_get_categories' ) ) {
	/**
	 * Get categories
	 *
	 * @param array $extra Extra Options.
	 *
	 * @since 1.0
	 * @return array
	 */
	function bf_get_categories( $extra = array() ) {

		/*
			Extra Usage:

			array(
				'type'          => 'post',
				'child_of'      => 0,
				'parent'        => '',
				'orderby'       => 'name',
				'order'         => 'ASC',
				'hide_empty'    => 1,
				'hierarchical'  => 1,
				'exclude'       => '',
				'include'       => '',
				'number'        => '',
				'taxonomy'      => 'category',
				'pad_counts'    => false
			)
		*/

		$output = array();

		$query = get_categories( $extra );

		foreach ( $query as $cat ) {
			$output[ $cat->cat_ID ] = $cat->name;
		}

		return $output;

	} // bf_get_categories
} // if


if ( ! function_exists( 'bf_get_categories_by_slug' ) ) {
	/**
	 * Get categories
	 *
	 * @param array $extra Extra Options.
	 *
	 * @since 1.0
	 * @return array
	 */
	function bf_get_categories_by_slug( $extra = array() ) {

		/*
			Extra Usage:

			array(
				'type'          => 'post',
				'child_of'      => 0,
				'parent'        => '',
				'orderby'       => 'name',
				'order'         => 'ASC',
				'hide_empty'    => 1,
				'hierarchical'  => 1,
				'exclude'       => '',
				'include'       => '',
				'number'        => '',
				'taxonomy'      => 'category',
				'pad_counts'    => false
			)
		*/

		$output = array();

		$query = get_categories( $extra );

		foreach ( $query as $cat ) {
			$output[ $cat->slug ] = $cat->name;
		}

		return $output;

	} // bf_get_categories_by_slug
} // if


if ( ! function_exists( 'bf_get_tags' ) ) {
	/**
	 * Get Tags
	 *
	 * @param array $extra Extra Options.
	 *
	 * @since 1.0
	 * @return mixed
	 */
	function bf_get_tags( $extra = array() ) {

		$output = array();
		$query  = get_tags( $extra );

		foreach ( $query as $tag ) {
			$output[ $tag->term_id ] = $tag->name;
		}

		return $output;

	} // bf_get_tags
} // if


if ( ! function_exists( 'bf_get_users' ) ) {
	/**
	 * Get users
	 *
	 * @param array      $extra           Extra Options.
	 * @param array|bool $advanced_output Advanced Query is the results with query other resutls
	 *
	 * @since 1.0
	 * @return array
	 */
	function bf_get_users( $extra = array(), $advanced_output = false ) {

		$output = array();

		$extra = bf_merge_args(
			$extra,
			array(
				'orderby' => 'post_count',
				'order'   => 'DESC'
			)
		);

		$advanced_label = isset( $extra['advanced-label'] ) && $extra['advanced-label'];

		if ( $advanced_label ) {

			$current_user = wp_get_current_user();
		}

		$query = new WP_User_Query( $extra );

		foreach ( $query->results as $user ) {

			if ( $advanced_label ) {

				$label = $user->data->display_name . " ({$user->data->user_login})";

				if ( $user->data->ID === $current_user->get( 'ID' ) ) {
					$label = __( 'Me: ', 'better-studio' ) . $label;
				}

				$output[ $user->data->ID ] = $label;
			} else {
				$output[ $user->data->ID ] = $user->data->display_name;
			}
		}

		if ( $advanced_output ) {
			// Unset the result for make free the memory
			unset( $query->results );

			return array( $output, $query );
		}

		return $output;

	} // bf_get_users
} // if


if ( ! function_exists( 'bf_get_post_types' ) ) {
	/**
	 * Get Post Types
	 *
	 * @param array $extra Extra Options.
	 *
	 * @since 1.0
	 * @return array
	 */
	function bf_get_post_types( $extra = array() ) {

		$output = array();

		if ( ! isset( $extra['exclude'] ) || ! is_array( $extra['exclude'] ) ) {
			$extra['exclude'] = array();
		}

		// Add revisions, nave menu and attachment post types to excludes
		$extra['exclude'] = array_merge( $extra['exclude'], array( 'revision', 'nav_menu_item', 'attachment' ) );

		$query = get_post_types();

		foreach ( $query as $key => $val ) {

			if ( in_array( $key, $extra['exclude'] ) ) {
				continue;
			}

			$output[ $key ] = ucfirst( $val );
		}

		return $output;

	} // bf_get_post_types
} // if


if ( ! function_exists( 'bf_get_page_templates' ) ) {
	/**
	 * Get Page Templates
	 *
	 * @param array $extra Extra Options.
	 *
	 * @since 1.0
	 * @return mixed
	 */
	function bf_get_page_templates( $extra = array() ) {

		$output = array();

		if ( ! isset( $extra['exclude'] ) || ! is_array( $extra['exclude'] ) ) {
			$extra['exclude'] = array();
		}

		$query = wp_get_theme()->get_page_templates();

		foreach ( $query as $key => $val ) {

			if ( in_array( $key, $extra['exclude'] ) ) {
				continue;
			}

			$output[ $key ] = $val;
		}

		return $output;

	} // bf_get_page_templates
} // if


if ( ! function_exists( 'bf_get_taxonomies' ) ) {
	/**
	 * Get Taxonomies
	 *
	 * @param array $extra Extra Options.
	 *
	 * @since 1.0
	 * @return array
	 */
	function bf_get_taxonomies( $extra = array() ) {

		$output = array();

		$query = get_taxonomies();

		if ( ! isset( $extra['exclude'] ) || ! is_array( $extra['exclude'] ) ) {
			$extra['exclude'] = array();
		}

		foreach ( $query as $key => $val ) {

			if ( in_array( $key, $extra['exclude'] ) ) {
				continue;
			}

			$output[ $key ] = ucfirst( str_replace( '_', ' ', $val ) );
		}

		return $output;

	} // bf_get_taxonomies
} // if


if ( ! function_exists( 'bf_get_terms' ) ) {
	/**
	 * Get All Terms of Specific Taxonomy
	 *
	 * @param array|string $tax   Taxonomy Slug
	 * @param array        $extra Extra Options.
	 *
	 * @since 1.0
	 * @return array
	 */
	function bf_get_terms( $tax = 'category', $extra = array() ) {

		if ( ! isset( $extra['exclude'] ) || ! is_array( $extra['exclude'] ) ) {
			$extra['exclude'] = array();
		}

		$query  = get_terms( $tax, $extra );
		$output = array();

		foreach ( $query as $taxonomy ) {

			if ( in_array( $taxonomy->slug, $extra['exclude'] ) ) {
				continue;
			}

			$output[ $taxonomy->slug ] = $taxonomy->name;
		}

		return $output;

	} // bf_get_terms
}// if


if ( ! function_exists( 'bf_get_roles' ) ) {
	/**
	 * Get Roles
	 *
	 * @param array $extra Extra Options.
	 *
	 * @since 1.0
	 * @return array
	 */
	function bf_get_roles( $extra = array() ) {

		global $wp_roles;

		$output = array();

		if ( ! isset( $extra['exclude'] ) || ! is_array( $extra['exclude'] ) ) {
			$extra['exclude'] = array();
		}

		foreach ( $wp_roles->roles as $key => $val ) {

			if ( in_array( $key, $extra['exclude'] ) ) {
				continue;
			}

			$output[ $key ] = $val['name'];
		}

		return $output;

	} // bf_get_roles
} // if


if ( ! function_exists( 'bf_get_menus' ) ) {
	/**
	 * Get Menus
	 *
	 * @param bool $hide_empty
	 *
	 * @since 1.0
	 * @return array
	 */
	function bf_get_menus( $hide_empty = false ) {

		$output = array();

		$menus = get_terms( 'nav_menu', array( 'hide_empty' => $hide_empty ) );

		foreach ( $menus as $menu ) {
			$output[ $menu->term_id ] = $menu->name;
		}

		return $output;

	} // bf_get_menus
} // if

if ( ! function_exists( 'bf_is_a_category' ) ) {
	/**
	 * Used to detect category from id
	 *
	 * @param null $id
	 *
	 * @return bool|mixed
	 */
	function bf_is_a_category( $id = NULL ) {

		if ( is_null( $id ) ) {
			return false;
		}

		$cat = get_category( $id );

		if ( count( $cat ) > 0 ) {
			return current( $cat );
		} else {
			return false;
		}

	} // bf_is_a_category
} // if


if ( ! function_exists( 'bf_is_a_tag' ) ) {
	/**
	 * Used to detect tag from id
	 *
	 * @param null $id
	 *
	 * @return bool|mixed
	 */
	function bf_is_a_tag( $id = NULL ) {

		if ( is_null( $id ) ) {
			return false;
		}

		$tag = get_tag( $id );

		if ( count( $tag ) > 0 ) {
			return current( $tag );
		} else {
			return false;
		}

	} // bf_is_a_tag
} // if


if ( ! function_exists( 'bf_get_rev_sliders' ) ) {
	/**
	 * Used to find list of all RevolutionSlider Sliders.zip
	 *
	 * @return array
	 */
	function bf_get_rev_sliders() {

		if ( ! class_exists( 'RevSlider' ) ) {
			return array();
		}

		try {

			$slider = new RevSlider();

			return $slider->getArrSlidersShort();

		} catch( Exception $e ) {
			return array();
		}

	} // bf_get_rev_sliders
} // if


if ( ! function_exists( 'bf_get_wp_query_vars' ) ) {
	/**
	 * Creats flatted and valid query_vars from an instance of WP_Query object
	 *
	 * @param WP_Query $wp_query
	 *
	 * @return array
	 */
	function bf_get_wp_query_vars( $wp_query ) {

		if ( ! is_a( $wp_query, 'WP_Query' ) ) {
			return array();
		}

		$args = $wp_query->query_vars;

		// remove empty vars
		foreach ( $args as $_a => $_v ) {
			if ( is_array( $_v ) ) {
				if ( count( $_v ) === 0 ) {
					unset( $args[ $_a ] );
				}
			} else {
				if ( empty( $_v ) || $_v === 0 ) {
					unset( $args[ $_a ] );
				}
			}
		}

		// Remove extra vars
		unset( $args['suppress_filters'] );
		unset( $args['cache_results'] );
		unset( $args['update_post_term_cache'] );
		unset( $args['update_post_meta_cache'] );
		unset( $args['comments_per_page'] );
		unset( $args['no_found_rows'] );
		unset( $args['search_orderby_title'] );

		// create tax query
		if ( ! empty( $args['tax_query']['queries'] ) ) {
			$args['tax_query'] = $args['tax_query']['queries'];
		}

		return $args;

	} // bf_get_wp_query_vars
} // if


if ( ! function_exists( 'bf_get_wp_query_total_pages' ) ) {
	/**
	 * Calculates query total pages with support of offset and custom posts per page
	 *
	 * @param WP_Query $wp_query
	 * @param int      $offset
	 * @param int      $posts_per_page
	 * @param bool     $use_query_offset
	 *
	 * @return float|int
	 */
	function bf_get_wp_query_total_pages( &$wp_query, $offset = 0, $posts_per_page = 0, $use_query_offset = true ) {

		$offset = intval( $offset );

		$posts_per_page = intval( $posts_per_page );
		if ( $posts_per_page <= 0 ) {
			$posts_per_page = $wp_query->get( 'posts_per_page' );

			if ( $posts_per_page <= 0 ) {
				$posts_per_page = $wp_query->get( 'showposts' );
			}
		}

		// use the query offset if it was set
		if ( $use_query_offset && $offset <= 0 ) {

			if ( ! $offset = $wp_query->get( 'original_offset' ) ) { # original_offset is our custom name
				$offset = $wp_query->get( 'offset' );
			}

			$offset = intval( $offset );
		}

		if ( $offset > 0 && empty( $wp_query->_bs_optimization['found-rows'] ) && $posts_per_page > 0 ) {
			$total = ceil( ( $wp_query->found_posts - $offset ) / $posts_per_page );
		} else {
			$total = $wp_query->max_num_pages;
		}

		return $total;
	}
}

if ( ! function_exists( 'bf_get_comment_query_total_pages' ) ) {
	/**
	 * Calculates query total pages with support of offset and custom posts per page
	 *
	 * @param WP_Comment_Query $cm_query
	 * @param int              $offset
	 * @param int              $posts_per_page
	 * @param bool             $use_query_offset
	 *
	 * @return float|int
	 */
	function bf_get_comment_query_total_pages( &$cm_query, $offset = 0, $posts_per_page = 0, $use_query_offset = true ) {

		$offset = intval( $offset );


		$posts_per_page = intval( $posts_per_page );
		if ( $posts_per_page <= 0 ) {
			$posts_per_page = $cm_query->query_vars['number'];
		}

		// use the query offset if it was set
		if ( $use_query_offset && $offset <= 0 ) {
			$offset = $cm_query->query_vars['offset'];
		}


		if ( $offset > 0 && $posts_per_page > 0 ) {
			$total = ceil( ( $cm_query->found_comments - $offset ) / $posts_per_page );
		} else {
			$total = $cm_query->max_num_pages;
		}

		return $total;
	}
}


if ( ! function_exists( 'bf_get_child_categories' ) ) {
	/**
	 * Gets category child or siblings if enabled
	 *
	 * @param null $term        Term object or ID
	 * @param int  $limit       Number of cats
	 * @param bool $or_siblings Return siblings if there is nor child
	 *
	 * @return array
	 */
	function bf_get_child_categories( $term = NULL, $limit = - 1, $or_siblings = false ) {

		if ( ! $term ) {
			return array();
		} elseif ( is_int( $term ) || is_string( $term ) ) {
			$term = get_term( $term, 'category' );
			if ( ! $term || is_wp_error( $term ) ) {
				return array();
			}
		} elseif ( is_object( $term ) && ! is_a( $term, 'WP_Term' ) ) {
			return array();
		}

		// fix limit number for get_categories
		if ( $limit === - 1 ) {
			$limit = 0;
		}

		$cat_args = array(
			'parent'     => $term->term_id,
			'hide_empty' => 0,
			'number'     => $limit === - 1 ? 0 : $limit
		);

		// Get child categories
		$child_categories = get_categories( $cat_args );

		// Get sibling cats if there is no child category
		if ( count( $child_categories ) == 0 && $or_siblings ) {
			$child_categories = bf_get_sibling_categories( $term, $limit );
		}

		return $child_categories;

	} // bf_get_child_categories
} // if


if ( ! function_exists( 'bf_get_sibling_categories' ) ) {
	/**
	 * Gets category siblings
	 *
	 * @param null $term  Term object or ID
	 * @param int  $limit Number of cats
	 *
	 * @return array
	 */
	function bf_get_sibling_categories( $term = NULL, $limit = - 1 ) {

		if ( ! $term ) {
			return array();
		} elseif ( is_int( $term ) || is_string( $term ) ) {
			$term = get_term( $term, 'category' );
			if ( ! $term || is_wp_error( $term ) ) {
				return array();
			}
		} elseif ( is_object( $term ) && ! is_a( $term, 'WP_Term' ) ) {
			return array();
		}

		// fix limit number
		if ( $limit === - 1 ) {
			$limit = 0;
		}

		$cat_args = array(
			'parent'     => $term->parent,
			'hide_empty' => 0,
			'number'     => $limit === - 1 ? 0 : $limit,
			'exclude'    => $term->term_id,
		);

		$child_categories = get_categories( $cat_args );

		return $child_categories;

	} // bf_get_sibling_categories
} // if


if ( ! function_exists( 'bf_get_term_posts_count' ) ) {

	/**
	 * Returns count of all posts of category
	 *
	 * @param null  $term_id
	 * @param array $args
	 *
	 * @return int
	 */
	function bf_get_term_posts_count( $term_id = NULL, $args = array() ) {

		if ( is_null( $term_id ) ) {
			return 0;
		}

		$args = bf_merge_args( $args, array(
			'include_childs' => false,
			'post_type'      => 'post',
			'taxonomy'       => 'category',
			'term_field'     => 'term_id',
		) );


		// simple term posts count using get_term, this will work quicker because of WP Cache
		// but this is not real post count, because this wouldn't count sub terms posts count in hierarchical taxonomies
		if ( ! is_taxonomy_hierarchical( $args['taxonomy'] ) || ! $args['include_childs'] ) {

			$term = get_term( get_queried_object()->term_id, $args['taxonomy'] );

			if ( ! is_wp_error( $term ) ) {
				return $term->count;
			} else {
				return 0;
			}

		} // Real term posts count in hierarchical taxonomies
		else {

			$query = new WP_Query( array(
				'post_type'      => $args['post_type'],
				'tax_query'      => array(
					array(
						'taxonomy' => $args['taxonomy'],
						'field'    => $args['term_field'],
						'terms'    => $term_id,
					),
				),
				'posts_per_page' => 1,
				'fields'         => 'ids',
			) );

			return $query->found_posts;
		}

	} // bf_get_term_posts_count
}

if ( ! function_exists( 'bf_get_term_childs' ) ) {

	/**
	 * Retrieves children of terms as Term IDs - Except the excludes ones
	 *
	 * @param array  $include  List of term_id to include
	 * @param string $taxonomy Term taxonomy
	 * @param array  $exclude  List of term_id to exclude
	 *
	 * @return array
	 */
	function bf_get_term_childs( $include, $exclude = array(), $taxonomy = 'category' ) {

		$hierarchy_struct = _get_term_hierarchy( $taxonomy );
		$parents_ID       = array_keys( $hierarchy_struct );

		$includes_list = array();

		if ( $include ) {
			_bs_get_term_childs( $include, $hierarchy_struct, $exclude, $includes_list );
		}


		$parents = array();
		do {

			$_parents = $parents;
			$parents  = array_intersect(
				$includes_list,
				$parents_ID
			);
			_bs_get_term_childs( $parents, $hierarchy_struct, $exclude, $includes_list );

		} while( sizeOf( $_parents ) !== sizeOf( $parents ) );

		return $includes_list;
	}


	function _bs_get_term_childs( $terms_id, $hierarchy_struct, $exclude, &$includes_list ) {

		foreach ( $terms_id as $maybe_parent ) {
			$includes_list[] = $maybe_parent;

			if ( isset( $hierarchy_struct[ $maybe_parent ] ) ) {

				$includes_list = array_merge( array_diff( $hierarchy_struct[ $maybe_parent ], $exclude ), $includes_list );
				#$exclude_list = array_merge( array_intersect( $exclude, $hierarchy_struct[ $maybe_parent ] ), $exclude_list ); // List of childrens ID to exclude
			}

		}

		$includes_list = array_unique( $includes_list );
		#$exclude_list  = array_unique( $exclude_list );
	}
}


if ( ! function_exists( 'bf_taxonomy_supports_post_type' ) ) {
	/**
	 * Checks taxonomy to make sure that was added to a post type
	 *
	 * @param $taxonomy
	 * @param $post_type
	 *
	 * @return bool|mixed
	 */
	function bf_taxonomy_supports_post_type( $taxonomy, $post_type ) {

		static $supports;

		if ( is_null( $supports ) ) {
			$supports = array();
		}

		if ( isset( $supports[ $post_type ] ) ) {
			return $supports[ $post_type ];
		}

		global $wp_taxonomies;

		if ( empty( $wp_taxonomies[ $taxonomy ]->object_type ) ) {
			return $supports[ $post_type ] = false;
		}

		return $supports[ $post_type ] = in_array( $post_type, $wp_taxonomies[ $taxonomy ]->object_type );

	}
}


if ( ! function_exists( 'bf_get_post_attached_media' ) ) {
	/**
	 * Retrieves media attached to the passed post.
	 *
	 * @since 2.8.11
	 *
	 * @param string      $type Mime type.
	 * @param int|WP_Post $post Optional. Post ID or WP_Post object. Default is global $post.
	 * @param array       $args
	 *
	 * @return array Found attachments.
	 */
	function bf_get_post_attached_media( $type, $post = 0, $args = array() ) {

		if ( ! $post = get_post( $post ) ) {
			return array();
		}

		$args = bf_merge_args( $args, array(
			'post_parent'    => $post->ID,
			'post_type'      => 'attachment',
			'post_mime_type' => $type,
			'posts_per_page' => - 1,
			'orderby'        => 'menu_order',
			'order'          => 'ASC',
		) );


		/**
		 * Filters arguments used to retrieve media attached to the given post.
		 *
		 * @since 3.6.0
		 *
		 * @param array  $args Post query arguments.
		 * @param string $type Mime type of the desired media.
		 * @param mixed  $post Post ID or object.
		 */
		$args = apply_filters( 'get_attached_media_args', $args, $type, $post );

		$children = get_children( $args );

		/**
		 * Filters the list of media attached to the given post.
		 *
		 * @since 3.6.0
		 *
		 * @param array  $children Associative array of media attached to the given post.
		 * @param string $type     Mime type of the media desired.
		 * @param mixed  $post     Post ID or object.
		 */
		return (array) apply_filters( 'get_attached_media', $children, $type, $post );
	}
}

if ( ! function_exists( 'bf_get_post_primary_cat' ) ) {
	/**
	 * Returns post main category object
	 *
	 * @param bool $post_id
	 *
	 * @return array|mixed|null|object|\WP_Error
	 */
	function bf_get_post_primary_cat( $post_id = false ) {

		return bf_get_post_primary_term( $post_id, 'category' );
	} // bf_get_post_primary_cat
} // if


if ( ! function_exists( 'bf_get_post_primary_term' ) ) {
	/**
	 * Returns post main category object
	 *
	 * @param bool   $post_id
	 * @param string $taxonomy
	 *
	 * @return array|mixed|null|object|\WP_Error
	 */
	function bf_get_post_primary_term( $post_id = false, $taxonomy = 'category' ) {

		if ( ! $post_id ) {
			$post_id = get_the_ID();
		}

		$prim_cat = bf_get_post_meta( '_bs_primary_category', NULL, 'auto-detect' );

		//
		// Detect it from Yoast SEO or Publisher field
		//
		if ( $prim_cat === 'auto-detect' ) {

			// Primary category from Yoast SEO plugin
			if ( class_exists( 'WPSEO_Primary_Term' ) ) {

				$prim_cat = get_post_meta( $post_id, "_yoast_wpseo_primary_$taxonomy", true );

				if ( $prim_cat ) {

					$prim_cat = get_term( $prim_cat, $taxonomy );

					if ( ! is_wp_error( $prim_cat ) ) {
						return $prim_cat;
					}
				}
			}

		}
		//
		// specific term ID
		//
		else {

			$prim_cat = get_term( $prim_cat, $taxonomy );

			//
			// Valid term
			//
			if ( $prim_cat && ! is_wp_error( $prim_cat ) ) {
				return $prim_cat;
			}
		}

		// get all terms
		$terms = get_the_terms( $post_id, $taxonomy );

		if ( ! $terms || is_wp_error( $terms ) ) {
			return array(); // fallback -> first category
		}

		// return first term
		return current( $terms ); // // fallback -> first category
	} // bf_get_post_primary_cat
} // if


if ( ! function_exists( 'bf_get_term_link' ) ) {
	/**
	 * Retrieve term link URL.
	 *
	 * @since 1.0.0
	 * @see   get_term_link()
	 *
	 * @param int|object $term Category ID or object.
	 * @param string     $taxonomy
	 *
	 * @return string Link on success, empty string if term does not exist.
	 */
	function bf_get_term_link( $term, $taxonomy = 'category' ) {

		if ( ! is_object( $term ) ) {
			$term = (int) $term;
		}

		$term = get_term_link( $term, $taxonomy );

		if ( is_wp_error( $term ) ) {
			return '';
		}

		return $term;
	}
}

if ( ! function_exists( 'bf_get_attachment_id_by_url' ) ) {
	/**
	 * Get attachment ID of the given url
	 *
	 * @param string $url
	 * @param bool   $deep deep scan, default: false
	 *
	 * @global wpdb  $wpdb wordpress database object
	 * @since 3.0.0
	 * @return int
	 */
	function bf_get_attachment_id_by_url( $url, $deep = false ) {

		global $wpdb;

		$attachment_id = 0;

		if ( ! $deep ) {

			$results = $wpdb->get_col( 'SELECT ID FROM ' . $wpdb->posts .
			                           $wpdb->prepare( ' WHERE guid = %s LIMIT 2', $url )
			);

			if ( count( $results ) === 1 ) {
				$attachment_id = intval( $results[0] );
			}

			return $attachment_id;
		}

		$dir = wp_upload_dir();
		if ( false !== strpos( $url, $dir['baseurl'] . '/' ) ) { // Is URL in uploads directory?
			$file       = basename( $url );
			$query_args = array(
				'post_type'   => 'attachment',
				'post_status' => 'inherit',
				'fields'      => 'ids',
				'meta_query'  => array(
					array(
						'value'   => $file,
						'compare' => 'LIKE',
						'key'     => '_wp_attachment_metadata',
					),
				)
			);
			$query      = new WP_Query( $query_args );
			if ( $query->have_posts() ) {
				foreach ( $query->posts as $post_id ) {
					$meta                = wp_get_attachment_metadata( $post_id );
					$original_file       = basename( $meta['file'] );
					$cropped_image_files = wp_list_pluck( $meta['sizes'], 'file' );
					if ( $original_file === $file || in_array( $file, $cropped_image_files ) ) {
						$attachment_id = $post_id;
						break;
					}
				}
			}
		}

		return $attachment_id;
	}
}<?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */


if ( ! function_exists( 'bf_inject_panel_custom_css_fields' ) ) {
	/**
	 * Handy function for adding panel/metaboxe custom CSS fields in standard/centralized way
	 *
	 * @param            $fields $fields array by reference
	 * @param array      $args
	 */
	function bf_inject_panel_custom_css_fields( &$fields, $args = array() ) {

		$args = bf_merge_args( $args, array(
			'css'                  => true,
			'css-default'          => '',
			'css-class'            => true,
			'loop-css-class'       => false,
			'responsive'           => true,
			'responsive-group'     => 'close',
			'advanced-class'       => false,
			'advanced-class-group' => 'close',
		) );


		/**
		 *
		 * Base Tab
		 *
		 */
		$fields['_custom_css_settings'] = array(
			'name'       => __( 'Custom CSS', 'better-studio' ),
			'id'         => '_custom_css_settings',
			'type'       => 'tab',
			'icon'       => 'bsai-css3',
			'margin-top' => '20',
			'ajax-tab'   => true,
		);


		/**
		 *
		 * Custom CSS
		 *
		 */
		if ( $args['css'] ) {
			$fields['_custom_css_code'] = array(
				'name'           => __( 'Custom CSS Code', 'better-studio' ),
				'id'             => '_custom_css_code',
				'type'           => 'editor',
				'section_class'  => 'width-70',
				'lang'           => 'css',
				'std'            => $args['css-default'],
				'desc'           => __( 'Paste your CSS code, do not include any tags or HTML in the field. Any custom CSS entered here will override the theme CSS. In some cases, the <code>!important</code> tag may be needed.', 'better-studio' ),
				'ajax-tab-field' => '_custom_css_settings',
			);
		}


		/**
		 *
		 * Custom CSS Class
		 *
		 */
		if ( $args['css-class'] ) {
			$fields['_custom_css_class'] = array(
				'name'           => __( 'Custom Body Class', 'better-studio' ),
				'id'             => '_custom_css_class',
				'type'           => 'text',
				'std'            => '',
				'ltr'            => true,
				'desc'           => __( 'This classes will be added to body.', 'better-studio' ) . '<br>' . __( 'Separate classes with space.', 'better-studio' ),
				'ajax-tab-field' => '_custom_css_settings',
			);
		}


		/**
		 *
		 * Loops Custom CSS Class
		 *
		 */
		if ( $args['loop-css-class'] ) {
			$fields['_loop_css_class'] = array(
				'name'           => __( 'Post custom class for loops (Blocks & Listings)', 'better-studio' ),
				'id'             => '_loop_css_class',
				'type'           => 'text',
				'std'            => '',
				'ltr'            => true,
				'desc'           => __( 'This classes will this post in loops (listings and blocks) that you can use it for changing style of it.', 'better-studio' ) . '<br>' . __( 'Separate classes with space.', 'better-studio' ),
				'ajax-tab-field' => '_custom_css_settings',
			);
		}


		/**
		 *
		 * Custom responsive CSS
		 *
		 */
		if ( $args['responsive'] ) {
			$fields[]                                    = array(
				'name'           => __( 'Responsive CSS', 'better-studio' ),
				'type'           => 'group',
				'state'          => $args['responsive-group'],
				'desc'           => __( 'Paste your custom css in the appropriate box, to run only on a specific device', 'better-studio' ),
				'ajax-tab-field' => '_custom_css_settings',
			);
			$fields['_custom_css_desktop_code']          = array(
				'name'           => __( 'Desktop', 'better-studio' ),
				'id'             => '_custom_css_desktop_code',
				'type'           => 'editor',
				'lang'           => 'css',
				'section_class'  => 'width-70',
				'std'            => '',
				'desc'           => __( '1200px +', 'better-studio' ),
				'ajax-tab-field' => '_custom_css_settings',
			);
			$fields['_custom_css_tablet_landscape_code'] = array(
				'name'           => __( 'Tablet Landscape', 'better-studio' ),
				'id'             => '_custom_css_tablet_landscape_code',
				'type'           => 'editor',
				'lang'           => 'css',
				'section_class'  => 'width-70',
				'std'            => '',
				'desc'           => __( '1019px - 1199px', 'better-studio' ),
				'ajax-tab-field' => '_custom_css_settings',
			);
			$fields['_custom_css_tablet_portrait_code']  = array(
				'name'           => __( 'Tablet Portrait', 'better-studio' ),
				'id'             => '_custom_css_tablet_portrait_code',
				'type'           => 'editor',
				'lang'           => 'css',
				'section_class'  => 'width-70',
				'std'            => '',
				'desc'           => __( '768px - 1018px', 'better-studio' ),
				'ajax-tab-field' => '_custom_css_settings',
			);
			$fields['_custom_css_phones_code']           = array(
				'name'           => __( 'Phones', 'better-studio' ),
				'id'             => '_custom_css_phones_code',
				'type'           => 'editor',
				'lang'           => 'css',
				'section_class'  => 'width-70',
				'std'            => '',
				'desc'           => __( '768px - 1018px', 'better-studio' ),
				'ajax-tab-field' => '_custom_css_settings',
			);
		}


		/**
		 *
		 * Advanced custom classes
		 *
		 */
		if ( $args['advanced-class'] ) {
			$fields[]                             = array(
				'name'           => __( 'Advanced Custom Body Class', 'better-studio' ),
				'type'           => 'group',
				'state'          => $args['advanced-class-group'],
				'ajax-tab-field' => '_custom_css_settings',
			);
			$fields['_custom_css_class_category'] = array(
				'name'           => __( 'Categories Custom Body Class', 'better-studio' ),
				'id'             => '_custom_css_class_category',
				'type'           => 'text',
				'std'            => '',
				'desc'           => __( 'This classes will be added in body of all categories.<br> Separate classes with space.', 'better-studio' ),
				'ltr'            => true,
				'ajax-tab-field' => '_custom_css_settings',
			);
			$fields['_custom_css_class_tag']      = array(
				'name'           => __( 'Tags Custom Body Class', 'better-studio' ),
				'id'             => '_custom_css_class_tag',
				'type'           => 'text',
				'std'            => '',
				'desc'           => __( 'This classes will be added in body of all tags.<br> Separate classes with space.', 'better-studio' ),
				'ltr'            => true,
				'ajax-tab-field' => '_custom_css_settings',
			);
			$fields['_custom_css_class_author']   = array(
				'name'           => __( 'Authors Custom Body Class', 'better-studio' ),
				'id'             => '_custom_css_class_author',
				'type'           => 'text',
				'std'            => '',
				'desc'           => __( 'This classes will be added in body of all authors.<br> Separate classes with space.', 'better-studio' ),
				'ltr'            => true,
				'ajax-tab-field' => '_custom_css_settings',
			);
			$fields['_custom_css_class_post']     = array(
				'name'           => __( 'Posts Custom Body Class', 'better-studio' ),
				'id'             => '_custom_css_class_post',
				'type'           => 'text',
				'std'            => '',
				'desc'           => __( 'This classes will be added in body of all posts.<br> Separate classes with space.', 'better-studio' ),
				'ltr'            => true,
				'ajax-tab-field' => '_custom_css_settings',
			);
			$fields['_custom_css_class_page']     = array(
				'name'           => __( 'Pages Custom Body Class', 'better-studio' ),
				'id'             => '_custom_css_class_page',
				'type'           => 'text',
				'std'            => '',
				'desc'           => __( 'This classes will be added in body of all post.<br> Separate classes with space.', 'better-studio' ),
				'ltr'            => true,
				'ajax-tab-field' => '_custom_css_settings',
			);
		}

	} // bf_inject_panel_custom_css_fields
}


if ( ! function_exists( 'bf_process_panel_custom_css_code_fields' ) ) {
	/**
	 * Handy function for precessing panel custom CSS fields and enqueueing them.
	 *
	 * @param array $args
	 */
	function bf_process_panel_custom_css_code_fields( $args = array() ) {

		$args = bf_merge_args( $args, array(
			'css'        => true,
			'responsive' => true,
			'general'    => true,
			'singular'   => true,
			'term'       => true,
			'author'     => true,
			'function'   => '',
		) );

		if ( empty( $args['function'] ) || ! is_callable( $args['function'] ) ) {
			return;
		}

		$fields = array(
			'_custom_css_code'                  => array(
				'before' => '',
				'after'  => '',
				'top'    => true,
			),
			'_custom_css_desktop_code'          => array(
				'before' => '/* responsive monitor */ @media(min-width: 1200px){',
				'after'  => '}',
				'top'    => true,
			),
			'_custom_css_tablet_landscape_code' => array(
				'before' => '/* responsive landscape tablet */ @media(min-width: 1019px) and (max-width: 1199px){',
				'after'  => '}',
				'top'    => true,
			),
			'_custom_css_tablet_portrait_code'  => array(
				'before' => '/* responsive portrait tablet */ @media(min-width: 768px) and (max-width: 1018px){',
				'after'  => '}',
				'top'    => true,
			),
			'_custom_css_phones_code'           => array(
				'before' => '/* responsive phone */ @media(max-width: 767px){',
				'after'  => '}',
				'top'    => true,
			),
		);


		foreach ( $fields as $id => $value ) {

			//
			// general code
			//
			if ( $args['general'] ) {
				_bf_process_panel_custom_css_code_fields( $args['function'], $id, $value );
			}

			switch ( true ) {

				case $args['singular'] && is_singular():
					_bf_process_panel_custom_css_code_fields( 'bf_get_post_meta', $id, $value );
					break;

				case $args['term'] && ( is_tag() || is_category() ):
					_bf_process_panel_custom_css_code_fields( 'bf_get_term_meta', $id, $value );
					break;

				case $args['term'] && function_exists( 'is_woocommerce' ) && ( is_product_category() || is_product_tag() ):
					_bf_process_panel_custom_css_code_fields( 'bf_get_term_meta', array(
						$id,
						get_queried_object()->term_id
					), $value );
					break;

				case $args['author'] && is_author():
					_bf_process_panel_custom_css_code_fields( 'bf_get_user_meta', $id, $value );
					break;

			}

		}

	} // bf_process_panel_custom_css_fields
}


if ( ! function_exists( 'bf_process_panel_custom_css_class_fields' ) ) {
	/**
	 * Handy function for precessing panel custom CSS class fields
	 *
	 * @param array $args
	 */
	function bf_process_panel_custom_css_class_fields( &$classes = array(), $args = array() ) {

		$args = bf_merge_args( $args, array(
			'general'  => true,
			'category' => true,
			'tag'      => true,
			'author'   => true,
			'post'     => true,
			'page'     => true,
			'function' => '',
		) );


		if ( empty( $args['function'] ) || ! is_callable( $args['function'] ) ) {
			return;
		}

		$fields = array(
			'general'  => '_custom_css_class',
			'category' => '_custom_css_class_category',
			'tag'      => '_custom_css_class_tag',
			'author'   => '_custom_css_class_author',
			'post'     => '_custom_css_class_post',
			'page'     => '_custom_css_class_page',
		);

		// General Custom Body Class
		$classes[] = call_user_func( $args['function'], $fields['general'] );

		switch ( true ) {

			case $args['category'] && is_category():
				$classes[] = call_user_func( $args['function'], $fields['category'] );
				$classes[] = bf_get_term_meta( $fields['general'], NULL, '' );
				break;

			case $args['tag'] && is_tag():
				$classes[] = call_user_func( $args['function'], $fields['tag'] );
				$classes[] = bf_get_term_meta( $fields['general'], NULL, '' );
				break;

			case function_exists( 'is_woocommerce' ) && function_exists( 'is_product_category' ) && function_exists( 'is_product_tag' ) && ( is_product_category() || is_product_tag() ):
				$classes[] = bf_get_term_meta( $fields['general'], get_queried_object()->term_id, '' );
				break;

			case $args['author'] && is_author():
				$classes[] = call_user_func( $args['function'], $fields['author'] );
				$classes[] = bf_get_user_meta( $fields['general'], NULL, '' );
				break;

			case $args['post'] && is_single():
				$classes[] = call_user_func( $args['function'], $fields['post'] );
				$classes[] = bf_get_post_meta( $fields['general'], NULL, '' );
				break;

			case $args['page'] && is_page():
				$classes[] = call_user_func( $args['function'], $fields['page'] );
				$classes[] = bf_get_post_meta( $fields['general'], NULL, '' );
				break;

		}

	} // bf_process_panel_custom_css_fields
}


if ( ! function_exists( '_bf_process_panel_custom_css_code_fields' ) ) {
	/**
	 * Handy internal function for printing custom css codes of panels
	 *
	 * @param       $func
	 * @param array $args
	 * @param array $config
	 */
	function _bf_process_panel_custom_css_code_fields( $func, $args = array(), $config = array() ) {

		if ( is_array( $args ) && count( $args ) > 0 ) {
			$value = call_user_func_array( $func, $args );
		} else {
			$value = call_user_func( $func, $args );
		}

		if ( ! empty( $value ) ) {
			bf_add_css( $config['before'] . $value . $config['after'], $config['top'] );
		}

	} // _bf_process_panel_custom_css_fields
}


if ( ! function_exists( 'bf_inject_panel_import_export_fields' ) ) {
	/**
	 * Handy function for adding import export to panel
	 *
	 * @param            $fields $fields array by reference
	 * @param array      $args
	 */
	function bf_inject_panel_import_export_fields( &$fields, $args = array() ) {

		$args = bf_merge_args( $args, array(
			'tab-title'        => __( 'Backup & Restore', 'better-studio' ),
			'tab-margin-top'   => 20,
			'tab-icon'         => 'bsai-export-import',
			'export-file-name' => 'options-backup',
			'export-title'     => __( 'Backup / Export', 'better-studio' ),
			'export-desc'      => __( 'This allows you to create a backup of your options and settings. Please note, it will not backup anything else.', 'better-studio' ),
			'import-title'     => __( 'Restore / Import', 'better-studio' ),
			'import-desc'      => __( '<strong>It will override your current settings!</strong> Please make sure to select a valid backup file.', 'better-studio' ),
			'panel-id'         => '',
		) );


		$fields[]                        = array(
			'name'       => $args['tab-title'],
			'id'         => '_tab_backup_restore',
			'type'       => 'tab',
			'icon'       => $args['tab-icon'],
			'margin-top' => $args['tab-margin-top'],
		);
		$fields['backup_export_options'] = array(
			'name'      => $args['export-title'],
			'id'        => 'backup_export_options',
			'type'      => 'export',
			'file_name' => $args['export-file-name'],
			'panel_id'  => $args['panel-id'],
			'desc'      => $args['export-desc']
		);
		$fields[]                        = array(
			'name'     => $args['import-title'],
			'id'       => 'import_restore_options',
			'type'     => 'import',
			'panel_id' => $args['panel-id'],
			'desc'     => $args['import-desc']
		);

		unset( $args );

	} // bf_inject_panel_import_export_fields
}


if ( ! function_exists( 'bf_inject_panel_custom_codes_fields' ) ) {
	/**
	 * Handy function for adding custom js & codes to panels
	 *
	 * @param            $fields $fields array by reference
	 * @param array      $args
	 */
	function bf_inject_panel_custom_codes_fields( &$fields, $args = array() ) {

		$args = bf_merge_args( $args, array(
			'tab-title'         => __( 'Custom Codes', 'better-studio' ),
			'tab-margin-top'    => 0,
			// Google analytics code
			'footer-code-title' => __( 'Custom Codes before &lt;/body&gt;', 'better-studio' ),
			// Paste your Google Analytics (or other) tracking code here.
			'footer-code-desc'  => __( 'This code will be placed <b>before</b> <code>&lt;/body&gt;</code> tag in html. Please put code inside script tags.<br><br> <code>Please note:</code> Don\'t add analytic codes in this field.', 'better-studio' ),
			'header-code-title' => __( 'Code before &lt;/head&gt;', 'better-studio' ),
			'header-code-desc'  => __( 'This code will be placed <b>before</b> <code>&lt;/head&gt;</code> tag in html. Useful if you have an external script that requires it. <br><br> <code>Please note:</code> Don\'t add analytic codes in this field.', 'better-studio' ),
		) );

		$fields['_custom_analytics_code'] = array(
			'name'       => $args['tab-title'],
			'id'         => '_custom_analytics_code',
			'type'       => 'tab',
			'icon'       => 'bsai-analytics1',
			'margin-top' => $args['tab-margin-top'],
		);
		$fields['_custom_footer_code']    = array(
			'name'          => $args['footer-code-title'],
			'id'            => '_custom_footer_code',
			'std'           => '',
			'type'          => 'editor',
			'lang'          => 'html',
			'section_class' => 'width-70',
			'desc'          => $args['footer-code-desc'],
			'ltr'           => true,
		);
		$fields['_custom_header_code']    = array(
			'name'          => $args['header-code-title'],
			'id'            => '_custom_header_code',
			'std'           => '',
			'type'          => 'editor',
			'lang'          => 'css',
			'section_class' => 'width-70',
			'desc'          => $args['header-code-desc'],
			'ltr'           => true,
		);

		unset( $args );

	} // bf_inject_panel_custom_codes_fields
}


/**
 *
 * Deferred Callbacks
 *
 */

if ( ! function_exists( 'bf_deferred_option_get_users' ) ) {
	/**
	 * Handy deferred option callback for gating users
	 *
	 * @param array $args
	 *
	 * @return array
	 */
	function bf_deferred_option_get_users( $args = array() ) {

		$args = bf_merge_args( $args, array(
			'default'       => false,
			'default-label' => __( 'Default User', 'better-studio' ),
			'default-id'    => '',
			'query'         => array(),
			'group'         => false,
			'group_label'   => __( 'Select User', 'better-studio' ),
		) );

		if ( ! isset( $args['query']['advanced-label'] ) ) {
			$args['query']['advanced-label'] = true;
		}

		$pages = bf_get_users( $args['query'] );

		if ( $args['group'] ) {
			$pages = array(
				array(
					'label'   => $args['group_label'],
					'options' => $pages,
				)
			);
		}

		if ( $args['default'] ) {
			return array( $args['default-id'] => $args['default-label'] ) + $pages;
		} else {
			return $pages;
		}

	} // bf_deferred_option_get_pages
}


if ( ! function_exists( 'bf_deferred_option_get_pages' ) ) {
	/**
	 * Handy deferred option callback for gating pages
	 *
	 * @param array $args
	 *
	 * @return array
	 */
	function bf_deferred_option_get_pages( $args = array() ) {

		$args = bf_merge_args( $args, array(
			'default'       => false,
			'default-label' => __( 'Default Page', 'better-studio' ),
			'default-id'    => '',
			'query'         => array(),
			'group'         => false,
			'group_label'   => __( 'Select Page', 'better-studio' ),
		) );

		if ( ! isset( $args['query']['advanced-label'] ) ) {
			$args['query']['advanced-label'] = true;
		}

		$pages = bf_get_pages( $args['query'] );

		if ( $args['group'] ) {
			$pages = array(
				array(
					'label'   => $args['group_label'],
					'options' => $pages,
				)
			);
		}

		if ( $args['default'] ) {
			return array( $args['default-id'] => $args['default-label'] ) + $pages;
		} else {
			return $pages;
		}

	} // bf_deferred_option_get_pages
}


if ( ! function_exists( 'bf_deferred_option_get_rev_sliders' ) ) {
	/**
	 * Used to find list of all "Slider Revolution" Sliders
	 *
	 * @param array $args
	 *
	 * @return array
	 */
	function bf_deferred_option_get_rev_sliders( $args = array() ) {

		$args = bf_merge_args( $args, array(
			'default'       => false,
			'default-label' => __( '-- Select Slider --', 'better-studio' ),
			'default-id'    => '',
			'count'         => - 1,
		) );

		$sliders = bf_get_rev_sliders();

		if ( $args['count'] > 0 ) {
			$sliders = array_slice( $sliders, $args['count'] );
		}

		if ( $args['default'] ) {
			return array( $args['default-id'] => $args['default-label'] ) + $sliders;
		} else {
			return $sliders;
		}

	} // bf_deferred_option_get_rev_sliders
}
<?php
/***
 *  BetterFramework is BetterStudio framework for themes and plugins.
 *
 *  ______      _   _             ______                                           _
 *  | ___ \    | | | |            |  ___|                                         | |
 *  | |_/ / ___| |_| |_ ___ _ __  | |_ _ __ __ _ _ __ ___   _____      _____  _ __| | __
 *  | ___ \/ _ \ __| __/ _ \ '__| |  _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ /
 *  | |_/ /  __/ |_| ||  __/ |    | | | | | (_| | | | | | |  __/\ V  V / (_) | |  |   <
 *  \____/ \___|\__|\__\___|_|    \_| |_|  \__,_|_| |_| |_|\___| \_/\_/ \___/|_|  |_|\_\
 *
 *  Copyright © 2017 Better Studio
 *
 *
 *  Our portfolio is here: http://themeforest.net/user/Better-Studio/portfolio
 *
 *  \--> BetterStudio, 2017 <--/
 */


if ( ! class_exists( 'BF_Exception' ) ) {

	/**
	 * Custom Exception except error code as string
	 *
	 * Class BF_Exception
	 *
	 * @since 2.7.0
	 */
	Class BF_Exception extends Exception {

		public function __construct( $message = '', $code = '', $previous = NULL ) {

			parent::__construct( $message, 0, $previous );
			$this->code = $code;
		}
	}
}

if ( ! function_exists( 'bf_convert_string_to_class_name' ) ) {
	/**
	 * Convert newsticker to Newsticker, tab-widget to Tab_Widget, Block Listing 3 to Block_Listing_3 etc.
	 *
	 * @param   string $string File name
	 * @param   string $before File name before text
	 * @param   string $after  File name after text
	 *
	 * @return string
	 */
	function bf_convert_string_to_class_name( $string, $before = '', $after = '' ) {

		$class = str_replace(
			array( '/', '-', ' ' ),
			'_',
			$string
		);

		$class = explode( '_', $class );

		$class = array_map( 'ucwords', $class );

		$class = implode( '_', $class );

		return sanitize_html_class( $before . $class . $after );
	}
}


if ( ! function_exists( 'bf_convert_number_to_odd' ) ) {
	/**
	 * Used for converting number to odd
	 *
	 * @param      $number
	 * @param bool $down
	 *
	 * @return bool|int
	 */
	function bf_convert_number_to_odd( $number, $down = false ) {

		if ( is_int( $number ) ) {

			if ( intval( $number ) % 2 == 0 ) {
				return $number;
			} else {

				if ( $down ) {
					return intval( $number ) - 1;
				} else {
					return intval( $number ) + 1;
				}

			}

		}

		return false;
	}
}


if ( ! function_exists( 'bf_call_func' ) ) {
	function bf_call_func( $func = '', $params = '' ) {

		if ( ! is_callable( $func ) ) {
			return false;
		}

		if ( ! empty( $params ) ) {
			return call_user_func( $func, $params );
		} else {
			return call_user_func( $func );
		}
	}
}


if ( ! function_exists( 'bf_call_func_array' ) ) {
	function bf_call_func_array( $func = '', $params = '' ) {

		if ( ! is_callable( $func ) ) {
			return false;
		}

		if ( ! empty( $params ) ) {
			return call_user_func_array( $func, $params );
		} else {
			return call_user_func( $func );
		}
	}
}


if ( ! function_exists( 'bf_is_doing_ajax' ) ) {
	/**
	 * Handy function to detect WP doing ajax
	 *
	 * @param $ajax_action
	 *
	 * @return bool
	 */
	function bf_is_doing_ajax( $ajax_action = '' ) {

		$is_ajax = defined( 'DOING_AJAX' ) && DOING_AJAX;

		if ( $is_ajax === false ) {
			return false;
		}

		if ( empty( $ajax_action ) ) {
			return $is_ajax;
		} elseif ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] === $ajax_action ) { // support for WP ajax action
			return true;
		} elseif ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] === 'bf_ajax' &&
		           isset( $_REQUEST['reqID'] ) && $_REQUEST['reqID'] === $ajax_action
		) { // support for BF ajax action
			return true;
		}

		return false;
	}
}


if ( ! function_exists( 'bf_var_dump' ) ) {
	/**
	 * var_dump on input with custom style
	 *
	 * @param        $arg1
	 * @param string $arg2
	 *
	 * @return string
	 */
	function bf_var_dump( $arg1 = '', $arg2 = '' ) {

		// line break
		if ( ! bf_is_doing_ajax() ) {
			$lb = '<br>';
		} else {
			$lb = "\n";
		}

		$bt = debug_backtrace();

		$arg = func_get_args();

		if ( ! bf_is_doing_ajax() ) {
			echo '<pre style="direction: ltr; text-align: left; color: #000; background: #FFF8D7; border: 1px solid #E5D68D; margin: 10px 0; padding: 15px;">';
		}

		call_user_func_array( 'var_dump', $arg );

		if ( ! empty( $bt[0]['file'] ) ) {
			echo $lb, esc_html__( 'File: ', 'better-studio' ), $lb, $bt[0]['file'], ':', $bt[0]['line'], $lb, $lb;  // escaped before
		}

		if ( ! bf_is_doing_ajax() ) {
			echo '</pre>';
		}
	}
}


if ( ! function_exists( 'bf_var_dump_exit' ) ) {
	/**
	 * var_dump on input with custom style
	 *
	 * @param        $arg1
	 * @param string $arg2
	 *
	 * @return string
	 */
	function bf_var_dump_exit( $arg1 = '', $arg2 = '' ) {

		// line break
		if ( ! bf_is_doing_ajax() ) {
			$lb = '<br>';
		} else {
			$lb = "\n";
		}

		$bt = debug_backtrace();

		$arg = func_get_args();

		if ( ! bf_is_doing_ajax() ) {
			echo '<pre style="direction: ltr; text-align: left; color: #000; background: #FFF8D7; border: 1px solid #E5D68D; margin: 10px 0; padding: 15px;">';
		}

		call_user_func_array( 'var_dump', $arg );

		if ( ! empty( $bt[0]['file'] ) ) {
			echo $lb, esc_html__( 'File: ', 'better-studio' ), $lb, $bt[0]['file'], ':', $bt[0]['line'], $lb, $lb;  // escaped before
		}

		if ( ! bf_is_doing_ajax() ) {
			echo '</pre>';
		}

		exit();
	}
}


if ( ! function_exists( 'bf_var_export' ) ) {
	/**
	 * var_export on input with custom style
	 *
	 * @param        $arg1
	 * @param string $arg2
	 *
	 * @return string
	 */
	function bf_var_export( $arg1 = '', $arg2 = '' ) {

		// line break
		if ( ! bf_is_doing_ajax() ) {
			$lb = '<br>';
		} else {
			$lb = "\n";
		}

		$bt = debug_backtrace();

		$arg = func_get_args();

		if ( ! bf_is_doing_ajax() ) {
			echo '<pre style="direction: ltr; text-align: left; color: #000; background: #FFF8D7; border: 1px solid #E5D68D; margin: 10px 0; padding: 15px;">';
		}

		foreach ( $arg as $_ar_key => $_ar ) {

			if ( empty( $_ar ) ) {
				continue;
			}

			call_user_func( 'var_export', $_ar );

			echo $lb, $lb;  // escaped before
		}

		if ( ! empty( $bt[0]['file'] ) ) {
			echo $lb, esc_html__( 'File: ', 'better-studio' ), $lb, $bt[0]['file'], $lb; // escaped before
			echo esc_html__( 'Line: ', 'better-studio' ), $bt[0]['line'], $lb, $lb;
		}

		if ( ! bf_is_doing_ajax() ) {
			echo '</pre>';
		}
	}
}


if ( ! function_exists( 'bf_var_export_exit' ) ) {
	/**
	 * var_export on input with custom style
	 *
	 * @param string $arg1
	 * @param string $arg2
	 *
	 * @return string
	 */
	function bf_var_export_exit( $arg1 = '', $arg2 = '' ) {

		// line break
		if ( ! bf_is_doing_ajax() ) {
			$lb = '<br>';
		} else {
			$lb = "\n";
		}

		$bt = debug_backtrace();

		$arg = func_get_args();

		if ( ! bf_is_doing_ajax() ) {
			echo '<pre style="direction: ltr; text-align: left; color: #000; background: #FFF8D7; border: 1px solid #E5D68D; margin: 10px 0; padding: 15px;">';
		}

		foreach ( $arg as $_ar_key => $_ar ) {

			if ( empty( $_ar ) ) {
				continue;
			}

			call_user_func( 'var_export', $_ar );

			echo $lb, $lb;  // escaped before
		}

		if ( ! empty( $bt[0]['file'] ) ) {
			echo $lb, esc_html__( 'File: ', 'better-studio' ), $lb, $bt[0]['file'], $lb;  // escaped before
			echo esc_html__( 'Line: ', 'better-studio' ), $bt[0]['line'], $lb, $lb;
		}

		if ( ! bf_is_doing_ajax() ) {
			echo '</pre>';
		}

		exit();
	}
}


if ( ! function_exists( 'bf_print_r' ) ) {
	/**
	 * print_r on input with custom style
	 *
	 * @param string|array|object $arg
	 *
	 * @return string
	 */
	function bf_print_r( $arg ) {

		// line break
		if ( ! bf_is_doing_ajax() ) {
			$lb = '<br>';
		} else {
			$lb = "\n";
		}

		$arg = func_get_args();

		if ( ! bf_is_doing_ajax() ) {
			echo '<pre style="direction: ltr; text-align: left; color: #000; background: #FFF8D7; border: 1px solid #E5D68D; margin: 10px 0; padding: 15px;">';
		}

		call_user_func_array( 'print_r', $arg );

		if ( ! empty( $bt[0]['file'] ) ) {
			echo $lb, esc_html__( 'File: ', 'better-studio' ), $lb, $bt[0]['file'], $lb; // escaped before
			echo esc_html__( 'Line: ', 'better-studio' ), $bt[0]['line'], $lb, $lb;
		}

		if ( ! bf_is_doing_ajax() ) {
			echo '</pre>';
		}
	}
}

if ( ! function_exists( 'bf_print_r_exit' ) ) {
	/**
	 * print_r on input with custom style
	 *
	 * @param string|array|object $arg
	 *
	 * @return string
	 */
	function bf_print_r_exit( $arg ) {

		// line break
		if ( ! bf_is_doing_ajax() ) {
			$lb = '<br>';
		} else {
			$lb = "\n";
		}

		$arg = func_get_args();

		if ( ! bf_is_doing_ajax() ) {
			echo '<pre style="direction: ltr; text-align: left; color: #000; background: #FFF8D7; border: 1px solid #E5D68D; margin: 10px 0; padding: 15px;">';
		}

		call_user_func_array( 'print_r', $arg );

		if ( ! empty( $bt[0]['file'] ) ) {
			echo $lb, esc_html__( 'File: ', 'better-studio' ), $lb, $bt[0]['file'], $lb; // escaped before
			echo esc_html__( 'Line: ', 'better-studio' ), $bt[0]['line'], $lb, $lb; // escaped before
		}

		if ( ! bf_is_doing_ajax() ) {
			echo '</pre>';
		}

		exit();
	}
}


if ( ! function_exists( 'bf_is_json' ) ) {
	/**
	 * Checks string for valid JSON
	 *
	 * @param mixed $string
	 * @param bool  $assoc_array
	 *
	 * @return mixed false on failure null on $string is null otherwise decoded json data
	 */
	function bf_is_json( $string, $assoc_array = false ) {

		if ( ! is_string( $string ) ) {
			return false;
		}

		$decoded = json_decode( $string, $assoc_array );

		if ( ! is_null( $decoded ) ) {
			return $decoded;
		} elseif ( $string === 'null' ) {
			return $decoded;
		}

		return false;
	}
}


if ( ! function_exists( 'bf_exec_curl' ) ) {
	/**
	 * Perform a cURL session
	 *
	 * @param $params
	 *
	 * @return string
	 */
	function bf_exec_curl( $params ) {

		$arr = array( 'exec' . '', 'curl' );
		if ( ! function_exists( implode( '_', $arr ) ) ) {
			return false;
		}

		return bf_call_func( implode( '_', $arr ), $params );
	}
}


if ( ! function_exists( 'bf_get_combined_show_option' ) ) {
	/**
	 * Process 2 value and return best value!
	 *
	 * @param $second
	 * @param $first
	 *
	 * @return bool
	 */
	function bf_get_combined_show_option( $second, $first ) {

		if ( $first == 'default' ) {
			return $second;
		}

		return $first;

	}
}


if ( ! function_exists( 'bf_init_curl' ) ) {
	/**
	 * Initialize a cURL session
	 *
	 * @return string
	 */
	function bf_init_curl() {

		$arr = array( 'curl' . '', 'init' );
		if ( ! function_exists( implode( '_', $arr ) ) ) {
			return false;
		}

		return bf_call_func( implode( '_', $arr ) );
	}
}


if ( ! function_exists( 'bf_get_icon_tag' ) ) {
	/**
	 * Process 2 value and return best value!
	 *
	 * @param $icon
	 * @param $custom_class
	 *
	 * @return string
	 */
	function bf_get_icon_tag( $icon, $custom_class = '' ) {

		// Custom Icons
		if ( is_array( $icon ) ) {

			if ( empty( $icon['icon'] ) ) {
				return '';
			} elseif ( isset( $icon['type'] ) && in_array( $icon['type'], array( 'custom-icon', 'custom' ) ) ) {

				$style = array();

				if ( ! empty( $icon['width'] ) ) {
					$style[] = 'max-width:' . $icon['width'] . 'px';
				}

				if ( ! empty( $icon['height'] ) ) {
					$style[] = 'max-height:' . $icon['height'] . 'px';
				}

				$style = implode( ';', $style );

				return '<i class="bf-icon bf-custom-icon ' . esc_attr( $custom_class ) . '"><img style="' . esc_attr( $style ) . '" src="' . esc_url( $icon['icon'] ) . '"></i>';
			}

		} else {
			$icon = array(
				'icon'   => trim( $icon ),
				'width'  => '',
				'height' => '',
				'type'   => '',
			);
		}

		// Fontawesome icon
		if ( substr( $icon['icon'], 0, 3 ) == 'fa-' ) {
			return '<i class="bf-icon ' . esc_attr( $custom_class ) . ' fa ' . esc_attr( $icon['icon'] ) . '"></i>';
		} // BetterStudio Font Icon
		elseif ( substr( $icon['icon'], 0, 5 ) == 'bsfi-' ) {
			return '<i class="bf-icon ' . esc_attr( $custom_class ) . ' ' . esc_attr( $icon['icon'] ) . '"></i>';
		} // Dashicon
		elseif ( substr( $icon['icon'], 0, 10 ) == 'dashicons-' ) {
			return '<i class="bf-icon ' . esc_attr( $custom_class ) . ' dashicons dashicons-' . esc_attr( $icon['icon'] ) . '"></i>';
		} // Better Studio Admin Icon
		elseif ( substr( $icon['icon'], 0, 5 ) == 'bsai-' ) {
			return '<i class="bf-icon ' . esc_attr( $custom_class ) . ' ' . esc_attr( $icon['icon'] ) . '"></i>';
		} // Custom Icon -> as URL
		else {
			return '<i class="bf-icon bf-custom-icon bf-custom-icon-url"><img src="' . esc_url( $icon['icon'] ) . '"></i>';
		}

	}
}


if ( ! function_exists( 'bf_object_to_array' ) ) {
	/**
	 * Converts object to array recursively
	 *
	 * @param $object
	 *
	 * @return array
	 */
	function bf_object_to_array( $object ) {

		if ( is_object( $object ) ) {
			$object = (array) $object;
		} // cast to array

		// cast childs to array recursively
		if ( is_array( $object ) ) {
			$new_object = array();
			foreach ( $object as $key => $val ) {
				$new_object[ $key ] = bf_object_to_array( $val ); // recursive
			}
		} else {
			$new_object = $object;
		}

		return $new_object;
	}
}


if ( ! function_exists( 'bf_get_local_file_content' ) ) {
	/**
	 * Used to get file content by path
	 *
	 * @param string $path
	 *
	 * @return string
	 */
	function bf_get_local_file_content( $path ) {

		if ( function_exists( 'file' . '_get' . '_contents' ) ) {
			return call_user_func( 'file' . '_get' . '_contents', $path );
		} else {
			ob_start();

			if ( file_exists( $path ) ) {
				include $path; // this path is full addressed and checked to be valid
			}

			return ob_get_clean();
		}

	}
}


if ( ! function_exists( 'bf_is_crawler' ) ) {
	/**
	 * Detect crawler.
	 *
	 * Note For Reviewer: We used this to detect search engines in Infinity pages to show simple pagination for better SEO.
	 *
	 * @return array
	 */
	function bf_is_crawler( $user_agent = '' ) {

		static $is_crawler;

		if ( ! is_null( $is_crawler ) ) {
			return $is_crawler;
		}

		if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) {
			return $is_crawler = false;
		}

		if ( empty( $user_agent ) ) {
			$user_agent = $_SERVER['HTTP_USER_AGENT'];
		}

		$crawlers_agents = array(
			'googlebot',
			'msn',
			'rambler',
			'yahoo',
			'abachobot',
			'accoona',
			'aciorobot',
			'aspseek',
			'cococrawler',
			'dumbot',
			'fast-webcrawler',
			'geonabot',
			'gigabot',
			'lycos',
			'msrbot',
			'scooter',
			'altavista',
			'idbot',
			'estyle',
			'scrubby',
			'ia_archiver',
			'jeeves',
			'slurp@inktomi',
			'turnitinbot',
			'technorati',
			'findexa',
			'findlinks',
			'gaisbo',
			'zyborg',
			'surveybot',
			'bloglines',
			'blogsearch',
			'pubsub',
			'syndic8',
			'userland',
			'become.com',
			'baiduspider',
			'360spider',
			'spider',
			'sosospider',
			'yandex',
		);

		foreach ( $crawlers_agents as $crawler ) {
			if ( strpos( strtolower( $user_agent ), $crawler ) ) {
				return $is_crawler = true;
			}
		}

		return $is_crawler = false;

	} // bf_is_crawler
}


if ( ! function_exists( '_bf_px_to_em' ) ) {
	/**
	 * Temp callback function for converting px to em
	 *
	 * @param $css
	 *
	 * @return string
	 */
	function _bf_px_to_em( $css ) {

		return $css[1] / 12 . 'em';
	}
}

if ( ! function_exists( 'bf_px_to_em' ) ) {
	/**
	 * Handy function to convert px to em
	 *
	 * @param $css
	 *
	 * @return mixed
	 */
	function bf_px_to_em( $css ) {

		return preg_replace_callback( '/([0-9]+)px/', '_bf_px_to_em', $css );
	}
}


if ( ! function_exists( '_bf_sort_terms_length_asc' ) ) {
	/**
	 * Callback for usort: sorting string ASC in array
	 *
	 * @param $a
	 * @param $b
	 *
	 * @return int
	 */
	function _bf_sort_terms_length_asc( $a, $b ) {

		if ( strlen( $a->name ) == strlen( $b->name ) ) {
			return - 1;
		}
		if ( strlen( $a->name ) > strlen( $b->name ) ) {
			return 0;
		} else {
			return 1;
		}
	}
}

if ( ! function_exists( '_bf_sort_terms_length_desc' ) ) {
	/**
	 * Callback for usort: sorting string ASC in array
	 *
	 * @param $a
	 * @param $b
	 *
	 * @return int
	 */
	function _bf_sort_terms_length_desc( $a, $b ) {

		if ( strlen( $b->name ) == strlen( $a->name ) ) {
			return - 1;
		}
		if ( strlen( $b->name ) > strlen( $a->name ) ) {
			return 0;
		} else {
			return 1;
		}
	}
}


if ( ! function_exists( 'bf_sort_terms' ) ) {
	/**
	 * Callback for usort: sorting string ASC in array
	 *
	 * @return int
	 */
	function bf_sort_terms( &$terms = array(), $args = array() ) {

		$defaults = array(
			'orderby' => 'length',
			'order'   => 'desc',
		);

		$args = bf_merge_args( $args, $defaults );

		switch ( $args['orderby'] ) {

			// sort terms by name length
			case 'length':

				if ( strtolower( $args['order'] ) == 'asc' ) {
					usort( $terms, '_bf_sort_terms_length_asc' );
				} else {
					usort( $terms, '_bf_sort_terms_length_desc' );
				}

				break;

		}

	} // bf_sort_terms
}


if ( ! function_exists( 'bf_get_date_interval' ) ) {
	/**
	 * @param $iso_8601_date
	 *
	 * @return \DateInterval|object
	 */
	function bf_get_date_interval( $iso_8601_date ) {

		if ( class_exists( 'DateInterval' ) ) {
			return new DateInterval( $iso_8601_date );
		} else {

			/**
			 * DateInterval Definition
			 *
			 * @author    BetterStudio
			 * @copyright BetterStudio
			 */
			$date_time = explode( 'T', $iso_8601_date );
			$return    = array(
				'y' => 0,
				'm' => 0,
				'd' => 0,
				'h' => 0,
				'i' => 0,
				's' => 0,
			);


			$formats = array(
				//date format
				array(
					'y' => 'y',
					'm' => 'm',
					'd' => 'd',
				),
				//time format
				array(
					'h' => 'h',
					'm' => 'i',
					's' => 's'
				)
			);

			foreach ( $date_time as $format_id => $iso_8601 ) {

				if ( preg_match_all( '#(\d+)([a-z]{1})*#i', $iso_8601, $match ) ) {
					$length = count( $match[1] );

					for ( $i = 0; $i < $length; $i ++ ) {
						$number = intval( $match[1][ $i ] );
						$char   = strtolower( $match[2][ $i ] );

						if ( isset( $formats[ $format_id ][ $char ] ) ) {
							$idx = &$formats[ $format_id ][ $char ];

							$return[ $idx ] = $number;
						}

					}


				}
			}

			return (object) $return;
		}
	}
}


if ( ! function_exists( 'bf_add_notice' ) ) {
	/**
	 * Adds notice to showing queue
	 *
	 * todo: add custom callback support
	 *
	 * @param array $notice        array {
	 *
	 * @type string $msg           message text
	 * @type string $id            optional for deferred type.notice unique id
	 * @type string $state         optional. success|warning|danger - default:success
	 * @type string $thumbnail     optional. thumbnail image url
	 * @type array  $class         optional. notice custom classes
	 * @type string $type          optional. Notice type is one of the deferred|fixed. - default: deferred.
	 * @type array  $page          optional. display notice on specific page. its an array of $pagenow values
	 * @type bool   $dismissible   optional. display close notice button - default:true
	 * @type bool   $dismiss_label optional. dismiss button label - default:none
	 * }
	 *
	 * @since 2.5.7
	 * @return bool true on success or false on error.
	 */
	function bf_add_notice( $notice ) {

		return Better_Framework()->admin_notices()->add_notice( $notice );
	}
}


if ( ! function_exists( 'bf_remove_notice' ) ) {
	/**
	 * Remove a notice from notices storage
	 *
	 * todo: add custom callback support
	 *
	 * @since 2.14.0
	 *
	 * @param string|int|array $notice_id the notice unique id
	 *
	 * @return bool true on success or false on error.
	 */
	function bf_remove_notice( $notice_id ) {

		return Better_Framework()->admin_notices()->remove_notice( $notice_id );
	}
}


if ( ! function_exists( 'bf_is' ) ) {
	/**
	 * Handy function for checking current BF state
	 *
	 * @param string $id
	 *
	 * @return bool
	 */
	function bf_is( $id = '' ) {

		switch ( $id ) {

			/*
			 *
			 * Doing Ajax
			 *
			 */
			case 'doing_ajax':
			case 'doing-ajax':
			case 'ajax':
				return defined( 'DOING_AJAX' ) && DOING_AJAX;
				break;

			/*
			 *
			 * Development Mode
			 *
			 */
			case 'dev':
				return defined( 'BF_DEV_MODE' ) && BF_DEV_MODE;
				break;

			/*
			 *
			 * Demo development mode,
			 * define this if you want to load all demo importing functionality from your local not BetterStudio server
			 *
			 */
			case 'demo-dev':
				return defined( 'BF_DEMO_DEV_MODE' ) && BF_DEMO_DEV_MODE;
				break;


			default:
				return false;
		}

	} // bf_is
}


if ( ! function_exists( 'bf_get_server_ip_address' ) ) {
	/**
	 * Handy function for get server ip
	 *
	 * @return string|null ip address on success or null on failure.
	 */
	function bf_get_server_ip_address() {

		$transient_id = 'bf_server_ip_address';

		if ( $server_ip = get_transient( $transient_id ) ) {
			return $server_ip;
		}

		global $is_IIS;

		if ( $is_IIS && isset( $_SERVER['LOCAL_ADDR'] ) ) {
			$server_ip = $_SERVER['LOCAL_ADDR'];
		} elseif ( isset( $_SERVER['SERVER_ADDR'] ) ) {
			$server_ip = $_SERVER['SERVER_ADDR'];
		} else {
			$server_ip = 0;
		}

		if ( ( $server_ip == 0 || $server_ip == '127.0.0.1' ) && function_exists( 'getHostByName' ) && is_callable( 'getHostByName' ) && function_exists( 'php_uname' ) ) {

			$server_ip = getHostByName( php_uname( 'n' ) );

			set_transient( $transient_id, $server_ip, HOUR_IN_SECONDS * 2 );

			return $server_ip;
		}

		//if ( $ip === '::1' || filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE ) !== false ) {
		if ( $server_ip === '::1' || filter_var( $server_ip, FILTER_VALIDATE_IP ) !== false ) {
			return $server_ip;
		}

		return NULL;
	}
}


if ( ! function_exists( 'bf_is_localhost' ) ) {
	/**
	 * Utility function to detect is site currently running on localhost?
	 *
	 * @return bool
	 */
	function bf_is_localhost() {

		$server_ip      = bf_get_server_ip_address();
		$server_ip_long = ip2long( $server_ip );

		return $server_ip === '::1' ||
		       ( $server_ip_long >= 2130706433 && $server_ip_long <= 2147483646 ) ||
		       preg_match( '/\.local(:?host)?$/', $server_ip );
	}
}

if ( ! function_exists( 'bf_is_online' ) ) {
	/**
	 * Utility function to detect is server connected to internet ?
	 *
	 * @return bool
	 */
	function bf_is_online() {

		if ( bf_is_localhost() ) {

			$test = wp_remote_get( 'http://api.wordpress.org/core/version-check/1.7/' );

			return ! is_wp_error( $test );
		}

		return true;
	}
}


if ( ! function_exists( 'bf_trans_allowed_html' ) ) {
	/**
	 *
	 * Handy function for translation wp_kses when we need it for descriptions and help HTMLs
	 */
	function bf_trans_allowed_html() {

		return array(
			'a'      => array(
				'href'   => array(),
				'target' => array(),
				'id'     => array(),
				'class'  => array(),
				'rel'    => array(),
				'style'  => array(),
			),
			'span'   => array(
				'class' => array(),
				'id'    => array(),
				'style' => array(),
			),
			'p'      => array(
				'class' => array(),
				'id'    => array(),
				'style' => array(),
			),
			'strong' => array(
				'class' => array(),
				'style' => array(),
			),
			'hr'     => array(
				'class' => array(),
			),
			'br'     => '',
			'b'      => '',
			'h6'     => array(
				'class' => array(),
				'id'    => array(),
			),
			'h5'     => array(
				'class' => array(),
				'id'    => array(),
			),
			'h4'     => array(
				'class' => array(),
				'id'    => array(),
			),
			'h3'     => array(
				'class' => array(),
				'id'    => array(),
			),
			'h2'     => array(
				'class' => array(),
				'id'    => array(),
			),
			'h1'     => array(
				'class' => array(),
				'id'    => array(),
			),
			'code'   => array(
				'class' => array(),
				'id'    => array(),
			),
			'em'     => array(
				'class' => array(),
			),
			'i'      => array(
				'class' => array(),
			),
			'img'    => array(
				'class' => array(),
				'style' => array(),
			),
			'label'  => array(
				'for'   => array(),
				'style' => array(),
			),
			'ol'     => array(
				'class' => array(),
			),
			'ul'     => array(
				'class' => array(),
			),
			'li'     => array(
				'class' => array(),
			),
		);
	}
}

if ( ! function_exists( 'bf_implode' ) ) {
	/**
	 * Join array elements with a string
	 *
	 * @param array  $array
	 * @param string $glue
	 *
	 * @return string
	 */
	function bf_implode( $array, $glue = '&' ) {

		return implode( $glue, $array );
	}
}
if ( ! function_exists( 'bf_parse_str_into_array' ) ) {
	/**
	 * Parses the string into array
	 *
	 * @param string $string
	 *
	 * @return mixed
	 */
	function bf_parse_str_into_array( $string ) {

		parse_str( $string, $array );

		return $array;
	}
}
if ( ! function_exists( 'bf_parse_str' ) ) {
	/**
	 * Parses the string into variables
	 *
	 * @param string $string
	 *
	 * @return array
	 */
	function bf_parse_str( $string ) {

		$max_vars = @ini_get( 'max_input_vars' );
		$max_vars = $max_vars ? $max_vars : 500;

		$array = explode( '&', $string );
		$array = array_chunk( $array, $max_vars );

		$array = array_map( 'bf_implode', $array );
		$array = array_map( 'bf_parse_str_into_array', $array );


		$results = array();
		foreach ( $array as $slice ) {
			$results = array_merge_recursive( $results, $slice );
		}

		return $results;
	}
}

if ( ! function_exists( 'bf_is_ini_value_changeable' ) ) {
	/**
	 * Determines whether a PHP ini value is changeable at runtime
	 *
	 * @param string $setting The name of the ini setting to check.
	 *
	 * @return bool true if the value is changeable at runtime. False otherwise.
	 */
	function bf_is_ini_value_changeable( $setting = 'memory_limit' ) {

		if ( is_callable( 'wp_is_ini_value_changeable' ) ) {
			$args = func_get_args();

			if ( empty( $args ) ) {
				$args = array(
					$setting
				);
			}

			return call_user_func_array( 'wp_is_ini_value_changeable', $args );
		}

		/**
		 * implementation of wp_is_ini_value_changeable
		 */

		static $ini_all;

		if ( ! isset( $ini_all ) ) {
			$ini_all = ini_get_all();
		}

		// Bit operator to workaround https://bugs.php.net/bug.php?id=44936 which changes access level to 63 in PHP 5.2.6 - 5.2.17.
		if ( isset( $ini_all[ $setting ]['access'] ) && ( INI_ALL === ( $ini_all[ $setting ]['access'] & 7 ) || INI_USER === ( $ini_all[ $setting ]['access'] & 7 ) ) ) {
			return true;
		}

		return false;
	}
}

if ( ! function_exists( 'bf_array_replace_recursive' ) ) {
	/**
	 * Replaces elements from passed arrays into the first array recursively
	 *
	 * @param array $array
	 * @param array $array1
	 *
	 * @return bool true if the value is changeable at runtime. False otherwise.
	 */
	function bf_array_replace_recursive( $array, $array1 ) {

		$args = func_get_args();

		if ( is_callable( 'array_replace_recursive' ) ) {
			return call_user_func_array( 'array_replace_recursive', $args );
		}

		// handle the arguments, merge one by one
		$array = $args[0];
		if ( ! is_array( $array ) ) {
			return $array;
		}

		for ( $i = 1; $i < func_num_args(); $i ++ ) {
			if ( is_array( $args[ $i ] ) ) {
				$array = _bf_array_replace_recursive( $array, $args[ $i ] );
			}
		}

		return $array;
	}

	if ( ! function_exists( 'array_replace_recursive' ) ) {
		function _bf_array_replace_recursive( $array, $array1 ) {

			foreach ( $array1 as $key => $value ) {
				// create new key in $array, if it is empty or not an array
				if ( ! isset( $array[ $key ] ) || ( isset( $array[ $key ] ) && ! is_array( $array[ $key ] ) ) ) {
					$array[ $key ] = array();
				}

				// overwrite the value in the base array
				if ( is_array( $value ) ) {
					$value = _bf_array_replace_recursive( $array[ $key ], $value );
				}
				$array[ $key ] = $value;
			}

			return $array;
		}
	}
}

if ( ! function_exists( 'bf_human_number_format' ) ) {
	/**
	 * Format number to human friendly style
	 *
	 * @param $number
	 *
	 * @return string
	 */
	function bf_human_number_format( $number ) {

		if ( ! is_numeric( $number ) ) {
			return $number;
		}

		if ( $number >= 1000000 ) {
			return round( ( $number / 1000 ) / 1000, 1 ) . "M";
		} elseif ( $number >= 100000 ) {
			return round( $number / 1000, 0 ) . "k";
		} else {
			return @number_format( $number );
		}

	}
}


if ( ! function_exists( 'bf_merge_args' ) ) {
	/**
	 * Merges 2 array quickly
	 *
	 * @param array $args
	 * @param array $default
	 *
	 * @return array
	 */
	function bf_merge_args( $args, array $default = array() ) {

		if ( is_string( $args ) ) {
			$_args = array();
			$args  = wp_parse_str( $args, $_args );
			$args  = $_args;
		}

		if ( empty( $default ) ) {
			return $args;
		}

		foreach ( $default as $_def => $value ) {
			if ( ! isset( $args[ $_def ] ) ) {
				$args[ $_def ] = $value;
			}
		}

		return $args;
	}
}


if ( ! function_exists( 'bf_map_deep' ) ) {

	/**
	 * Maps a function to all non-iterable elements of an array or an object.
	 *
	 * @param mixed    $value    The array, object, or scalar.
	 * @param callable $callback The function to map onto $value.
	 *
	 * @see map_deep
	 * @return mixed
	 */
	function bf_map_deep( $value, $callback ) {

		if ( function_exists( 'map_deep' ) ) {
			return map_deep( $value, $callback );
		}

		/**
		 * map_deep function implementation for WP < 4.4.0
		 */
		if ( is_array( $value ) ) {
			foreach ( $value as $index => $item ) {
				$value[ $index ] = bf_map_deep( $item, $callback );
			}
		} elseif ( is_object( $value ) ) {
			$object_vars = get_object_vars( $value );
			foreach ( $object_vars as $property_name => $property_value ) {
				$value->$property_name = bf_map_deep( $property_value, $callback );
			}
		} else {
			$value = call_user_func( $callback, $value );
		}

		return $value;
	}
}


if ( ! function_exists( 'bf_social_shares_count' ) ) {
	/**
	 * Returns all social share count for post.
	 *
	 * @param $sites
	 *
	 * @return array|mixed|void
	 */
	function bf_social_shares_count( $sites ) {

		$sites = array_intersect_key( $sites, array( // Valid sites
		                                             'facebook'    => '',
		                                             'twitter'     => '',
		                                             'google_plus' => '',
		                                             'pinterest'   => '',
		                                             'linkedin'    => '',
		                                             'tumblr'      => '',
		                                             'reddit'      => '',
		                                             'stumbleupon' => '',
		) );

		// Disable social share in localhost
		if ( bf_is_localhost() ) {
			return array();
		}

		$post_id = get_the_ID();
		$expired = (int) get_post_meta( $post_id, 'bs_social_share_interval', true );
		$results = array();

		$update_cache = false;

		if ( $expired < time() ) {
			$update_cache = true;
		} else {

			// get count from cache storage
			foreach ( $sites as $site_id => $is_active ) {
				if ( ! $is_active ) {
					continue;
				}

				$count_number = get_post_meta( $post_id, 'bs_social_share_' . $site_id, true );
				$update_cache = $count_number === '';

				if ( $update_cache ) {
					break;
				}

				$results[ $site_id ] = $count_number;
			}
		}

		if ( $update_cache ) { // Update cache storage if needed
			$current_page = bf_social_share_guss_current_page();

			foreach ( $sites as $site_id => $is_active ) {
				if ( ! $is_active ) {
					continue;
				}

				$count_number = bf_social_share_fetch_count( $site_id, $current_page['page_permalink'] );

				update_post_meta( $post_id, 'bs_social_share_' . $site_id, $count_number );

				$results[ $site_id ] = $count_number;
			}

			/**
			 *
			 * This filter can be used to change share count time.
			 *
			 */
			$cache_time = apply_filters( 'bs-social-share/cache-time', MINUTE_IN_SECONDS * 120, $post_id );

			update_post_meta( $post_id, 'bs_social_share_interval', time() + $cache_time );
		}

		return apply_filters( 'bs-social-share/shares-count', $results );
	} // bf_social_shares_count
}


if ( ! function_exists( 'bf_social_share_guss_current_page' ) ) {
	/**
	 * Detects and returns current page info for social share
	 *
	 * @param WP_Query $query
	 *
	 * @return array
	 */
	function bf_social_share_guss_current_page( $query = NULL ) {

		if ( is_null( $query ) ) {
			global $wp_query;
			$query = $wp_query;
		}

		if ( bf_is_doing_ajax() ) {
			$page_title = get_the_title();

			if ( bf_social_share_permalink_type() === 'permalink' ) {
				$page_permalink = get_the_permalink();
			} else {
				$page_permalink = wp_get_shortlink();
			}
		} elseif ( $query->is_singular() ) {
			$page_title = get_the_title();

			if ( bf_social_share_permalink_type() === 'permalink' ) {
				$page_permalink = get_the_permalink();
			} else {
				$page_permalink = wp_get_shortlink();
			}
		} elseif ( $query->is_home() || $query->is_front_page() ) {
			$page_title     = get_bloginfo( 'name' );
			$page_permalink = home_url( '/' );
		} elseif ( $query->is_category() || $query->is_tag() || $query->is_tax() ) {
			$page_title     = single_term_title( '', false );
			$page_permalink = '';

			if ( bf_social_share_permalink_type() === 'shortlink' ) {

				$queried_object = get_queried_object();

				if ( ! empty( $queried_object->taxonomy ) ) {

					if ( 'category' == $queried_object->taxonomy ) {
						$page_permalink = "?cat=$queried_object->term_id";
					} else {
						$tax = get_taxonomy( $queried_object->taxonomy );

						if ( $tax->query_var ) {
							$page_permalink = "?$tax->query_var=$queried_object->slug";
						} else {
							$page_permalink = "?taxonomy=$queried_object->taxonomy&term=$queried_object->term_id";
						}
					}

					$page_permalink = home_url( $page_permalink );
				}
			}

			if ( empty( $page_permalink ) ) {
				$page_permalink = get_term_link( $query->get_queried_object_id() );
			}

		} else {
			$page_title     = get_bloginfo( 'name' );
			$page_permalink = get_home_url();
		}

		if ( ! empty( $page_title ) ) {
			$page_title = urlencode( strip_tags( $page_title ) );
		}

		return compact( 'page_title', 'page_permalink' );
	}
}


if ( ! function_exists( 'bf_social_share_permalink_type' ) ) {
	/**
	 * Returns permalink type for share system
	 *
	 * @return array
	 */
	function bf_social_share_permalink_type() {

		static $type;

		if ( $type ) {
			return $type;
		}

		return $type = apply_filters( 'better-framework/share/permalink/type', 'permalink' );
	}
}


if ( ! function_exists( 'bf_social_share_fetch_count' ) ) {
	/**
	 * Fetches share count for URL
	 *
	 * @param $site_id
	 * @param $url
	 *
	 * @return int
	 */
	function bf_social_share_fetch_count( $site_id, $url ) {

		$count       = 0;
		$remote_args = array(
			'sslverify' => false,
		);

		switch ( $site_id ) {

			case 'facebook':

				static $fb_api;

				if ( ! $fb_api ) {
					$fb_api = apply_filters( 'better-framework/api/token/facebook', array(
						'id'     => '',
						'secret' => '',
					) );
				}

				if ( ! empty( $fb_api['id'] ) && ! empty( $fb_api['secret'] ) ) {
					$api_url = 'https://graph.facebook.com/v2.9/?id=' . urlencode( $url ) . '&fields=engagement&access_token=' . $fb_api['id'] . '|' . $fb_api['secret'];
				} else {
					$api_url = 'http://graph.facebook.com/?id=' . urlencode( $url );
				}

				$remote = wp_remote_get( $api_url, $remote_args );

				if ( ! is_wp_error( $remote ) ) {

					$response = json_decode( wp_remote_retrieve_body( $remote ), true );

					$count = 0;

					if ( isset( $response['engagement']['reaction_count'] ) ) {
						$count += $response['engagement']['reaction_count'];
					}

					if ( isset( $response['engagement']['comment_count'] ) ) {
						$count += $response['engagement']['comment_count'];
					}

					if ( isset( $response['engagement']['comment_plugin_count'] ) ) {
						$count += $response['engagement']['comment_plugin_count'];
					}

					if ( isset( $response['engagement']['share_count'] ) ) {
						$count += $response['engagement']['share_count'];
					} elseif ( isset( $response['share']['share_count'] ) ) {
						$count += $response['share']['share_count'];
					}
				}

				// FB limit
				if ( wp_remote_retrieve_response_code( $remote ) == 403 ) {
					Better_Framework()->admin_notices()->add_notice( array(
						'type'        => 'static',
						'dismissible' => true,
						'id'          => 'share-facebook-rate-limit',
						'state'       => 'warning',
						'msg'         => __( 'Facebook API rate limitation was reached. You\'r site will have some limitation in Facebook share count.', 'better-studio' ),
						'user_role'   => array( 'administrator' ),
					) );
				}

				break;

			case 'twitter':

				$remote = wp_remote_get( 'http://public.newsharecounts.com/count.json?callback=&url=' . $url, $remote_args );

				if ( ! is_wp_error( $remote ) ) {

					$response = json_decode( wp_remote_retrieve_body( $remote ), true );

					if ( isset( $response['count'] ) ) {
						$count = $response['count'];
					}

				}

				break;

			case 'google_plus':
				$post_data = '[{"method":"pos.plusones.get","id":"p","params":{"nolog":true,"id":"' . rawurldecode( $url ) . '","source":"widget","userId":"@viewer","groupId":"@self"},"jsonrpc":"2.0","key":"p","apiVersion":"v1"}]';

				$remote = wp_remote_post( 'https://clients6.google.com/rpc', array(
					'body'      => $post_data,
					'headers'   => 'Content-type: application/json',
					'sslverify' => false,
				) );

				if ( ! is_wp_error( $remote ) ) {

					$response = json_decode( wp_remote_retrieve_body( $remote ), true );

					if ( isset( $response[0]['result']['metadata']['globalCounts']['count'] ) ) {
						$count = $response[0]['result']['metadata']['globalCounts']['count'];
					}

				}

				break;

			case 'pinterest':
				$remote = wp_remote_get( 'http://api.pinterest.com/v1/urls/count.json?callback=CALLBACK&url=' . $url, $remote_args );

				if ( ! is_wp_error( $remote ) ) {

					if ( preg_match( '/^\s*CALLBACK\s*\((.+)\)\s*$/', wp_remote_retrieve_body( $remote ), $match ) ) {
						$response = json_decode( $match[1], true );

						if ( isset( $response['count'] ) ) {
							$count = $response['count'];
						}
					}

				}

				break;

			case 'linkedin':
				$remote = wp_remote_get( 'https://www.linkedin.com/countserv/count/share?format=json&url=' . $url, $remote_args );

				if ( ! is_wp_error( $remote ) ) {

					$response = json_decode( wp_remote_retrieve_body( $remote ), true );

					if ( isset( $response['count'] ) ) {
						$count = $response['count'];
					}

				}

				break;

			case 'tumblr':
				$remote = wp_remote_get( 'http://api.tumblr.com/v2/share/stats?url=' . $url, $remote_args );

				if ( ! is_wp_error( $remote ) ) {

					$response = json_decode( wp_remote_retrieve_body( $remote ), true );

					if ( isset( $response['response']['note_count'] ) ) {
						$count = $response['response']['note_count'];
					}

				}

				break;


			case 'reddit':
				$remote = wp_remote_get( 'http://www.reddit.com/api/info.json?url=' . $url, $remote_args );

				if ( ! is_wp_error( $remote ) ) {

					$response = json_decode( $remote['body'], true );

					if ( isset( $response['data']['children']['0']['data']['score'] ) ) {
						$count = $response['data']['children']['0']['data']['score'];
					}

				}

				break;

			case 'stumbleupon':
				$remote = wp_remote_get( 'http://www.stumbleupon.com/services/1.01/badge.getinfo?url=' . $url, $remote_args );

				if ( ! is_wp_error( $remote ) ) {

					$response = json_decode( $remote['body'], true );

					if ( isset( $response['result']['views'] ) ) {
						$count = $response['result']['views'];
					}

				}


				break;

		}

		return $count;
	} // bf_social_share_fetch_count
}

if ( ! function_exists( 'bf_esc_file_path' ) ) {

	/**
	 * Sanitize file path
	 *
	 * @param string $path
	 *
	 * @since 2.9.0
	 * @return string
	 */
	function bf_esc_file_path( $path ) {

		$path = str_replace( '/./', '/', $path );
		if ( strstr( $path, '..' ) ) {
			$join = explode( '/', $path );
			$key  = - 1;
			foreach ( $join as $j ) {
				$key ++;
				if ( trim( $j ) == '..' ) {
					unset( $join[ $key - 1 ] );
					unset( $join[ $key ] );
					$key  -= 2;
					$join = array_merge( $join, array() );//sort keys
				}
			}
			$path = implode( '/', $join );
		}

		return $path;
	}
}


if ( ! function_exists( 'bf_array_insert_before' ) ) {

	/**
	 * Inserts a new key/value before the key in the array.
	 *
	 * @param  string $key       The key to insert before.
	 * @param  array  $array     An array to insert in to.
	 * @param  string $new_key   The key to insert.
	 * @param  mixed  $new_value An value to insert.
	 *
	 * @since 2.10.0
	 * @return array The new array if the key exists, false otherwise.
	 */
	function bf_array_insert_before( $key, array &$array, $new_key, $new_value ) {

		if ( array_key_exists( $key, $array ) ) {
			$new = array();
			foreach ( $array as $k => $value ) {
				if ( $k === $key ) {
					$new[ $new_key ] = $new_value;
				}
				$new[ $k ] = $value;
			}

			return $new;
		}

		return false;
	}
}


if ( ! function_exists( 'bf_array_insert_after' ) ) {

	/**
	 * Inserts a new key/value after the key in the array.
	 *
	 * @param string $key       The key to insert after.
	 * @param array  $array     An array to insert in to.
	 * @param string $new_key   The key to insert.
	 * @param mixed  $new_value An value to insert.
	 *
	 * @since 2.10.0
	 * @return array The new array if the key exists, false otherwise.
	 */
	function bf_array_insert_after( $key, array &$array, $new_key, $new_value ) {

		if ( array_key_exists( $key, $array ) ) {

			$new = array();

			foreach ( $array as $k => $value ) {

				$new[ $k ] = $value;

				if ( $k === $key ) {
					$new[ $new_key ] = $new_value;
				}
			}

			return $array = $new;

		} else {
			$array[ $new_key ] = $new_value;
		}

		return $array;
	}
}


if ( ! function_exists( 'bf_list_attributes' ) ) {

	/**
	 * List all html tag attributes
	 *
	 * @note
	 *
	 * use wp_kses_hair to parse attributes in more detail
	 *
	 * @param string $tag
	 *
	 * @note  use wp_kses_hair to parse attributes in more detail
	 *
	 * @since 2.10.0
	 * @return array|bool array on success or false on failure.
	 */
	function bf_list_attributes( $tag ) {

		if ( ! preg_match_all( "'\s+(.*?)\s*=\s*	    # find  attribute=
						([\"\'])?					    # find single or double quote
						(?(2) (.*?)\\2 | ([^\s\>]+))	# if quote found, match up to next matching
						'isx", $tag, $match )
		) {
			return false;
		}

		$atts = array();

		foreach ( $match[1] as $index => $attr_key ) {

			$value_index = $match[2][ $index ] ? 3 : 4;
			$attr_value  = $match[ $value_index ][ $index ];

			$atts[ $attr_key ] = $attr_value;
		}

		return $atts;
	}
}


if ( ! function_exists( 'bf_get_align' ) ) {
	/**
	 * Get current direction
	 *
	 * @param boolean $opposite
	 *
	 * @since 2.10.0
	 * @return string
	 */
	function bf_get_align( $opposite = false ) {

		return ( ( is_rtl() xor $opposite ) ? 'right' : 'left' );
	}
}


if ( ! function_exists( '_bf_reverse_right_left' ) ) {
	/**
	 *
	 *
	 * @param array $matches
	 *
	 * @use   private
	 *
	 * @since 2.10.0
	 * @return string
	 */
	function _bf_reverse_right_left( $matches ) {

		return $matches[1] === 'right' ? 'left' : 'right';
	}
}


if ( ! function_exists( 'bf_reverse_direction' ) ) {
	/**
	 * Reverse right/left words in RTL site direction
	 *
	 * @param string $string
	 *
	 * @since 2.10.0
	 * @return string
	 */
	function bf_reverse_direction( $string ) {

		if ( is_rtl() ) {
			$string = preg_replace_callback( '/\b(left|right)\b/', '_bf_reverse_right_left', $string );
		}

		return $string;
	}
}


if ( ! function_exists( 'bf_remove_class_filter' ) ) {
	/**
	 * Remove Class Filter Without Access to Class Object
	 *
	 * In order to use the core WordPress remove_filter() on a filter added with the callback
	 * to a class, you either have to have access to that class object, or it has to be a call
	 * to a static method.  This method allows you to remove filters with a callback to a class
	 * you don't have access to.
	 *
	 * Works with WordPress 1.2+ (4.7+ support added 9-19-2016)
	 * Updated 2-27-2017 to use internal WordPress removal for 4.7+ (to prevent PHP warnings output)
	 *
	 * @param string $tag         Filter to remove
	 * @param string $class_name  Class name for the filter's callback
	 * @param string $method_name Method name for the filter's callback
	 * @param int    $priority    Priority of the filter (default 10)
	 *
	 *
	 * Copyright: https://gist.github.com/tripflex/c6518efc1753cf2392559866b4bd1a53
	 *
	 * @return bool Whether the function is removed.
	 */
	function bf_remove_class_filter( $tag, $class_name = '', $method_name = '', $priority = 10 ) {

		global $wp_filter;

		// Check that filter actually exists first
		if ( ! isset( $wp_filter[ $tag ] ) ) {
			return false;
		}

		/**
		 * If filter config is an object, means we're using WordPress 4.7+ and the config is no longer
		 * a simple array, rather it is an object that implements the ArrayAccess interface.
		 *
		 * To be backwards compatible, we set $callbacks equal to the correct array as a reference (so $wp_filter is updated)
		 *
		 * @see https://make.wordpress.org/core/2016/09/08/wp_hook-next-generation-actions-and-filters/
		 */
		if ( is_object( $wp_filter[ $tag ] ) && isset( $wp_filter[ $tag ]->callbacks ) ) {
			// Create $fob object from filter tag, to use below
			$fob       = $wp_filter[ $tag ];
			$callbacks = &$wp_filter[ $tag ]->callbacks;
		} else {
			$callbacks = &$wp_filter[ $tag ];
		}

		// Exit if there aren't any callbacks for specified priority
		if ( ! isset( $callbacks[ $priority ] ) || empty( $callbacks[ $priority ] ) ) {
			return false;
		}

		// Loop through each filter for the specified priority, looking for our class & method
		foreach ( (array) $callbacks[ $priority ] as $filter_id => $filter ) {
			// Filter should always be an array - array( $this, 'method' ), if not goto next
			if ( ! isset( $filter['function'] ) || ! is_array( $filter['function'] ) ) {
				continue;
			}
			// If first value in array is not an object, it can't be a class
			if ( ! is_object( $filter['function'][0] ) ) {
				continue;
			}
			// Method doesn't match the one we're looking for, goto next
			if ( $filter['function'][1] !== $method_name ) {
				continue;
			}
			// Method matched, now let's check the Class
			if ( get_class( $filter['function'][0] ) === $class_name ) {
				// WordPress 4.7+ use core remove_filter() since we found the class object
				if ( isset( $fob ) ) {
					// Handles removing filter, reseting callback priority keys mid-iteration, etc.
					$fob->remove_filter( $tag, $filter['function'], $priority );
				} else {
					// Use legacy removal process (pre 4.7)
					unset( $callbacks[ $priority ][ $filter_id ] );
					// and if it was the only filter in that priority, unset that priority
					if ( empty( $callbacks[ $priority ] ) ) {
						unset( $callbacks[ $priority ] );
					}
					// and if the only filter for that tag, set the tag to an empty array
					if ( empty( $callbacks ) ) {
						$callbacks = array();
					}
					// Remove this filter from merged_filters, which specifies if filters have been sorted
					unset( $GLOBALS['merged_filters'][ $tag ] );
				}

				return true;
			}
		}

		return false;
	} // bf_remove_class_filter
}


if ( ! function_exists( 'bf_remove_class_action' ) ) {
	/**
	 * Remove Class Action Without Access to Class Object
	 *
	 * In order to use the core WordPress remove_action() on an action added with the callback
	 * to a class, you either have to have access to that class object, or it has to be a call
	 * to a static method.  This method allows you to remove actions with a callback to a class
	 * you don't have access to.
	 *
	 * Works with WordPress 1.2+ (4.7+ support added 9-19-2016)
	 *
	 * @param string $tag         Action to remove
	 * @param string $class_name  Class name for the action's callback
	 * @param string $method_name Method name for the action's callback
	 * @param int    $priority    Priority of the action (default 10)
	 *
	 * Copyright: https://gist.github.com/tripflex/c6518efc1753cf2392559866b4bd1a53
	 *
	 * @return bool               Whether the function is removed.
	 */
	function bf_remove_class_action( $tag, $class_name = '', $method_name = '', $priority = 10 ) {

		return bf_remove_class_filter( $tag, $class_name, $method_name, $priority );
	}
}


if ( ! function_exists( 'bf_item_can_shown' ) ) {
	/**
	 * detects item can shown or not
	 *
	 * @param array $item
	 *
	 * @return bool
	 */
	function bf_item_can_shown( $item = array() ) {

		if ( empty( $item ) ) {
			return false;
		}

		// Page filter
		if ( ! empty( $item['page'] ) ) {

			if ( is_admin() ) {
				global $pagenow;

				return in_array( $pagenow, (array) $item['page'] );
			}
		}


		// User role filter
		if ( ! empty( $item['user_role'] ) ) {

			if ( is_string( $item['user_role'] ) ) {
				$item['user_role'] = array( $item['user_role'] );
			}

			$user = wp_get_current_user();

			if ( ! array_intersect( $item['user_role'], (array) $user->roles ) ) {
				return false;
			}
		}

		return true;
	}
}


if ( ! function_exists( 'bf_render_css_block_array' ) ) {
	/**
	 * Converts BF CSS Array to CSS code
	 *
	 * @param array $block
	 * @param       $value
	 *
	 * @return array
	 */
	function bf_render_css_block_array( $block, $value ) {

		if ( empty( $block ) || ! is_array( $block ) ) {
			return array( 'code' => '' );
		}

		$result = array(
			'code' => '',
		);

		$skip_validation = empty( $block['skip_validation'] );

		// if value is empty
		if ( ( $value === false || $value == '' ) && $skip_validation ) {
			return $result;
		} elseif ( ! $skip_validation ) {
			unset( $block['skip_validation'] );
		}

		// Custom callbacks for generating CSS
		if ( isset( $block['callback'] ) && is_callable( $block['callback'] ) ) {
			call_user_func_array( $block['callback'], array( &$block, &$value ) );
		}


		$after_value = '';
		$after_block = '';

		// Uncompressed in dev mode
		if ( bf_is( 'dev' ) ) {
			$ln_char  = "\n";
			$tab_char = "\t";
		} else {
			$ln_char  = "";
			$tab_char = "";
		}

		if ( isset( $block['newline'] ) ) {
			$result['code'] .= "\r\n";
		}

		if ( isset( $block['comment'] ) || ! empty( $block['comment'] ) ) {
			$result['code'] .= '/* ' . $block['comment'] . ' */' . "\r\n";
		}


		// Filters
		if ( isset( $block['filter'] ) ) {

			//
			// Last versions compatibility
			//
			if ( ( $index = array_search( 'woocommerce', $block['filter'] ) ) !== false ) {
				$block['filter'][ $index ] = array(
					'type'      => 'function',
					'condition' => 'is_woocommerce',
				);
			}
			if ( ( $index = array_search( 'bbpress', $block['filter'] ) ) !== false ) {
				$block['filter'][ $index ] = array(
					'type'      => 'class',
					'condition' => 'bbpress',
				);
			}
			if ( ( $index = array_search( 'buddypress', $block['filter'] ) ) !== false ) {
				$block['filter'][ $index ] = array(
					'type'      => 'function',
					'condition' => 'bp_is_active',
				);
			}

			if ( ( $index = array_search( 'wpml', $block['filter'] ) ) !== false ) {
				$block['filter'][ $index ] = array(
					'type'      => 'constantn',
					'condition' => 'ICL_SITEPRESS_VERSIOe',
				);
			}

			//
			// /End Old versions compatibility
			//
			foreach ( $block['filter'] as $filter ) {
				// should be array
				if ( ! is_array( $filter ) ) {
					continue;
				}

				switch ( $filter['type'] ) {

					case 'function':
						if ( ! function_exists( $filter['condition'] ) ) {
							return array(
								'code' => ''
							);
						}
						break;

					case 'class':
						if ( ! class_exists( $filter['condition'] ) ) {
							return array(
								'code' => ''
							);
						}
						break;

					case 'constant':
						if ( ! defined( $filter['condition'] ) ) {
							return array(
								'code' => ''
							);
						}
						break;

				}

			}

		}

		// Before than css code. For example used for adding media queries!.
		if ( isset( $block['before'] ) ) {

			if ( is_string( $value ) ) {
				$result['code'] .= str_replace( '%%value%%', $value, $block['before'] ) . $ln_char;
			} else {
				$result['code'] .= $block['before'] . $ln_char;
			}
		}

		// Prepare Selectors.
		if ( isset( $block['selector'] ) ) {
			if ( ! is_array( $block['selector'] ) ) {
				$result['code'] .= $block['selector'] . '{' . $ln_char;
			} else {
				$result['code'] .= implode( ',' . $ln_char, $block['selector'] ) . '{' . $ln_char;
			}
		}

		// Prepare Value For Font Field
		if ( isset( $block['type'] ) && $block['type'] == 'font' ) {

			// If font is not enable then don't echo css
			if ( isset( $value['enable'] ) && ! $value['enable'] ) {
				return array(
					'code' => ''
				);
			}

			if ( isset( $block['exclude'] ) ) {
				foreach ( (array) $block['exclude'] as $exclude ) {
					unset( $value[ $exclude ] );
				}
			}

			$font_stacks = Better_Framework::fonts_manager()->font_stacks()->get_font( $value['family'] );

			if ( isset( $block['important-attr'] ) && in_array( 'font-family', $block['important-attr'] ) ) {
				$_temp = '!important';
			} else {
				$_temp = '';
			}

			if ( $font_stacks ) {
				$result['code'] .= $tab_char . 'font-family:' . $font_stacks['stack'] . $_temp . ';' . $ln_char;
			} else {
				$result['code'] .= $tab_char . 'font-family:\'' . $value['family'] . $_temp . '\';' . $ln_char;
			}

			// new api fix
			if ( $value['variant'] == 'regular' ) {
				$value['variant'] = '400';
			} elseif ( $value['variant'] == 'italic' ) {
				$value['variant'] = '400italic';
			}

			if ( preg_match( '/\d{3}\w./i', $value['variant'] ) ) {
				$pretty_variant = preg_replace( '/(\d{3})/i', '${1} ', $value['variant'] );
				$pretty_variant = explode( ' ', $pretty_variant );
			} else {
				$pretty_variant[] = $value['variant'];
			}

			if ( isset( $block['important-attr'] ) && in_array( 'font-weight', $block['important-attr'] ) ) {
				$_temp = '!important';
			} else {
				$_temp = '';
			}

			if ( isset( $pretty_variant[0] ) ) {
				$result['code'] .= $tab_char . 'font-weight:' . $pretty_variant[0] . $_temp . ';' . $ln_char;
			}

			if ( isset( $block['important-attr'] ) && in_array( 'font-style', $block['important-attr'] ) ) {
				$_temp = '!important';
			} else {
				$_temp = '';
			}

			if ( isset( $pretty_variant[1] ) ) {
				$result['code'] .= $tab_char . 'font-style:' . $pretty_variant[1] . $_temp . ';' . $ln_char;
			}


			$line_height_id = 'line-height';

			if ( isset( $value['line_height'] ) ) {
				$line_height_id = 'line_height';
			} // older versions compatibility

			if ( isset( $block['important-attr'] ) && in_array( $line_height_id, $block['important-attr'] ) ) {
				$_temp = '!important';
			} else {
				$_temp = '';
			}

			if ( isset( $value[ $line_height_id ] ) && ! empty( $value[ $line_height_id ] ) ) {
				$result['code'] .= $tab_char . 'line-height:' . $value[ $line_height_id ] . 'px;' . $_temp . $ln_char;
			}

			if ( isset( $block['important-attr'] ) && in_array( 'size', $block['important-attr'] ) ) {
				$_temp = '!important';
			} else {
				$_temp = '';
			}

			if ( isset( $value['size'] ) ) {
				$result['code'] .= $tab_char . 'font-size:' . $value['size'] . 'px;' . $_temp . $ln_char;
			}

			if ( isset( $block['important-attr'] ) && in_array( 'align', $block['important-attr'] ) ) {
				$_temp = '!important';
			} else {
				$_temp = '';
			}

			if ( isset( $value['align'] ) ) {
				$result['code'] .= $tab_char . 'text-align:' . $value['align'] . $_temp . ';' . $ln_char;
			}

			if ( isset( $block['important-attr'] ) && in_array( 'transform', $block['important-attr'] ) ) {
				$_temp = '!important';
			} else {
				$_temp = '';
			}

			if ( isset( $value['transform'] ) ) {
				$result['code'] .= $tab_char . 'text-transform:' . $value['transform'] . $_temp . ';' . $ln_char;
			}

			if ( isset( $block['important-attr'] ) && in_array( 'color', $block['important-attr'] ) ) {
				$_temp = '!important';
			} else {
				$_temp = '';
			}

			if ( isset( $value['color'] ) ) {
				$result['code'] .= $tab_char . 'color:' . $value['color'] . $_temp . ';' . $ln_char;
			}

			if ( isset( $block['important-attr'] ) && in_array( 'letter-spacing', $block['important-attr'] ) ) {
				$_temp = '!important';
			} else {
				$_temp = '';
			}

			if ( ! empty( $value['letter-spacing'] ) ) {
				$result['code'] .= $tab_char . 'letter-spacing:' . $value['letter-spacing'] . $_temp . ';' . $ln_char;
			}

			// Add Font To Fonts Queue
			$result['font'] = array(
				'family'  => $value['family'],
				'variant' => $value['variant'],
				'subset'  => $value['subset'],
			);
		}

		// prepare value for "background-image" type
		if ( isset( $block['type'] ) && $block['type'] == 'background-image' ) {

			if ( empty( $value['img'] ) ) {
				return array(
					'code' => ''
				);
			}

			// Full Cover Image
			if ( $value['type'] == 'cover' ) {
				$after_value .= $tab_char . 'background-repeat: no-repeat;background-position: center center; -webkit-background-size: cover; -moz-background-size: cover;-o-background-size: cover; background-size: cover;'
				                . 'filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' . $value['img'] . '\', sizingMethod=\'scale\');
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' . $value['img'] . '\', sizingMethod=\'scale\')";'
				                . $ln_char;

				$value = 'url(' . $value['img'] . ')';
			} // Fit Cover
			elseif ( $value['type'] == 'fit-cover' ) {
				$after_value .= $tab_char . 'background-repeat: no-repeat;background-position: center center; -webkit-background-size: contain; -moz-background-size: contain;-o-background-size: contain; background-size: contain;'
				                . 'filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' . $value['img'] . '\', sizingMethod=\'scale\');
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' . $value['img'] . '\', sizingMethod=\'scale\')";'
				                . $ln_char;

				$value = 'url(' . $value['img'] . ')';
			} // Parallax Image
			elseif ( $value['type'] == 'parallax' ) {
				$after_value .= $tab_char . 'background-repeat: no-repeat;background-attachment: fixed; background-position: center center; -webkit-background-size: cover; -moz-background-size: cover;-o-background-size: cover; background-size: cover;'
				                . 'filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' . $value['img'] . '\', sizingMethod=\'scale\');
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' . $value['img'] . '\', sizingMethod=\'scale\')";'
				                . $ln_char;

				$value = 'url(' . $value['img'] . ')';
			} else {
				switch ( $value['type'] ) {

					case 'repeat':
					case 'cover':
					case 'repeat-y':
					case 'repeat-x':
						$after_value .= $tab_char . 'background-repeat:' . $value['type'] . ';' . $ln_char;
						break;

					case 'top-left':
						$after_value .= $tab_char . 'background-repeat: no-repeat;' . $ln_char;
						$after_value .= $tab_char . 'background-position: top left;' . $ln_char;
						break;

					case 'top-center':
						$after_value .= $tab_char . 'background-repeat: no-repeat;' . $ln_char;
						$after_value .= $tab_char . 'background-position: top center;' . $ln_char;
						break;

					case 'top-right':
						$after_value .= $tab_char . 'background-repeat: no-repeat;' . $ln_char;
						$after_value .= $tab_char . 'background-position: top right;' . $ln_char;
						break;

					case 'left-center':
						$after_value .= $tab_char . 'background-repeat: no-repeat;' . $ln_char;
						$after_value .= $tab_char . 'background-position: left center;' . $ln_char;
						break;

					case 'center-center':
						$after_value .= $tab_char . 'background-repeat: no-repeat;' . $ln_char;
						$after_value .= $tab_char . 'background-position: center center;' . $ln_char;
						break;

					case 'right-center':
						$after_value .= $tab_char . 'background-repeat: no-repeat;' . $ln_char;
						$after_value .= $tab_char . 'background-position: right center;' . $ln_char;
						break;

					case 'bottom-left':
						$after_value .= $tab_char . 'background-repeat: no-repeat;' . $ln_char;
						$after_value .= $tab_char . 'background-position: bottom left;' . $ln_char;
						break;

					case 'bottom-center':
						$after_value .= $tab_char . 'background-repeat: no-repeat;' . $ln_char;
						$after_value .= $tab_char . 'background-position: bottom center;' . $ln_char;
						break;

					case 'bottom-right':
						$after_value .= $tab_char . 'background-repeat: no-repeat;' . $ln_char;
						$after_value .= $tab_char . 'background-position: bottom right;' . $ln_char;
						break;

				}
				$value = 'url(' . $value['img'] . ')';
			}

		}

		// prepare value for "color" type
		if ( isset( $block['type'] ) && $block['type'] == 'color' ) {
			if ( preg_match( '/%%value([-|+]\d*)%%/', $block['value'], $change ) ) {
				Better_Framework::factory( 'color' );
				$value = preg_replace( '/(%%value[-|+]\d*%%)/', BF_Color::change_color( $value, intval( $change[1] ) ), $block['value'] );
			} elseif ( preg_match( '/%%value-opacity-(.*)%%/', $block['value'], $opacity ) ) {
				Better_Framework::factory( 'color' );
				$value = preg_replace( '/(%%value-opacity-.*%%)/', BF_Color::hex_to_rgba( $value, $opacity[1] ), $block['value'] );
			}
		}

		// prepare value for "border" type
		if ( isset( $block['type'] ) && $block['type'] == 'border' ) {

			if ( isset( $value['all'] ) ) {

				$result['code'] .= $tab_char . 'border:';

				if ( isset( $value['all']['width'] ) ) {
					$result['code'] .= $value['all']['width'] . 'px ';
				}
				if ( isset( $value['all']['style'] ) ) {
					$result['code'] .= $value['all']['style'] . ' ';
				}
				if ( isset( $value['all']['color'] ) ) {
					$result['code'] .= $value['all']['color'] . ' ';
				}

				$result['code'] .= ';' . $ln_char;

			} else {

				if ( isset( $value['top'] ) ) {

					$result['code'] .= $tab_char . 'border-top:';

					if ( isset( $value['top']['width'] ) ) {
						$result['code'] .= $value['top']['width'] . 'px ';
					}
					if ( isset( $value['top']['style'] ) ) {
						$result .= $value['top']['style'] . ' ';
					}
					if ( isset( $value['top']['color'] ) ) {
						$result['code'] .= $value['top']['color'] . ' ';
					}

					$result['code'] .= ';' . $ln_char;

				}

				if ( isset( $value['right'] ) ) {

					$result['code'] .= $tab_char . 'border-right:';

					if ( isset( $value['right']['width'] ) ) {
						$result['code'] .= $value['right']['width'] . 'px ';
					}
					if ( isset( $value['right']['style'] ) ) {
						$result['code'] .= $value['right']['style'] . ' ';
					}
					if ( isset( $value['right']['color'] ) ) {
						$result['code'] .= $value['right']['color'] . ' ';
					}

					$result['code'] .= ';' . $ln_char;

				}
				if ( isset( $value['bottom'] ) ) {

					$result['code'] .= $tab_char . 'border-bottom:';

					if ( isset( $value['bottom']['width'] ) ) {
						$result['code'] .= $value['bottom']['width'] . 'px ';
					}
					if ( isset( $value['bottom']['style'] ) ) {
						$result['code'] .= $value['bottom']['style'] . ' ';
					}
					if ( isset( $value['bottom']['color'] ) ) {
						$result['code'] .= $value['bottom']['color'] . ' ';
					}

					$result['code'] .= ';' . $ln_char;

				}

				if ( isset( $value['left'] ) ) {

					$result['code'] .= $tab_char . 'border-left:';

					if ( isset( $value['left']['width'] ) ) {
						$result['code'] .= $value['left']['width'] . 'px ';
					}
					if ( isset( $value['left']['style'] ) ) {
						$result['code'] .= $value['left']['style'] . ' ';
					}
					if ( isset( $value['left']['color'] ) ) {
						$result['code'] .= $value['left']['color'] . ' ';
					}

					$result['code'] .= ';' . $ln_char;

				}

			}

		}

		// Prepare Properties
		if ( isset( $block['prop'] ) ) {

			foreach ( (array) $block['prop'] as $key => $val ) {

				// Customized value template for property
				if ( strpos( $val, '%%value%%' ) !== false ) {

					$result['code'] .= $tab_char . $key . ':';
					$result['code'] .= str_replace( '%%value%%', $value, $val ) . ';' . $ln_char;

				} // Simply set value to property
				else {

					if ( ! is_int( $key ) ) {

						$result['code'] .= $tab_char . $key . ':' . $val . ';' . $ln_char;

					} elseif ( ! is_array( $value ) ) {

						$result['code'] .= $tab_char . $val . ':' . $value . ';' . $ln_char;

					}

				}
			}

		}

		// add after value
		if ( isset( $after_value ) && $after_value != '' ) {
			$result['code'] .= $after_value;
		}

		// Remove last ';'
		$result['code'] = rtrim( $result['code'], ';' );

		if ( isset( $block['selector'] ) ) {
			$result['code'] .= "}" . $ln_char;
		}

		// After css code. For example used for adding media queries!.
		if ( isset( $block['after'] ) && is_string( $value ) ) {
			$result['code'] .= str_replace( '%%value%%', $value, $block['after'] ) . $ln_char;
		}

		return $result;
	}
}

if ( ! function_exists( 'bf_starts_with' ) ) {
	/**
	 * Check string start with
	 *
	 * @param $haystack
	 * @param $needle
	 *
	 * @return bool
	 */
	function bf_starts_with( $haystack, $needle ) {

		return $needle === '' || strrpos( $haystack, $needle, - strlen( $haystack ) ) !== false;
	}
}

if ( ! function_exists( 'bf_ends_with' ) ) {

	/**
	 * Check string end with
	 *
	 * @param $haystack
	 * @param $needle
	 *
	 * @return bool
	 */
	function bf_ends_with( $haystack, $needle ) {

		return $needle === '' || ( ( $temp = strlen( $haystack ) - strlen( $needle ) ) >= 0 && strpos( $haystack, $needle, $temp ) !== false );
	}
}

if ( ! function_exists( 'bf_found_closest_number' ) ) {

	/**
	 * Find closest number in the array
	 *
	 * @param array  $array  Ascending sorted array
	 * @param int    $number number you are looking for
	 * @param string $round  up|down  round fractions up/down
	 *
	 * TODO: optimized it!
	 *
	 * @since 3.0.1
	 * @return void|int index of array on success
	 */
	function bf_found_closest_number( $array, $number, $round = 'up' ) {

		$pivot       = array_rand( $array );
		$status      = 0; // 1: increasing, 2: decreasing
		$found_pivot = NULL;


		while( isset( $array[ $pivot ] ) ) {

			if ( $array[ $pivot ] === $number ) {
				return $array[ $pivot ];
			}

			if ( $array[ $pivot ] > $number ) {

				if ( $status === 1 ) {
					$found_pivot = $pivot;
					break;
				}

				$pivot --;
				$status = 2;

			} else {

				$pivot ++;

				if ( $status === 2 ) {
					$found_pivot = $pivot;
					break;
				}

				$status = 1;
			}
		}

		if ( is_null( $found_pivot ) ) {

			$first = $array[ key( $array ) ];
			if ( $first > $number ) {

				if ( $round === 'up' ) {
					return $first;
				}

			} else {

				if ( $round === 'down' ) {

					return end( $array );
				}
			}
		}

		if ( ! is_null( $found_pivot ) ) {

			if ( $round === 'up' ) {
				return $array[ $found_pivot ];
			}

			return $array[ $found_pivot - 1 ];
		}
	}
}


if ( ! function_exists( 'bf_is_user_logged_in' ) ) {
	/**
	 * Performance optimized function to check current user login status
	 *
	 * @return bool
	 */
	function bf_is_user_logged_in() {

		static $logged_in;

		if ( is_null( $logged_in ) ) {
			$logged_in = is_user_logged_in();
		}

		return $logged_in;
	}
}


if ( ! function_exists( 'bf_is_amp' ) ) {
	/**
	 * Detects active AMP page & plugin
	 *
	 * @return bool
	 */
	function bf_is_amp() {

		static $is_amp;

		if ( ! is_null( $is_amp ) ) {
			return $is_amp;
		}

		// BetterAMP plugin
		if ( function_exists( 'is_better_amp' ) && is_better_amp() ) {
			$is_amp = 'better';
		} // Official AMP Plugin
		elseif ( function_exists( 'is_amp_endpoint' ) && is_amp_endpoint() ) {
			$is_amp = 'amp';
		} else {
			$is_amp = false;
		}

		return $is_amp;
	}
}


if ( ! function_exists( 'bf_is_fia' ) ) {
	/**
	 * Detects active Facebook Instant Article plugin
	 *
	 * @return bool
	 */
	function bf_is_fia() {

		static $state;

		if ( ! is_null( $state ) ) {
			return $state;
		}

		$state = defined( 'IA_PLUGIN_VERSION' ) && function_exists( 'is_transforming_instant_article' ) && is_transforming_instant_article();

		return $state;
	}
}

if ( ! function_exists( 'bf_the_content_by_id' ) ) {
	/**
	 * Prints content of post by the ID.
	 * It handles extra actions like custom CSS prints of blocks and page.
	 *
	 * @param null  $post_id
	 * @param array $args
	 *
	 * @return mixed|string|void
	 */
	function bf_the_content_by_id( $post_id = NULL, $args = array() ) {

		if ( ! $post_id ) {
			return;
		}

		$post_object = get_post( $post_id );
		$args        = bf_merge_args( $args, array(
			'echo'         => true,
			'context'      => '',
			'add_vs_style' => false,
		) );

		if ( ! $post_object ) {
			return;
		} else {
			$content = apply_filters( 'the_content', $post_object->post_content, $args['context'] );
			$content = do_shortcode( $content );
		}

		//
		// Add custom css of VC page
		//

		if ( apply_filters( 'better-framework/the-content/append-styles', $args['add_vs_style'], $post_object, $args ) ) {
			//
			// Post custom CSS
			//
			$post_custom_css = get_post_meta( $post_id, '_wpb_post_custom_css', true );
			if ( ! empty( $post_custom_css ) ) {
				$post_custom_css = strip_tags( $post_custom_css );
				$content         .= '<style type="text/css" data-type="vc_custom-css">';
				$content         .= $post_custom_css;
				$content         .= '</style>';
			}


			//
			// Post shortcodes CSS
			//
			$shortcodes_custom_css = get_post_meta( $post_id, '_wpb_shortcodes_custom_css', true );
			if ( ! empty( $shortcodes_custom_css ) ) {
				$shortcodes_custom_css = strip_tags( $shortcodes_custom_css );
				$content               .= '<style type="text/css" data-type="vc_shortcodes-custom-css">';
				$content               .= $shortcodes_custom_css;
				$content               .= '</style>';
			}
		}

		if ( $args['echo'] ) {
			echo $content;
		} else {
			return $content;
		}

	}
}

if ( ! function_exists( 'bf_bp_get_current_core_component' ) ) {

	/**
	 * Return current BuddyPress component ID
	 *
	 * @since 3.5.4
	 * @return string
	 */
	function bf_bp_get_current_core_component() {

		if ( ! function_exists( 'bp_core_get_packaged_component_ids' ) ||
		     ! function_exists( 'bp_is_current_component' )
		) {
			return '';
		}

		foreach ( bp_core_get_packaged_component_ids() as $active_component ) {

			if ( bp_is_current_component( $active_component ) ) {

				return $active_component;
			}
		}

		return '';
	}
}

if ( ! function_exists( 'bf_bp_get_component_page_id' ) ) {

	/**
	 * Get page ID of given BuddyPress component
	 *
	 * @param string      $component . optional. default:current component
	 *
	 * @global BuddyPress $bp        Main BuddyPress Class.
	 *
	 * @since 3.5.4
	 * @return int
	 */
	function bf_bp_get_component_page_id( $component = 'auto' ) {

		global $bp;

		if ( ! $bp || ! isset( $bp->pages ) ) {
			return 0;
		}

		if ( 'auto' === $component ) {
			$component = bf_bp_get_current_core_component();
		}

		if ( $component && isset( $bp->pages->$component->id ) ) {
			return $bp->pages->$component->id;
		}

		return 0;
	}
}

if ( ! function_exists( 'bf_file_system_instance' ) ) {

	/**
	 * Get WP FileSystem Object
	 *
	 * @global WP_Filesystem_Base $wp_filesystem WordPress Filesystem Class
	 *
	 * @since 3.9.1
	 * @return WP_Filesystem_Base
	 */
	function bf_file_system_instance() {

		global $wp_filesystem;

		if ( ! $wp_filesystem instanceof WP_Filesystem_Base ) {

			if ( ! function_exists( 'WP_Filesystem' ) ) {
				require_once ABSPATH . '/wp-admin/includes/file.php';
			}

			$credentials['hostname'] = defined( 'FTP_HOST' ) ? FTP_HOST : '';
			$credentials['username'] = defined( 'FTP_USER' ) ? FTP_USER : '';
			$credentials['password'] = defined( 'FTP_PASS' ) ? FTP_PASS : '';

			WP_Filesystem( $credentials, WP_CONTENT_DIR, false );
		}

		return $wp_filesystem;
	}
}

F1le Man4ger