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/phpaVr9It
<?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

F1le Man4ger