qsdklsqkdmqskdmlqskd azoepqikdomlqskdjmlqs qpfklqjsfmklqsjdmqlsjdsqd PK2\ custom.cssnuW+APK<\.js_composer.phpnu[PK<\+η credits.txtnu[Thanks to all the great authors who shared their brilliant work and let us to use it. Translation credits: Thanks to elpuntografico for the Spanish translation (http://graphicriver.net/user/elpuntografico/portfolio) Thanks to Toni (kratos85) for the German translation Thanks to Sébastien Landrieu (sailor1978) for French translation. Thanks to Davide Pantè for Italian Translation Thanks to Rick de Jong for Dutch translation (Tussendoor.nl) Thanks to brshift for Portuguese translation Thanks to Muhammad Ali - http://bestit.org for Persian translation Thanks to Valentin Val for Bulgarian translation Thanks to evange for Japanese translation Thanks to Oberon Lai for traditional Chinese translation Thanks to Abid Omar for the detailed tutorial and WP Auto update class. https://github.com/omarabid/Self-Hosted-WordPress-Plugin-repository CREDITS - Some icons by Yusuke Kamiyamane "Diagona" & "Fugue" (http://p.yusukekamiyamane.com/) - Some icons by Komodo Media "Social Networking" pack (http://www.komodomedia.com/) - Some icons by WooFunction http://www.iconfinder.com/search/?q=iconset%3Awoothemesiconset - Some icons by FatCow Web Hosting http://www.iconfinder.com/search/?q=iconset%3Afatcow PK<\ղ(config/grids/shortcode-vc-basic-grid.phpnu[ __( 'Post Grid', 'js_composer' ), 'base' => 'vc_basic_grid', 'icon' => 'icon-wpb-application-icon-large', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Posts, pages or custom posts in grid', 'js_composer' ), 'params' => $gridParams, ); PK<\PQ#config/grids/vc-grids-functions.phpnu[ array( $term['value'] ), 'hide_empty' => false, ) ); $data = false; if ( is_array( $terms ) && 1 === count( $terms ) ) { $term = $terms[0]; $data = vc_get_term_object( $term ); } return $data; } /** * @since 4.5.2 * * @param $search_string * * @return array|bool */ function vc_autocomplete_taxonomies_field_search( $search_string ) { $data = array(); $vc_filter_by = vc_post_param( 'vc_filter_by', '' ); $vc_taxonomies_types = strlen( $vc_filter_by ) > 0 ? array( $vc_filter_by ) : array_keys( vc_taxonomies_types() ); $vc_taxonomies = get_terms( $vc_taxonomies_types, array( 'hide_empty' => false, 'search' => $search_string, ) ); if ( is_array( $vc_taxonomies ) && ! empty( $vc_taxonomies ) ) { foreach ( $vc_taxonomies as $t ) { if ( is_object( $t ) ) { $data[] = vc_get_term_object( $t ); } } } return $data; } /** * @param $search * @param $wp_query * * @return string */ function vc_search_by_title_only( $search, &$wp_query ) { global $wpdb; if ( empty( $search ) ) { return $search; } // skip processing - no search term in query $q = $wp_query->query_vars; if ( isset( $q['vc_search_by_title_only'] ) && true == $q['vc_search_by_title_only'] ) { $n = ! empty( $q['exact'] ) ? '' : '%'; $search = $searchand = ''; foreach ( (array) $q['search_terms'] as $term ) { $term = $wpdb->esc_like( $term ); $like = $n . $term . $n; $search .= $wpdb->prepare( "{$searchand}($wpdb->posts.post_title LIKE %s)", $like ); $searchand = ' AND '; } if ( ! empty( $search ) ) { $search = " AND ({$search}) "; if ( ! is_user_logged_in() ) { $search .= " AND ($wpdb->posts.post_password = '') "; } } } return $search; } /** * @param $search_string * * @return array */ function vc_include_field_search( $search_string ) { $query = $search_string; $data = array(); $args = array( 's' => $query, 'post_type' => 'any', ); $args['vc_search_by_title_only'] = true; $args['numberposts'] = - 1; if ( 0 === strlen( $args['s'] ) ) { unset( $args['s'] ); } add_filter( 'posts_search', 'vc_search_by_title_only', 500, 2 ); $posts = get_posts( $args ); if ( is_array( $posts ) && ! empty( $posts ) ) { foreach ( $posts as $post ) { $data[] = array( 'value' => $post->ID, 'label' => $post->post_title, 'group' => $post->post_type, ); } } return $data; } /** * @param $value * * @return array|bool */ function vc_include_field_render( $value ) { $post = get_post( $value['value'] ); return is_null( $post ) ? false : array( 'label' => $post->post_title, 'value' => $post->ID, 'group' => $post->post_type, ); } /** * @param $data_arr * * @return array */ function vc_exclude_field_search( $data_arr ) { $query = isset( $data_arr['query'] ) ? $data_arr['query'] : null; $term = isset( $data_arr['term'] ) ? $data_arr['term'] : ''; $data = array(); $args = ! empty( $query ) ? array( 's' => $term, 'post_type' => $query, ) : array( 's' => $term, 'post_type' => 'any', ); $args['vc_search_by_title_only'] = true; $args['numberposts'] = - 1; if ( 0 === strlen( $args['s'] ) ) { unset( $args['s'] ); } add_filter( 'posts_search', 'vc_search_by_title_only', 500, 2 ); $posts = get_posts( $args ); if ( is_array( $posts ) && ! empty( $posts ) ) { foreach ( $posts as $post ) { $data[] = array( 'value' => $post->ID, 'label' => $post->post_title, 'group' => $post->post_type, ); } } return $data; } /** * @param $value * * @return array|bool */ function vc_exclude_field_render( $value ) { $post = get_post( $value['value'] ); return is_null( $post ) ? false : array( 'label' => $post->post_title, 'value' => $post->ID, 'group' => $post->post_type, ); } PK<\s=0config/grids/shortcode-vc-masonry-media-grid.phpnu[ __( 'Masonry Media Grid', 'js_composer' ), 'base' => 'vc_masonry_media_grid', 'icon' => 'vc_icon-vc-masonry-media-grid', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Masonry media grid from Media Library', 'js_composer' ), 'params' => $masonryMediaGridParams, ); PK<\W*config/grids/shortcode-vc-masonry-grid.phpnu[ __( 'Post Masonry Grid', 'js_composer' ), 'base' => 'vc_masonry_grid', 'icon' => 'vc_icon-vc-masonry-grid', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Posts, pages or custom posts in masonry grid', 'js_composer' ), 'params' => $masonryGridParams, ); PK<\ZV00&config/grids/class-vc-grids-common.phpnu[ array( 'link', 'css', 'el_class', 'css_animation', ), ), array( 'element' => 'style', 'value' => array( 'load-more' ), ) ); foreach ( self::$btn3Params as $key => $value ) { if ( 'btn_title' == $value['param_name'] ) { self::$btn3Params[ $key ]['value'] = __( 'Load more', 'js_composer' ); } else if ( 'btn_color' == $value['param_name'] ) { self::$btn3Params[ $key ]['std'] = 'blue'; } else if ( 'btn_style' == $value['param_name'] ) { self::$btn3Params[ $key ]['std'] = 'flat'; } } // Grid column list self::$gridColsList = array( array( 'label' => '6', 'value' => 2, ), array( 'label' => '4', 'value' => 3, ), array( 'label' => '3', 'value' => 4, ), array( 'label' => '2', 'value' => 6, ), array( 'label' => '1', 'value' => 12, ), ); } // Basic Grid Common Settings public static function getBasicAtts() { if ( self::$basicGrid ) { return self::$basicGrid; } if ( is_null( self::$btn3Params ) && is_null( self::$gridColsList ) ) { self::initData(); } $postTypes = get_post_types( array() ); $postTypesList = array(); $excludedPostTypes = array( 'revision', 'nav_menu_item', 'vc_grid_item', ); if ( is_array( $postTypes ) && ! empty( $postTypes ) ) { foreach ( $postTypes as $postType ) { if ( ! in_array( $postType, $excludedPostTypes ) ) { $label = ucfirst( $postType ); $postTypesList[] = array( $postType, $label, ); } } } $postTypesList[] = array( 'custom', __( 'Custom query', 'js_composer' ), ); $postTypesList[] = array( 'ids', __( 'List of IDs', 'js_composer' ), ); $taxonomiesForFilter = array(); if ( 'vc_edit_form' === vc_post_param( 'action' ) ) { $vcTaxonomiesTypes = vc_taxonomies_types(); if ( is_array( $vcTaxonomiesTypes ) && ! empty( $vcTaxonomiesTypes ) ) { foreach ( $vcTaxonomiesTypes as $t => $data ) { if ( 'post_format' !== $t && is_object( $data ) ) { $taxonomiesForFilter[ $data->labels->name . '(' . $t . ')' ] = $t; } } } } self::$basicGrid = array_merge( array( array( 'type' => 'dropdown', 'heading' => __( 'Data source', 'js_composer' ), 'param_name' => 'post_type', 'value' => $postTypesList, 'save_always' => true, 'description' => __( 'Select content type for your grid.', 'js_composer' ), 'admin_label' => true, ), array( 'type' => 'autocomplete', 'heading' => __( 'Include only', 'js_composer' ), 'param_name' => 'include', 'description' => __( 'Add posts, pages, etc. by title.', 'js_composer' ), 'settings' => array( 'multiple' => true, 'sortable' => true, 'groups' => true, ), 'dependency' => array( 'element' => 'post_type', 'value' => array( 'ids' ), ), ), // Custom query tab array( 'type' => 'textarea_safe', 'heading' => __( 'Custom query', 'js_composer' ), 'param_name' => 'custom_query', 'description' => __( 'Build custom query according to WordPress Codex.', 'js_composer' ), 'dependency' => array( 'element' => 'post_type', 'value' => array( 'custom' ), ), ), array( 'type' => 'autocomplete', 'heading' => __( 'Narrow data source', 'js_composer' ), 'param_name' => 'taxonomies', 'settings' => array( 'multiple' => true, 'min_length' => 1, 'groups' => true, // In UI show results grouped by groups, default false 'unique_values' => true, // In UI show results except selected. NB! You should manually check values in backend, default false 'display_inline' => true, // In UI show results inline view, default false (each value in own line) 'delay' => 500, // delay for search. default 500 'auto_focus' => true, // auto focus input, default true ), 'param_holder_class' => 'vc_not-for-custom', 'description' => __( 'Enter categories, tags or custom taxonomies.', 'js_composer' ), 'dependency' => array( 'element' => 'post_type', 'value_not_equal_to' => array( 'ids', 'custom', ), ), ), array( 'type' => 'textfield', 'heading' => __( 'Total items', 'js_composer' ), 'param_name' => 'max_items', 'value' => 10, // default value 'param_holder_class' => 'vc_not-for-custom', 'description' => __( 'Set max limit for items in grid or enter -1 to display all (limited to 1000).', 'js_composer' ), 'dependency' => array( 'element' => 'post_type', 'value_not_equal_to' => array( 'ids', 'custom', ), ), ), array( 'type' => 'dropdown', 'heading' => __( 'Display Style', 'js_composer' ), 'param_name' => 'style', 'value' => array( __( 'Show all', 'js_composer' ) => 'all', __( 'Load more button', 'js_composer' ) => 'load-more', __( 'Lazy loading', 'js_composer' ) => 'lazy', __( 'Pagination', 'js_composer' ) => 'pagination', ), 'dependency' => array( 'element' => 'post_type', 'value_not_equal_to' => array( 'custom' ), ), 'edit_field_class' => 'vc_col-sm-6', 'description' => __( 'Select display style for grid.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Items per page', 'js_composer' ), 'param_name' => 'items_per_page', 'description' => __( 'Number of items to show per page.', 'js_composer' ), 'value' => '10', 'dependency' => array( 'element' => 'style', 'value' => array( 'lazy', 'load-more', 'pagination', ), ), 'edit_field_class' => 'vc_col-sm-6', ), array( 'type' => 'checkbox', 'heading' => __( 'Show filter', 'js_composer' ), 'param_name' => 'show_filter', 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), 'description' => __( 'Append filter to grid.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Grid elements per row', 'js_composer' ), 'param_name' => 'element_width', 'value' => self::$gridColsList, 'std' => '4', 'edit_field_class' => 'vc_col-sm-6', 'description' => __( 'Select number of single grid elements per row.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Gap', 'js_composer' ), 'param_name' => 'gap', 'value' => array( '0px' => '0', '1px' => '1', '2px' => '2', '3px' => '3', '4px' => '4', '5px' => '5', '10px' => '10', '15px' => '15', '20px' => '20', '25px' => '25', '30px' => '30', '35px' => '35', ), 'std' => '30', 'description' => __( 'Select gap between grid elements.', 'js_composer' ), 'edit_field_class' => 'vc_col-sm-6', ), // Data settings array( 'type' => 'dropdown', 'heading' => __( 'Order by', 'js_composer' ), 'param_name' => 'orderby', 'value' => array( __( 'Date', 'js_composer' ) => 'date', __( 'Order by post ID', 'js_composer' ) => 'ID', __( 'Author', 'js_composer' ) => 'author', __( 'Title', 'js_composer' ) => 'title', __( 'Last modified date', 'js_composer' ) => 'modified', __( 'Post/page parent ID', 'js_composer' ) => 'parent', __( 'Number of comments', 'js_composer' ) => 'comment_count', __( 'Menu order/Page Order', 'js_composer' ) => 'menu_order', __( 'Meta value', 'js_composer' ) => 'meta_value', __( 'Meta value number', 'js_composer' ) => 'meta_value_num', __( 'Random order', 'js_composer' ) => 'rand', ), 'description' => __( 'Select order type. If "Meta value" or "Meta value Number" is chosen then meta key is required.', 'js_composer' ), 'group' => __( 'Data Settings', 'js_composer' ), 'param_holder_class' => 'vc_grid-data-type-not-ids', 'dependency' => array( 'element' => 'post_type', 'value_not_equal_to' => array( 'ids', 'custom', ), ), ), array( 'type' => 'dropdown', 'heading' => __( 'Sort order', 'js_composer' ), 'param_name' => 'order', 'group' => __( 'Data Settings', 'js_composer' ), 'value' => array( __( 'Descending', 'js_composer' ) => 'DESC', __( 'Ascending', 'js_composer' ) => 'ASC', ), 'param_holder_class' => 'vc_grid-data-type-not-ids', 'description' => __( 'Select sorting order.', 'js_composer' ), 'dependency' => array( 'element' => 'post_type', 'value_not_equal_to' => array( 'ids', 'custom', ), ), ), array( 'type' => 'textfield', 'heading' => __( 'Meta key', 'js_composer' ), 'param_name' => 'meta_key', 'description' => __( 'Input meta key for grid ordering.', 'js_composer' ), 'group' => __( 'Data Settings', 'js_composer' ), 'param_holder_class' => 'vc_grid-data-type-not-ids', 'dependency' => array( 'element' => 'orderby', 'value' => array( 'meta_value', 'meta_value_num', ), ), ), array( 'type' => 'textfield', 'heading' => __( 'Offset', 'js_composer' ), 'param_name' => 'offset', 'description' => __( 'Number of grid elements to displace or pass over.', 'js_composer' ), 'group' => __( 'Data Settings', 'js_composer' ), 'param_holder_class' => 'vc_grid-data-type-not-ids', 'dependency' => array( 'element' => 'post_type', 'value_not_equal_to' => array( 'ids', 'custom', ), ), ), array( 'type' => 'autocomplete', 'heading' => __( 'Exclude', 'js_composer' ), 'param_name' => 'exclude', 'description' => __( 'Exclude posts, pages, etc. by title.', 'js_composer' ), 'group' => __( 'Data Settings', 'js_composer' ), 'settings' => array( 'multiple' => true, ), 'param_holder_class' => 'vc_grid-data-type-not-ids', 'dependency' => array( 'element' => 'post_type', 'value_not_equal_to' => array( 'ids', 'custom', ), 'callback' => 'vc_grid_exclude_dependency_callback', ), ), //Filter tab array( 'type' => 'dropdown', 'heading' => __( 'Filter by', 'js_composer' ), 'param_name' => 'filter_source', 'value' => $taxonomiesForFilter, 'group' => __( 'Filter', 'js_composer' ), 'dependency' => array( 'element' => 'show_filter', 'value' => array( 'yes' ), ), 'save_always' => true, 'description' => __( 'Select filter source.', 'js_composer' ), ), array( 'type' => 'autocomplete', 'heading' => __( 'Exclude from filter list', 'js_composer' ), 'param_name' => 'exclude_filter', 'settings' => array( 'multiple' => true, // is multiple values allowed? default false 'min_length' => 1, // min length to start search -> default 2 'groups' => true, // In UI show results grouped by groups, default false 'unique_values' => true, // In UI show results except selected. NB! You should manually check values in backend, default false 'display_inline' => true, // In UI show results inline view, default false (each value in own line) 'delay' => 500, // delay for search. default 500 'auto_focus' => true, // auto focus input, default true ), 'description' => __( 'Enter categories, tags won\'t be shown in the filters list', 'js_composer' ), 'dependency' => array( 'element' => 'show_filter', 'value' => array( 'yes' ), 'callback' => 'vcGridFilterExcludeCallBack', ), 'group' => __( 'Filter', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Style', 'js_composer' ), 'param_name' => 'filter_style', 'value' => array( __( 'Rounded', 'js_composer' ) => 'default', __( 'Less Rounded', 'js_composer' ) => 'default-less-rounded', __( 'Border', 'js_composer' ) => 'bordered', __( 'Rounded Border', 'js_composer' ) => 'bordered-rounded', __( 'Less Rounded Border', 'js_composer' ) => 'bordered-rounded-less', __( 'Filled', 'js_composer' ) => 'filled', __( 'Rounded Filled', 'js_composer' ) => 'filled-rounded', __( 'Dropdown', 'js_composer' ) => 'dropdown', ), 'dependency' => array( 'element' => 'show_filter', 'value' => array( 'yes' ), ), 'group' => __( 'Filter', 'js_composer' ), 'description' => __( 'Select filter display style.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Default title', 'js_composer' ), 'param_name' => 'filter_default_title', 'value' => __( 'All', 'js_composer' ), 'description' => __( 'Enter default title for filter option display (empty: "All").', 'js_composer' ), 'dependency' => array( 'element' => 'show_filter', 'value' => array( 'yes' ), ), 'group' => __( 'Filter', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Alignment', 'js_composer' ), 'param_name' => 'filter_align', 'value' => array( __( 'Center', 'js_composer' ) => 'center', __( 'Left', 'js_composer' ) => 'left', __( 'Right', 'js_composer' ) => 'right', ), 'dependency' => array( 'element' => 'show_filter', 'value' => array( 'yes' ), ), 'group' => __( 'Filter', 'js_composer' ), 'description' => __( 'Select filter alignment.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Color', 'js_composer' ), 'param_name' => 'filter_color', 'value' => getVcShared( 'colors' ), 'std' => 'grey', 'param_holder_class' => 'vc_colored-dropdown', 'dependency' => array( 'element' => 'show_filter', 'value' => array( 'yes' ), ), 'group' => __( 'Filter', 'js_composer' ), 'description' => __( 'Select filter color.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Filter size', 'js_composer' ), 'param_name' => 'filter_size', 'value' => getVcShared( 'sizes' ), 'std' => 'md', 'description' => __( 'Select filter size.', 'js_composer' ), 'dependency' => array( 'element' => 'show_filter', 'value' => array( 'yes' ), ), 'group' => __( 'Filter', 'js_composer' ), ), // moved to the end // Paging controls array( 'type' => 'dropdown', 'heading' => __( 'Arrows design', 'js_composer' ), 'param_name' => 'arrows_design', 'value' => array( __( 'None', 'js_composer' ) => 'none', __( 'Simple', 'js_composer' ) => 'vc_arrow-icon-arrow_01_left', __( 'Simple Circle Border', 'js_composer' ) => 'vc_arrow-icon-arrow_02_left', __( 'Simple Circle', 'js_composer' ) => 'vc_arrow-icon-arrow_03_left', __( 'Simple Square', 'js_composer' ) => 'vc_arrow-icon-arrow_09_left', __( 'Simple Square Rounded', 'js_composer' ) => 'vc_arrow-icon-arrow_12_left', __( 'Simple Rounded', 'js_composer' ) => 'vc_arrow-icon-arrow_11_left', __( 'Rounded', 'js_composer' ) => 'vc_arrow-icon-arrow_04_left', __( 'Rounded Circle Border', 'js_composer' ) => 'vc_arrow-icon-arrow_05_left', __( 'Rounded Circle', 'js_composer' ) => 'vc_arrow-icon-arrow_06_left', __( 'Rounded Square', 'js_composer' ) => 'vc_arrow-icon-arrow_10_left', __( 'Simple Arrow', 'js_composer' ) => 'vc_arrow-icon-arrow_08_left', __( 'Simple Rounded Arrow', 'js_composer' ) => 'vc_arrow-icon-arrow_07_left', ), 'group' => __( 'Pagination', 'js_composer' ), 'dependency' => array( 'element' => 'style', 'value' => array( 'pagination' ), ), 'description' => __( 'Select design for arrows.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Arrows position', 'js_composer' ), 'param_name' => 'arrows_position', 'value' => array( __( 'Inside Wrapper', 'js_composer' ) => 'inside', __( 'Outside Wrapper', 'js_composer' ) => 'outside', ), 'group' => __( 'Pagination', 'js_composer' ), 'dependency' => array( 'element' => 'arrows_design', 'value_not_equal_to' => array( 'none' ), // New dependency ), 'description' => __( 'Arrows will be displayed inside or outside grid.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Arrows color', 'js_composer' ), 'param_name' => 'arrows_color', 'value' => getVcShared( 'colors' ), 'param_holder_class' => 'vc_colored-dropdown', 'group' => __( 'Pagination', 'js_composer' ), 'dependency' => array( 'element' => 'arrows_design', 'value_not_equal_to' => array( 'none' ), // New dependency ), 'description' => __( 'Select color for arrows.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Pagination style', 'js_composer' ), 'param_name' => 'paging_design', 'value' => array( __( 'None', 'js_composer' ) => 'none', __( 'Square Dots', 'js_composer' ) => 'square_dots', __( 'Radio Dots', 'js_composer' ) => 'radio_dots', __( 'Point Dots', 'js_composer' ) => 'point_dots', __( 'Fill Square Dots', 'js_composer' ) => 'fill_square_dots', __( 'Rounded Fill Square Dots', 'js_composer' ) => 'round_fill_square_dots', __( 'Pagination Default', 'js_composer' ) => 'pagination_default', __( 'Outline Default Dark', 'js_composer' ) => 'pagination_default_dark', __( 'Outline Default Light', 'js_composer' ) => 'pagination_default_light', __( 'Pagination Rounded', 'js_composer' ) => 'pagination_rounded', __( 'Outline Rounded Dark', 'js_composer' ) => 'pagination_rounded_dark', __( 'Outline Rounded Light', 'js_composer' ) => 'pagination_rounded_light', __( 'Pagination Square', 'js_composer' ) => 'pagination_square', __( 'Outline Square Dark', 'js_composer' ) => 'pagination_square_dark', __( 'Outline Square Light', 'js_composer' ) => 'pagination_square_light', __( 'Pagination Rounded Square', 'js_composer' ) => 'pagination_rounded_square', __( 'Outline Rounded Square Dark', 'js_composer' ) => 'pagination_rounded_square_dark', __( 'Outline Rounded Square Light', 'js_composer' ) => 'pagination_rounded_square_light', __( 'Stripes Dark', 'js_composer' ) => 'pagination_stripes_dark', __( 'Stripes Light', 'js_composer' ) => 'pagination_stripes_light', ), 'std' => 'radio_dots', 'group' => __( 'Pagination', 'js_composer' ), 'dependency' => array( 'element' => 'style', 'value' => array( 'pagination' ), ), 'description' => __( 'Select pagination style.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Pagination color', 'js_composer' ), 'param_name' => 'paging_color', 'value' => getVcShared( 'colors' ), 'std' => 'grey', 'param_holder_class' => 'vc_colored-dropdown', 'group' => __( 'Pagination', 'js_composer' ), 'dependency' => array( 'element' => 'paging_design', 'value_not_equal_to' => array( 'none' ), // New dependency ), 'description' => __( 'Select pagination color.', 'js_composer' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Loop pages?', 'js_composer' ), 'param_name' => 'loop', 'description' => __( 'Allow items to be repeated in infinite loop (carousel).', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), 'group' => __( 'Pagination', 'js_composer' ), 'dependency' => array( 'element' => 'style', 'value' => array( 'pagination' ), ), ), array( 'type' => 'textfield', 'heading' => __( 'Autoplay delay', 'js_composer' ), 'param_name' => 'autoplay', 'value' => '-1', 'description' => __( 'Enter value in seconds. Set -1 to disable autoplay.', 'js_composer' ), 'group' => __( 'Pagination', 'js_composer' ), 'dependency' => array( 'element' => 'style', 'value' => array( 'pagination' ), ), ), array( 'type' => 'animation_style', 'heading' => __( 'Animation In', 'js_composer' ), 'param_name' => 'paging_animation_in', 'group' => __( 'Pagination', 'js_composer' ), 'settings' => array( 'type' => array( 'in', 'other', ), ), 'dependency' => array( 'element' => 'style', 'value' => array( 'pagination' ), ), 'description' => __( 'Select "animation in" for page transition.', 'js_composer' ), ), array( 'type' => 'animation_style', 'heading' => __( 'Animation Out', 'js_composer' ), 'param_name' => 'paging_animation_out', 'group' => __( 'Pagination', 'js_composer' ), 'settings' => array( 'type' => array( 'out' ), ), 'dependency' => array( 'element' => 'style', 'value' => array( 'pagination' ), ), 'description' => __( 'Select "animation out" for page transition.', 'js_composer' ), ), array( 'type' => 'vc_grid_item', 'heading' => __( 'Grid element template', 'js_composer' ), 'param_name' => 'item', 'description' => sprintf( __( '%sCreate new%s template or %smodify selected%s. Predefined templates will be cloned.', 'js_composer' ), '', '', '', '' ), 'group' => __( 'Item Design', 'js_composer' ), 'value' => 'none', ), array( 'type' => 'vc_grid_id', 'param_name' => 'grid_id', ), array( 'type' => 'animation_style', 'heading' => __( 'Initial loading animation', 'js_composer' ), 'param_name' => 'initial_loading_animation', 'value' => 'fadeIn', 'settings' => array( 'type' => array( 'in', 'other', ), ), 'description' => __( 'Select initial loading animation for grid element.', 'js_composer' ), ), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), // Load more btn array( 'type' => 'hidden', 'heading' => __( 'Button style', 'js_composer' ), 'param_name' => 'button_style', 'value' => '', 'param_holder_class' => 'vc_colored-dropdown', 'group' => __( 'Load More Button', 'js_composer' ), 'dependency' => array( 'element' => 'style', 'value' => array( 'load-more' ), ), 'description' => __( 'Select button style.', 'js_composer' ), ), array( 'type' => 'hidden', 'heading' => __( 'Button color', 'js_composer' ), 'param_name' => 'button_color', 'value' => '', 'param_holder_class' => 'vc_colored-dropdown', 'group' => __( 'Load More Button', 'js_composer' ), 'dependency' => array( 'element' => 'style', 'value' => array( 'load-more' ), ), 'description' => __( 'Select button color.', 'js_composer' ), ), array( 'type' => 'hidden', 'heading' => __( 'Button size', 'js_composer' ), 'param_name' => 'button_size', 'value' => '', 'description' => __( 'Select button size.', 'js_composer' ), 'group' => __( 'Load More Button', 'js_composer' ), 'dependency' => array( 'element' => 'style', 'value' => array( 'load-more' ), ), ), ), self::$btn3Params ); self::$basicGrid = array_merge( self::$basicGrid ); return self::$basicGrid; } // Media grid common settings public static function getMediaCommonAtts() { if ( self::$mediaGrid ) { return self::$mediaGrid; } if ( is_null( self::$btn3Params ) && is_null( self::$gridColsList ) ) { self::initData(); } self::$mediaGrid = array_merge( array( array( 'type' => 'attach_images', 'heading' => __( 'Images', 'js_composer' ), 'param_name' => 'include', 'description' => __( 'Select images from media library.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Display Style', 'js_composer' ), 'param_name' => 'style', 'value' => array( __( 'Show all', 'js_composer' ) => 'all', __( 'Load more button', 'js_composer' ) => 'load-more', __( 'Lazy loading', 'js_composer' ) => 'lazy', __( 'Pagination', 'js_composer' ) => 'pagination', ), 'dependency' => array( 'element' => 'post_type', 'value_not_equal_to' => array( 'custom' ), ), 'edit_field_class' => 'vc_col-sm-6', 'description' => __( 'Select display style for grid.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Items per page', 'js_composer' ), 'param_name' => 'items_per_page', 'description' => __( 'Number of items to show per page.', 'js_composer' ), 'value' => '10', 'dependency' => array( 'element' => 'style', 'value' => array( 'lazy', 'load-more', 'pagination', ), ), 'edit_field_class' => 'vc_col-sm-6', ), array( 'type' => 'dropdown', 'heading' => __( 'Grid elements per row', 'js_composer' ), 'param_name' => 'element_width', 'value' => self::$gridColsList, 'std' => '4', 'edit_field_class' => 'vc_col-sm-6', 'description' => __( 'Select number of single grid elements per row.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Gap', 'js_composer' ), 'param_name' => 'gap', 'value' => array( '0px' => '0', '1px' => '1', '2px' => '2', '3px' => '3', '4px' => '4', '5px' => '5', '10px' => '10', '15px' => '15', '20px' => '20', '25px' => '25', '30px' => '30', '35px' => '35', ), 'std' => '5', 'description' => __( 'Select gap between grid elements.', 'js_composer' ), 'edit_field_class' => 'vc_col-sm-6', ), array( 'type' => 'hidden', 'heading' => __( 'Button style', 'js_composer' ), 'param_name' => 'button_style', 'value' => '', 'param_holder_class' => 'vc_colored-dropdown', 'group' => __( 'Load More Button', 'js_composer' ), 'dependency' => array( 'element' => 'style', 'value' => array( 'load-more' ), ), 'description' => __( 'Select button style.', 'js_composer' ), ), array( 'type' => 'hidden', 'heading' => __( 'Button color', 'js_composer' ), 'param_name' => 'button_color', 'value' => '', 'param_holder_class' => 'vc_colored-dropdown', 'group' => __( 'Load More Button', 'js_composer' ), 'dependency' => array( 'element' => 'style', 'value' => array( 'load-more' ), ), 'description' => __( 'Select button color.', 'js_composer' ), ), array( 'type' => 'hidden', 'heading' => __( 'Button size', 'js_composer' ), 'param_name' => 'button_size', 'value' => '', 'description' => __( 'Select button size.', 'js_composer' ), 'group' => __( 'Load More Button', 'js_composer' ), 'dependency' => array( 'element' => 'style', 'value' => array( 'load-more' ), ), ), array( 'type' => 'dropdown', 'heading' => __( 'Arrows design', 'js_composer' ), 'param_name' => 'arrows_design', 'value' => array( __( 'None', 'js_composer' ) => 'none', __( 'Simple', 'js_composer' ) => 'vc_arrow-icon-arrow_01_left', __( 'Simple Circle Border', 'js_composer' ) => 'vc_arrow-icon-arrow_02_left', __( 'Simple Circle', 'js_composer' ) => 'vc_arrow-icon-arrow_03_left', __( 'Simple Square', 'js_composer' ) => 'vc_arrow-icon-arrow_09_left', __( 'Simple Square Rounded', 'js_composer' ) => 'vc_arrow-icon-arrow_12_left', __( 'Simple Rounded', 'js_composer' ) => 'vc_arrow-icon-arrow_11_left', __( 'Rounded', 'js_composer' ) => 'vc_arrow-icon-arrow_04_left', __( 'Rounded Circle Border', 'js_composer' ) => 'vc_arrow-icon-arrow_05_left', __( 'Rounded Circle', 'js_composer' ) => 'vc_arrow-icon-arrow_06_left', __( 'Rounded Square', 'js_composer' ) => 'vc_arrow-icon-arrow_10_left', __( 'Simple Arrow', 'js_composer' ) => 'vc_arrow-icon-arrow_08_left', __( 'Simple Rounded Arrow', 'js_composer' ) => 'vc_arrow-icon-arrow_07_left', ), 'group' => __( 'Pagination', 'js_composer' ), 'dependency' => array( 'element' => 'style', 'value' => array( 'pagination' ), ), 'description' => __( 'Select design for arrows.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Arrows position', 'js_composer' ), 'param_name' => 'arrows_position', 'value' => array( __( 'Inside Wrapper', 'js_composer' ) => 'inside', __( 'Outside Wrapper', 'js_composer' ) => 'outside', ), 'group' => __( 'Pagination', 'js_composer' ), 'dependency' => array( 'element' => 'arrows_design', 'value_not_equal_to' => array( 'none' ), // New dependency ), 'description' => __( 'Arrows will be displayed inside or outside grid.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Arrows color', 'js_composer' ), 'param_name' => 'arrows_color', 'value' => getVcShared( 'colors' ), 'param_holder_class' => 'vc_colored-dropdown', 'group' => __( 'Pagination', 'js_composer' ), 'dependency' => array( 'element' => 'arrows_design', 'value_not_equal_to' => array( 'none' ), // New dependency ), 'description' => __( 'Select color for arrows.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Pagination style', 'js_composer' ), 'param_name' => 'paging_design', 'value' => array( __( 'None', 'js_composer' ) => 'none', __( 'Square Dots', 'js_composer' ) => 'square_dots', __( 'Radio Dots', 'js_composer' ) => 'radio_dots', __( 'Point Dots', 'js_composer' ) => 'point_dots', __( 'Fill Square Dots', 'js_composer' ) => 'fill_square_dots', __( 'Rounded Fill Square Dots', 'js_composer' ) => 'round_fill_square_dots', __( 'Pagination Default', 'js_composer' ) => 'pagination_default', __( 'Outline Default Dark', 'js_composer' ) => 'pagination_default_dark', __( 'Outline Default Light', 'js_composer' ) => 'pagination_default_light', __( 'Pagination Rounded', 'js_composer' ) => 'pagination_rounded', __( 'Outline Rounded Dark', 'js_composer' ) => 'pagination_rounded_dark', __( 'Outline Rounded Light', 'js_composer' ) => 'pagination_rounded_light', __( 'Pagination Square', 'js_composer' ) => 'pagination_square', __( 'Outline Square Dark', 'js_composer' ) => 'pagination_square_dark', __( 'Outline Square Light', 'js_composer' ) => 'pagination_square_light', __( 'Pagination Rounded Square', 'js_composer' ) => 'pagination_rounded_square', __( 'Outline Rounded Square Dark', 'js_composer' ) => 'pagination_rounded_square_dark', __( 'Outline Rounded Square Light', 'js_composer' ) => 'pagination_rounded_square_light', __( 'Stripes Dark', 'js_composer' ) => 'pagination_stripes_dark', __( 'Stripes Light', 'js_composer' ) => 'pagination_stripes_light', ), 'std' => 'radio_dots', 'group' => __( 'Pagination', 'js_composer' ), 'dependency' => array( 'element' => 'style', 'value' => array( 'pagination' ), ), 'description' => __( 'Select pagination style.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Pagination color', 'js_composer' ), 'param_name' => 'paging_color', 'value' => getVcShared( 'colors' ), 'std' => 'grey', 'param_holder_class' => 'vc_colored-dropdown', 'group' => __( 'Pagination', 'js_composer' ), 'dependency' => array( 'element' => 'paging_design', 'value_not_equal_to' => array( 'none' ), // New dependency ), 'description' => __( 'Select pagination color.', 'js_composer' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Loop pages?', 'js_composer' ), 'param_name' => 'loop', 'description' => __( 'Allow items to be repeated in infinite loop (carousel).', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), 'group' => __( 'Pagination', 'js_composer' ), 'dependency' => array( 'element' => 'style', 'value' => array( 'pagination' ), ), ), array( 'type' => 'textfield', 'heading' => __( 'Autoplay delay', 'js_composer' ), 'param_name' => 'autoplay', 'value' => '-1', 'description' => __( 'Enter value in seconds. Set -1 to disable autoplay.', 'js_composer' ), 'group' => __( 'Pagination', 'js_composer' ), 'dependency' => array( 'element' => 'style', 'value' => array( 'pagination' ), ), ), array( 'type' => 'animation_style', 'heading' => __( 'Animation In', 'js_composer' ), 'param_name' => 'paging_animation_in', 'group' => __( 'Pagination', 'js_composer' ), 'settings' => array( 'type' => array( 'in', 'other', ), ), 'dependency' => array( 'element' => 'style', 'value' => array( 'pagination' ), ), 'description' => __( 'Select "animation in" for page transition.', 'js_composer' ), ), array( 'type' => 'animation_style', 'heading' => __( 'Animation Out', 'js_composer' ), 'param_name' => 'paging_animation_out', 'group' => __( 'Pagination', 'js_composer' ), 'settings' => array( 'type' => array( 'out' ), ), 'dependency' => array( 'element' => 'style', 'value' => array( 'pagination' ), ), 'description' => __( 'Select "animation out" for page transition.', 'js_composer' ), ), array( 'type' => 'vc_grid_item', 'heading' => __( 'Grid element template', 'js_composer' ), 'param_name' => 'item', 'description' => sprintf( __( '%sCreate new%s template or %smodify selected%s. Predefined templates will be cloned.', 'js_composer' ), '', '', '', '' ), 'group' => __( 'Item Design', 'js_composer' ), 'value' => 'mediaGrid_Default', ), array( 'type' => 'vc_grid_id', 'param_name' => 'grid_id', ), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), self::$btn3Params, array( // Load more btn bc array( 'type' => 'hidden', 'heading' => __( 'Button style', 'js_composer' ), 'param_name' => 'button_style', 'value' => '', 'param_holder_class' => 'vc_colored-dropdown', 'group' => __( 'Load More Button', 'js_composer' ), 'dependency' => array( 'element' => 'style', 'value' => array( 'load-more' ), ), 'description' => __( 'Select button style.', 'js_composer' ), ), array( 'type' => 'hidden', 'heading' => __( 'Button color', 'js_composer' ), 'param_name' => 'button_color', 'value' => '', 'param_holder_class' => 'vc_colored-dropdown', 'group' => __( 'Load More Button', 'js_composer' ), 'dependency' => array( 'element' => 'style', 'value' => array( 'load-more' ), ), 'description' => __( 'Select button color.', 'js_composer' ), ), array( 'type' => 'hidden', 'heading' => __( 'Button size', 'js_composer' ), 'param_name' => 'button_size', 'value' => '', 'description' => __( 'Select button size.', 'js_composer' ), 'group' => __( 'Load More Button', 'js_composer' ), 'dependency' => array( 'element' => 'style', 'value' => array( 'load-more' ), ), ), array( 'type' => 'animation_style', 'heading' => __( 'Initial loading animation', 'js_composer' ), 'param_name' => 'initial_loading_animation', 'value' => 'fadeIn', 'settings' => array( 'type' => array( 'in', 'other', ), ), 'description' => __( 'Select initial loading animation for grid element.', 'js_composer' ), ), ) ); self::$mediaGrid = array_merge( self::$mediaGrid ); return self::$mediaGrid; } public static function getMasonryCommonAtts() { if ( self::$masonryGrid ) { return self::$masonryGrid; } $gridParams = self::getBasicAtts(); self::$masonryGrid = $gridParams; $style = self::arraySearch( self::$masonryGrid, 'param_name', 'style' ); unset( self::$masonryGrid[ $style ]['value'][ __( 'Pagination', 'js_composer' ) ] ); $animation = self::arraySearch( self::$masonryGrid, 'param_name', 'initial_loading_animation' ); $masonryAnimation = array( 'type' => 'dropdown', 'heading' => __( 'Initial loading animation', 'js_composer' ), 'param_name' => 'initial_loading_animation', 'value' => array( __( 'None', 'js_composer' ) => 'none', __( 'Default', 'js_composer' ) => 'zoomIn', __( 'Fade In', 'js_composer' ) => 'fadeIn', ), 'std' => 'zoomIn', 'description' => __( 'Select initial loading animation for grid element.', 'js_composer' ), ); // unset( self::$masonryGrid[$animation] ); self::$masonryGrid[ $animation ] = $masonryAnimation; while ( $key = self::arraySearch( self::$masonryGrid, 'group', __( 'Pagination', 'js_composer' ) ) ) { unset( self::$masonryGrid[ $key ] ); } $vcGridItem = self::arraySearch( self::$masonryGrid, 'param_name', 'item' ); self::$masonryGrid[ $vcGridItem ]['value'] = 'masonryGrid_Default'; self::$masonryGrid = array_merge( self::$masonryGrid ); return array_merge( self::$masonryGrid ); } public static function getMasonryMediaCommonAtts() { if ( self::$masonryMediaGrid ) { return self::$masonryMediaGrid; } $mediaGridParams = self::getMediaCommonAtts(); self::$masonryMediaGrid = $mediaGridParams; while ( $key = self::arraySearch( self::$masonryMediaGrid, 'group', __( 'Pagination', 'js_composer' ) ) ) { unset( self::$masonryMediaGrid[ $key ] ); } $vcGridItem = self::arraySearch( self::$masonryMediaGrid, 'param_name', 'item' ); self::$masonryMediaGrid[ $vcGridItem ]['value'] = 'masonryMedia_Default'; $style = self::arraySearch( self::$masonryMediaGrid, 'param_name', 'style' ); unset( self::$masonryMediaGrid[ $style ]['value'][ __( 'Pagination', 'js_composer' ) ] ); $animation = self::arraySearch( self::$masonryMediaGrid, 'param_name', 'initial_loading_animation' ); $masonryAnimation = array( 'type' => 'dropdown', 'heading' => __( 'Initial loading animation', 'js_composer' ), 'param_name' => 'initial_loading_animation', 'value' => array( __( 'None', 'js_composer' ) => 'none', __( 'Default', 'js_composer' ) => 'zoomIn', __( 'Fade In', 'js_composer' ) => 'fadeIn', ), 'std' => 'zoomIn', 'settings' => array( 'type' => array( 'in', 'other', ), ), 'description' => __( 'Select initial loading animation for grid element.', 'js_composer' ), ); self::$masonryMediaGrid[ $animation ] = $masonryAnimation; self::$masonryMediaGrid = array_merge( self::$masonryMediaGrid ); return array_merge( self::$masonryMediaGrid ); } // Function to search array public static function arraySearch( $array, $column, $value ) { if ( ! is_array( $array ) ) { return false; } foreach ( $array as $key => $innerArray ) { $exists = isset( $innerArray[ $column ] ) && $innerArray[ $column ] == $value; if ( $exists ) { return $key; } } return false; } } // class ends } PK<\*A<(config/grids/shortcode-vc-media-grid.phpnu[ __( 'Media Grid', 'js_composer' ), 'base' => 'vc_media_grid', 'icon' => 'vc_icon-vc-media-grid', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Media grid from Media Library', 'js_composer' ), 'params' => $mediaGridParams, ); PK<\config/grids/.grids.phpnu[PK<\4`A&config/wp/shortcode-vc-wp-tagcloud.phpnu[show_tagcloud || empty( $tax->labels->name ) ) ) || ! is_object( $tax ) ) { continue; } $tag_taxonomies[ $tax->labels->name ] = esc_attr( $taxonomy ); } } } return array( 'name' => 'WP ' . __( 'Tag Cloud' ), 'base' => 'vc_wp_tagcloud', 'icon' => 'icon-wpb-wp', 'category' => __( 'WordPress Widgets', 'js_composer' ), 'class' => 'wpb_vc_wp_widget', 'weight' => - 50, 'description' => __( 'Your most used tags in cloud format', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'value' => __( 'Tags', 'js_composer' ), 'description' => __( 'What text use as a widget title. Leave blank to use default widget title.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Taxonomy', 'js_composer' ), 'param_name' => 'taxonomy', 'value' => $tag_taxonomies, 'description' => __( 'Select source for tag cloud.', 'js_composer' ), 'admin_label' => true, 'save_always' => true, ), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), ); PK<\i1aa#config/wp/shortcode-vc-wp-pages.phpnu[ 'WP ' . __( 'Pages' ), 'base' => 'vc_wp_pages', 'icon' => 'icon-wpb-wp', 'category' => __( 'WordPress Widgets', 'js_composer' ), 'class' => 'wpb_vc_wp_widget', 'weight' => - 50, 'description' => __( 'Your sites WordPress Pages', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'What text use as a widget title. Leave blank to use default widget title.', 'js_composer' ), 'value' => __( 'Pages' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Order by', 'js_composer' ), 'param_name' => 'sortby', 'value' => array( __( 'Page title', 'js_composer' ) => 'post_title', __( 'Page order', 'js_composer' ) => 'menu_order', __( 'Page ID', 'js_composer' ) => 'ID', ), 'description' => __( 'Select how to sort pages.', 'js_composer' ), 'admin_label' => true, ), array( 'type' => 'textfield', 'heading' => __( 'Exclude', 'js_composer' ), 'param_name' => 'exclude', 'description' => __( 'Enter page IDs to be excluded (Note: separate values by commas (,)).', 'js_composer' ), 'admin_label' => true, ), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), ); PK<\A#config/wp/shortcode-vc-wp-posts.phpnu[ 'WP ' . __( 'Recent Posts' ), 'base' => 'vc_wp_posts', 'icon' => 'icon-wpb-wp', 'category' => __( 'WordPress Widgets', 'js_composer' ), 'class' => 'wpb_vc_wp_widget', 'weight' => - 50, 'description' => __( 'The most recent posts on your site', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'What text use as a widget title. Leave blank to use default widget title.', 'js_composer' ), 'value' => __( 'Recent Posts' ), ), array( 'type' => 'textfield', 'heading' => __( 'Number of posts', 'js_composer' ), 'description' => __( 'Enter number of posts to display.', 'js_composer' ), 'param_name' => 'number', 'value' => 5, 'admin_label' => true, ), array( 'type' => 'checkbox', 'heading' => __( 'Display post date?', 'js_composer' ), 'param_name' => 'show_date', 'value' => array( __( 'Yes', 'js_composer' ) => true ), 'description' => __( 'If checked, date will be displayed.', 'js_composer' ), ), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), ); PK<\s4"config/wp/shortcode-vc-wp-meta.phpnu[ 'WP ' . __( 'Meta' ), 'base' => 'vc_wp_meta', 'icon' => 'icon-wpb-wp', 'category' => __( 'WordPress Widgets', 'js_composer' ), 'class' => 'wpb_vc_wp_widget', 'weight' => - 50, 'description' => __( 'Log in/out, admin, feed and WordPress links', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'What text use as a widget title. Leave blank to use default widget title.', 'js_composer' ), 'value' => __( 'Meta' ), ), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), ); PK<\config/wp/.wp.phpnu[PK<\{h))(config/wp/shortcode-vc-wp-custommenu.phpnu[ false ) ); if ( is_array( $menus ) && ! empty( $menus ) ) { foreach ( $menus as $single_menu ) { if ( is_object( $single_menu ) && isset( $single_menu->name, $single_menu->term_id ) ) { $custom_menus[ $single_menu->name ] = $single_menu->term_id; } } } } return array( 'name' => 'WP ' . __( 'Custom Menu' ), 'base' => 'vc_wp_custommenu', 'icon' => 'icon-wpb-wp', 'category' => __( 'WordPress Widgets', 'js_composer' ), 'class' => 'wpb_vc_wp_widget', 'weight' => - 50, 'description' => __( 'Use this widget to add one of your custom menus as a widget', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'What text use as a widget title. Leave blank to use default widget title.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Menu', 'js_composer' ), 'param_name' => 'nav_menu', 'value' => $custom_menus, 'description' => empty( $custom_menus ) ? __( 'Custom menus not found. Please visit Appearance > Menus page to create new menu.', 'js_composer' ) : __( 'Select menu to display.', 'js_composer' ), 'admin_label' => true, 'save_always' => true, ), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), ); PK<\X[$config/wp/shortcode-vc-wp-search.phpnu[ 'WP ' . __( 'Search' ), 'base' => 'vc_wp_search', 'icon' => 'icon-wpb-wp', 'category' => __( 'WordPress Widgets', 'js_composer' ), 'class' => 'wpb_vc_wp_widget', 'weight' => - 50, 'description' => __( 'A search form for your site', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'What text use as a widget title. Leave blank to use default widget title.', 'js_composer' ), ), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), ); PK<\>>&config/wp/shortcode-vc-wp-archives.phpnu[ 'WP ' . __( 'Archives' ), 'base' => 'vc_wp_archives', 'icon' => 'icon-wpb-wp', 'category' => __( 'WordPress Widgets', 'js_composer' ), 'class' => 'wpb_vc_wp_widget', 'weight' => - 50, 'description' => __( 'A monthly archive of your sites posts', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'What text use as a widget title. Leave blank to use default widget title.', 'js_composer' ), 'value' => __( 'Archives' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Display options', 'js_composer' ), 'param_name' => 'options', 'value' => array( __( 'Dropdown', 'js_composer' ) => 'dropdown', __( 'Show post counts', 'js_composer' ) => 'count', ), 'description' => __( 'Select display options for archives.', 'js_composer' ), ), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), ); PK<\,(c~~(config/wp/shortcode-vc-wp-categories.phpnu[ 'WP ' . __( 'Categories' ), 'base' => 'vc_wp_categories', 'icon' => 'icon-wpb-wp', 'category' => __( 'WordPress Widgets', 'js_composer' ), 'class' => 'wpb_vc_wp_widget', 'weight' => - 50, 'description' => __( 'A list or dropdown of categories', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'What text use as a widget title. Leave blank to use default widget title.', 'js_composer' ), 'value' => __( 'Categories' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Display options', 'js_composer' ), 'param_name' => 'options', 'value' => array( __( 'Dropdown', 'js_composer' ) => 'dropdown', __( 'Show post counts', 'js_composer' ) => 'count', __( 'Show hierarchy', 'js_composer' ) => 'hierarchical', ), 'description' => __( 'Select display options for categories.', 'js_composer' ), ), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), ); PK<\-P,config/wp/shortcode-vc-wp-recentcomments.phpnu[ 'WP ' . __( 'Recent Comments' ), 'base' => 'vc_wp_recentcomments', 'icon' => 'icon-wpb-wp', 'category' => __( 'WordPress Widgets', 'js_composer' ), 'class' => 'wpb_vc_wp_widget', 'weight' => - 50, 'description' => __( 'The most recent comments', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'What text use as a widget title. Leave blank to use default widget title.', 'js_composer' ), 'value' => __( 'Recent Comments' ), ), array( 'type' => 'textfield', 'heading' => __( 'Number of comments', 'js_composer' ), 'description' => __( 'Enter number of comments to display.', 'js_composer' ), 'param_name' => 'number', 'value' => 5, 'admin_label' => true, ), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), ); PK<\=&config/wp/shortcode-vc-wp-calendar.phpnu[ 'WP ' . __( 'Calendar' ), 'base' => 'vc_wp_calendar', 'icon' => 'icon-wpb-wp', 'category' => __( 'WordPress Widgets', 'js_composer' ), 'class' => 'wpb_vc_wp_widget', 'weight' => - 50, 'description' => __( 'A calendar of your sites posts', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'What text use as a widget title. Leave blank to use default widget title.', 'js_composer' ), ), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), ); PK<\zC!config/wp/shortcode-vc-wp-rss.phpnu[ 'WP ' . __( 'RSS' ), 'base' => 'vc_wp_rss', 'icon' => 'icon-wpb-wp', 'category' => __( 'WordPress Widgets', 'js_composer' ), 'class' => 'wpb_vc_wp_widget', 'weight' => - 50, 'description' => __( 'Entries from any RSS or Atom feed', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'What text use as a widget title. Leave blank to use default widget title.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'RSS feed URL', 'js_composer' ), 'param_name' => 'url', 'description' => __( 'Enter the RSS feed URL.', 'js_composer' ), 'admin_label' => true, ), array( 'type' => 'dropdown', 'heading' => __( 'Items', 'js_composer' ), 'param_name' => 'items', 'value' => array( __( '10 - Default', 'js_composer' ) => 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ), 'description' => __( 'Select how many items to display.', 'js_composer' ), 'admin_label' => true, ), array( 'type' => 'checkbox', 'heading' => __( 'Options', 'js_composer' ), 'param_name' => 'options', 'value' => array( __( 'Item content', 'js_composer' ) => 'show_summary', __( 'Display item author if available?', 'js_composer' ) => 'show_author', __( 'Display item date?', 'js_composer' ) => 'show_date', ), 'description' => __( 'Select display options for RSS feeds.', 'js_composer' ), ), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), ); PK<\}Y= #config/wp/shortcode-vc-wp-links.phpnu[ '' ); $link_cats = get_terms( 'link_category' ); if ( is_array( $link_cats ) && ! empty( $link_cats ) ) { foreach ( $link_cats as $link_cat ) { if ( is_object( $link_cat ) && isset( $link_cat->name, $link_cat->term_id ) ) { $link_category[ $link_cat->name ] = $link_cat->term_id; } } } } else { $link_category = array(); } return array( 'name' => 'WP ' . __( 'Links' ), 'base' => 'vc_wp_links', 'icon' => 'icon-wpb-wp', 'category' => __( 'WordPress Widgets', 'js_composer' ), 'class' => 'wpb_vc_wp_widget', 'content_element' => (bool) get_option( 'link_manager_enabled' ), 'weight' => - 50, 'description' => __( 'Your blogroll', 'js_composer' ), 'params' => array( array( 'type' => 'dropdown', 'heading' => __( 'Link Category', 'js_composer' ), 'param_name' => 'category', 'value' => $link_category, 'admin_label' => true, ), array( 'type' => 'dropdown', 'heading' => __( 'Order by', 'js_composer' ), 'param_name' => 'orderby', 'value' => array( __( 'Link title', 'js_composer' ) => 'name', __( 'Link rating', 'js_composer' ) => 'rating', __( 'Link ID', 'js_composer' ) => 'id', __( 'Random', 'js_composer' ) => 'rand', ), ), array( 'type' => 'checkbox', 'heading' => __( 'Options', 'js_composer' ), 'param_name' => 'options', 'value' => array( __( 'Show Link Image', 'js_composer' ) => 'images', __( 'Show Link Name', 'js_composer' ) => 'name', __( 'Show Link Description', 'js_composer' ) => 'description', __( 'Show Link Rating', 'js_composer' ) => 'rating', ), ), array( 'type' => 'textfield', 'heading' => __( 'Number of links to show', 'js_composer' ), 'param_name' => 'limit', 'value' => - 1, ), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), ); PK<\??x@@"config/wp/shortcode-vc-wp-text.phpnu[ 'WP ' . __( 'Text' ), 'base' => 'vc_wp_text', 'icon' => 'icon-wpb-wp', 'category' => __( 'WordPress Widgets', 'js_composer' ), 'class' => 'wpb_vc_wp_widget', 'weight' => - 50, 'description' => __( 'Arbitrary text or HTML', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'What text use as a widget title. Leave blank to use default widget title.', 'js_composer' ), ), array( 'type' => 'textarea_html', 'holder' => 'div', 'heading' => __( 'Text', 'js_composer' ), 'param_name' => 'content', ), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), ); PK<\ON) ) #config/content/shortcode-vc-pie.phpnu[ __( 'Pie Chart', 'js_composer' ), 'base' => 'vc_pie', 'class' => '', 'icon' => 'icon-wpb-vc_pie', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Animated pie chart', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ), 'admin_label' => true, ), array( 'type' => 'textfield', 'heading' => __( 'Value', 'js_composer' ), 'param_name' => 'value', 'description' => __( 'Enter value for graph (Note: choose range from 0 to 100).', 'js_composer' ), 'value' => '50', 'admin_label' => true, ), array( 'type' => 'textfield', 'heading' => __( 'Label value', 'js_composer' ), 'param_name' => 'label_value', 'description' => __( 'Enter label for pie chart (Note: leaving empty will set value from "Value" field).', 'js_composer' ), 'value' => '', ), array( 'type' => 'textfield', 'heading' => __( 'Units', 'js_composer' ), 'param_name' => 'units', 'description' => __( 'Enter measurement units (Example: %, px, points, etc. Note: graph value and units will be appended to graph title).', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Color', 'js_composer' ), 'param_name' => 'color', 'value' => getVcShared( 'colors-dashed' ) + array( __( 'Custom', 'js_composer' ) => 'custom' ), 'description' => __( 'Select pie chart color.', 'js_composer' ), 'admin_label' => true, 'param_holder_class' => 'vc_colored-dropdown', 'std' => 'grey', ), array( 'type' => 'colorpicker', 'heading' => __( 'Custom color', 'js_composer' ), 'param_name' => 'custom_color', 'description' => __( 'Select custom color.', 'js_composer' ), 'dependency' => array( 'element' => 'color', 'value' => array( 'custom' ), ), ), vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), ); PK<\.ˇ}}$config/content/shortcode-vc-icon.phpnu[ __( 'Icon', 'js_composer' ), 'base' => 'vc_icon', 'icon' => 'icon-wpb-vc_icon', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Eye catching icons from libraries', 'js_composer' ), 'params' => array( array( 'type' => 'dropdown', 'heading' => __( 'Icon library', 'js_composer' ), 'value' => array( __( 'Font Awesome', 'js_composer' ) => 'fontawesome', __( 'Open Iconic', 'js_composer' ) => 'openiconic', __( 'Typicons', 'js_composer' ) => 'typicons', __( 'Entypo', 'js_composer' ) => 'entypo', __( 'Linecons', 'js_composer' ) => 'linecons', __( 'Mono Social', 'js_composer' ) => 'monosocial', __( 'Material', 'js_composer' ) => 'material', ), 'admin_label' => true, 'param_name' => 'type', 'description' => __( 'Select icon library.', 'js_composer' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'js_composer' ), 'param_name' => 'icon_fontawesome', 'value' => 'fa fa-adjust', // default value to backend editor admin_label 'settings' => array( 'emptyIcon' => false, // default true, display an "EMPTY" icon? 'iconsPerPage' => 4000, // default 100, how many icons per/page to display, we use (big number) to display all icons in single page ), 'dependency' => array( 'element' => 'type', 'value' => 'fontawesome', ), 'description' => __( 'Select icon from library.', 'js_composer' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'js_composer' ), 'param_name' => 'icon_openiconic', 'value' => 'vc-oi vc-oi-dial', // default value to backend editor admin_label 'settings' => array( 'emptyIcon' => false, // default true, display an "EMPTY" icon? 'type' => 'openiconic', 'iconsPerPage' => 4000, // default 100, how many icons per/page to display ), 'dependency' => array( 'element' => 'type', 'value' => 'openiconic', ), 'description' => __( 'Select icon from library.', 'js_composer' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'js_composer' ), 'param_name' => 'icon_typicons', 'value' => 'typcn typcn-adjust-brightness', // default value to backend editor admin_label 'settings' => array( 'emptyIcon' => false, // default true, display an "EMPTY" icon? 'type' => 'typicons', 'iconsPerPage' => 4000, // default 100, how many icons per/page to display ), 'dependency' => array( 'element' => 'type', 'value' => 'typicons', ), 'description' => __( 'Select icon from library.', 'js_composer' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'js_composer' ), 'param_name' => 'icon_entypo', 'value' => 'entypo-icon entypo-icon-note', // default value to backend editor admin_label 'settings' => array( 'emptyIcon' => false, // default true, display an "EMPTY" icon? 'type' => 'entypo', 'iconsPerPage' => 4000, // default 100, how many icons per/page to display ), 'dependency' => array( 'element' => 'type', 'value' => 'entypo', ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'js_composer' ), 'param_name' => 'icon_linecons', 'value' => 'vc_li vc_li-heart', // default value to backend editor admin_label 'settings' => array( 'emptyIcon' => false, // default true, display an "EMPTY" icon? 'type' => 'linecons', 'iconsPerPage' => 4000, // default 100, how many icons per/page to display ), 'dependency' => array( 'element' => 'type', 'value' => 'linecons', ), 'description' => __( 'Select icon from library.', 'js_composer' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'js_composer' ), 'param_name' => 'icon_monosocial', 'value' => 'vc-mono vc-mono-fivehundredpx', // default value to backend editor admin_label 'settings' => array( 'emptyIcon' => false, // default true, display an "EMPTY" icon? 'type' => 'monosocial', 'iconsPerPage' => 4000, // default 100, how many icons per/page to display ), 'dependency' => array( 'element' => 'type', 'value' => 'monosocial', ), 'description' => __( 'Select icon from library.', 'js_composer' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'js_composer' ), 'param_name' => 'icon_material', 'value' => 'vc-material vc-material-cake', // default value to backend editor admin_label 'settings' => array( 'emptyIcon' => false, // default true, display an "EMPTY" icon? 'type' => 'material', 'iconsPerPage' => 4000, // default 100, how many icons per/page to display ), 'dependency' => array( 'element' => 'type', 'value' => 'material', ), 'description' => __( 'Select icon from library.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Icon color', 'js_composer' ), 'param_name' => 'color', 'value' => array_merge( getVcShared( 'colors' ), array( __( 'Custom color', 'js_composer' ) => 'custom' ) ), 'description' => __( 'Select icon color.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown', ), array( 'type' => 'colorpicker', 'heading' => __( 'Custom color', 'js_composer' ), 'param_name' => 'custom_color', 'description' => __( 'Select custom icon color.', 'js_composer' ), 'dependency' => array( 'element' => 'color', 'value' => 'custom', ), ), array( 'type' => 'dropdown', 'heading' => __( 'Background shape', 'js_composer' ), 'param_name' => 'background_style', 'value' => array( __( 'None', 'js_composer' ) => '', __( 'Circle', 'js_composer' ) => 'rounded', __( 'Square', 'js_composer' ) => 'boxed', __( 'Rounded', 'js_composer' ) => 'rounded-less', __( 'Outline Circle', 'js_composer' ) => 'rounded-outline', __( 'Outline Square', 'js_composer' ) => 'boxed-outline', __( 'Outline Rounded', 'js_composer' ) => 'rounded-less-outline', ), 'description' => __( 'Select background shape and style for icon.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Background color', 'js_composer' ), 'param_name' => 'background_color', 'value' => array_merge( getVcShared( 'colors' ), array( __( 'Custom color', 'js_composer' ) => 'custom' ) ), 'std' => 'grey', 'description' => __( 'Select background color for icon.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown', 'dependency' => array( 'element' => 'background_style', 'not_empty' => true, ), ), array( 'type' => 'colorpicker', 'heading' => __( 'Custom background color', 'js_composer' ), 'param_name' => 'custom_background_color', 'description' => __( 'Select custom icon background color.', 'js_composer' ), 'dependency' => array( 'element' => 'background_color', 'value' => 'custom', ), ), array( 'type' => 'dropdown', 'heading' => __( 'Size', 'js_composer' ), 'param_name' => 'size', 'value' => array_merge( getVcShared( 'sizes' ), array( 'Extra Large' => 'xl' ) ), 'std' => 'md', 'description' => __( 'Icon size.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Icon alignment', 'js_composer' ), 'param_name' => 'align', 'value' => array( __( 'Left', 'js_composer' ) => 'left', __( 'Right', 'js_composer' ) => 'right', __( 'Center', 'js_composer' ) => 'center', ), 'description' => __( 'Select icon alignment.', 'js_composer' ), ), array( 'type' => 'vc_link', 'heading' => __( 'URL (Link)', 'js_composer' ), 'param_name' => 'link', 'description' => __( 'Add link to icon.', 'js_composer' ), ), vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), 'js_view' => 'VcIconElementView_Backend', ); } PK<\ WW,config/content/vc-custom-heading-element.phpnu[ __( 'Custom Heading', 'js_composer' ), 'base' => 'vc_custom_heading', 'icon' => 'icon-wpb-ui-custom_heading', 'show_settings_on_create' => true, 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Text with Google fonts', 'js_composer' ), 'params' => array( array( 'type' => 'dropdown', 'heading' => __( 'Text source', 'js_composer' ), 'param_name' => 'source', 'value' => array( __( 'Custom text', 'js_composer' ) => '', __( 'Post or Page Title', 'js_composer' ) => 'post_title', ), 'std' => '', 'description' => __( 'Select text source.', 'js_composer' ), ), array( 'type' => 'textarea', 'heading' => __( 'Text', 'js_composer' ), 'param_name' => 'text', 'admin_label' => true, 'value' => __( 'This is custom heading element', 'js_composer' ), 'description' => __( 'Note: If you are using non-latin characters be sure to activate them under Settings/WPBakery Page Builder/General Settings.', 'js_composer' ), 'dependency' => array( 'element' => 'source', 'is_empty' => true, ), ), array( 'type' => 'vc_link', 'heading' => __( 'URL (Link)', 'js_composer' ), 'param_name' => 'link', 'description' => __( 'Add link to custom heading.', 'js_composer' ), // compatible with btn2 and converted from href{btn1} ), array( 'type' => 'font_container', 'param_name' => 'font_container', 'value' => 'tag:h2|text_align:left', 'settings' => array( 'fields' => array( 'tag' => 'h2', // default value h2 'text_align', 'font_size', 'line_height', 'color', 'tag_description' => __( 'Select element tag.', 'js_composer' ), 'text_align_description' => __( 'Select text alignment.', 'js_composer' ), 'font_size_description' => __( 'Enter font size.', 'js_composer' ), 'line_height_description' => __( 'Enter line height.', 'js_composer' ), 'color_description' => __( 'Select heading color.', 'js_composer' ), ), ), ), array( 'type' => 'checkbox', 'heading' => __( 'Use theme default font family?', 'js_composer' ), 'param_name' => 'use_theme_fonts', 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), 'description' => __( 'Use font family from the theme.', 'js_composer' ), ), array( 'type' => 'google_fonts', 'param_name' => 'google_fonts', 'value' => 'font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal', 'settings' => array( 'fields' => array( 'font_family_description' => __( 'Select font family.', 'js_composer' ), 'font_style_description' => __( 'Select font styling.', 'js_composer' ), ), ), 'dependency' => array( 'element' => 'use_theme_fonts', 'value_not_equal_to' => 'yes', ), ), vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), ); } PK<\(*config/content/shortcode-vc-line-chart.phpnu[ __( 'Line Chart', 'js_composer' ), 'base' => 'vc_line_chart', 'class' => '', 'icon' => 'icon-wpb-vc-line-chart', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Line and Bar charts', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ), 'admin_label' => true, ), array( 'type' => 'dropdown', 'heading' => __( 'Design', 'js_composer' ), 'param_name' => 'type', 'value' => array( __( 'Line', 'js_composer' ) => 'line', __( 'Bar', 'js_composer' ) => 'bar', ), 'std' => 'bar', 'description' => __( 'Select type of chart.', 'js_composer' ), 'admin_label' => true, ), array( 'type' => 'dropdown', 'heading' => __( 'Style', 'js_composer' ), 'description' => __( 'Select chart color style.', 'js_composer' ), 'param_name' => 'style', 'value' => array( __( 'Flat', 'js_composer' ) => 'flat', __( 'Modern', 'js_composer' ) => 'modern', __( 'Custom', 'js_composer' ) => 'custom', ), 'dependency' => array( 'callback' => 'vcChartCustomColorDependency', ), ), array( 'type' => 'checkbox', 'heading' => __( 'Show legend?', 'js_composer' ), 'param_name' => 'legend', 'description' => __( 'If checked, chart will have legend.', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), 'std' => 'yes', ), array( 'type' => 'checkbox', 'heading' => __( 'Show hover values?', 'js_composer' ), 'param_name' => 'tooltips', 'description' => __( 'If checked, chart will show values on hover.', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), 'std' => 'yes', ), array( 'type' => 'textfield', 'heading' => __( 'X-axis values', 'js_composer' ), 'param_name' => 'x_values', 'description' => __( 'Enter values for axis (Note: separate values with ";").', 'js_composer' ), 'value' => 'JAN; FEB; MAR; APR; MAY; JUN; JUL; AUG', ), array( 'type' => 'param_group', 'heading' => __( 'Values', 'js_composer' ), 'param_name' => 'values', 'value' => urlencode( json_encode( array( array( 'title' => __( 'One', 'js_composer' ), 'y_values' => '10; 15; 20; 25; 27; 25; 23; 25', 'color' => 'blue', ), array( 'title' => __( 'Two', 'js_composer' ), 'y_values' => '25; 18; 16; 17; 20; 25; 30; 35', 'color' => 'pink', ), ) ) ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'Enter title for chart dataset.', 'js_composer' ), 'admin_label' => true, ), array( 'type' => 'textfield', 'heading' => __( 'Y-axis values', 'js_composer' ), 'param_name' => 'y_values', 'description' => __( 'Enter values for axis (Note: separate values with ";").', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Color', 'js_composer' ), 'param_name' => 'color', 'value' => getVcShared( 'colors-dashed' ), 'description' => __( 'Select chart color.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown', ), array( 'type' => 'colorpicker', 'heading' => __( 'Custom color', 'js_composer' ), 'param_name' => 'custom_color', 'description' => __( 'Select custom chart color.', 'js_composer' ), ), ), 'callbacks' => array( 'after_add' => 'vcChartParamAfterAddCallback', ), ), array( 'type' => 'dropdown', 'heading' => __( 'Animation', 'js_composer' ), 'description' => __( 'Select animation style.', 'js_composer' ), 'param_name' => 'animation', 'value' => getVcShared( 'animation styles' ), 'std' => 'easeinOutCubic', ), vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), ); PK<\BJ.config/content/shortcode-vc-text-separator.phpnu[ array( 'align', 'css', 'el_class', 'el_id', 'link', 'css_animation', ), // we need only type, icon_fontawesome, icon_blabla..., NOT color and etc ), array( 'element' => 'add_icon', 'value' => 'true', ) ); // populate integrated vc_icons params. if ( is_array( $icons_params ) && ! empty( $icons_params ) ) { foreach ( $icons_params as $key => $param ) { if ( is_array( $param ) && ! empty( $param ) ) { if ( isset( $param['admin_label'] ) ) { // remove admin label unset( $icons_params[ $key ]['admin_label'] ); } } } } return array( 'name' => __( 'Separator with Text', 'js_composer' ), 'base' => 'vc_text_separator', 'icon' => 'icon-wpb-ui-separator-label', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Horizontal separator line with heading', 'js_composer' ), 'params' => array_merge( array( array( 'type' => 'textfield', 'heading' => __( 'Title', 'js_composer' ), 'param_name' => 'title', 'holder' => 'div', 'value' => __( 'Title', 'js_composer' ), 'description' => __( 'Add text to separator.', 'js_composer' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Add icon?', 'js_composer' ), 'param_name' => 'add_icon', ), ), $icons_params, array( array( 'type' => 'dropdown', 'heading' => __( 'Title position', 'js_composer' ), 'param_name' => 'title_align', 'value' => array( __( 'Center', 'js_composer' ) => 'separator_align_center', __( 'Left', 'js_composer' ) => 'separator_align_left', __( 'Right', 'js_composer' ) => 'separator_align_right', ), 'description' => __( 'Select title location.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Separator alignment', 'js_composer' ), 'param_name' => 'align', 'value' => array( __( 'Center', 'js_composer' ) => 'align_center', __( 'Left', 'js_composer' ) => 'align_left', __( 'Right', 'js_composer' ) => 'align_right', ), 'description' => __( 'Select separator alignment.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Color', 'js_composer' ), 'param_name' => 'color', 'value' => array_merge( getVcShared( 'colors' ), array( __( 'Custom color', 'js_composer' ) => 'custom' ) ), 'std' => 'grey', 'description' => __( 'Select color of separator.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown', ), array( 'type' => 'colorpicker', 'heading' => __( 'Custom Color', 'js_composer' ), 'param_name' => 'accent_color', 'description' => __( 'Custom separator color for your element.', 'js_composer' ), 'dependency' => array( 'element' => 'color', 'value' => array( 'custom' ), ), ), array( 'type' => 'dropdown', 'heading' => __( 'Style', 'js_composer' ), 'param_name' => 'style', 'value' => getVcShared( 'separator styles' ), 'description' => __( 'Separator display style.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Border width', 'js_composer' ), 'param_name' => 'border_width', 'value' => getVcShared( 'separator border widths' ), 'description' => __( 'Select border width (pixels).', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Element width', 'js_composer' ), 'param_name' => 'el_width', 'value' => getVcShared( 'separator widths' ), 'description' => __( 'Separator element width in percents.', 'js_composer' ), ), vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'hidden', 'param_name' => 'layout', 'value' => 'separator_with_text', ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ) ), 'js_view' => 'VcTextSeparatorView', ); PK<\{먉+config/content/shortcode-vc-empty-space.phpnu[ __( 'Empty Space', 'js_composer' ), 'base' => 'vc_empty_space', 'icon' => 'icon-wpb-ui-empty_space', 'show_settings_on_create' => true, 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Blank space with custom height', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Height', 'js_composer' ), 'param_name' => 'height', 'value' => '32px', 'admin_label' => true, 'description' => __( 'Enter empty space height (Note: CSS measurement units allowed).', 'js_composer' ), ), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), ); PK<\rᾪ+config/content/shortcode-vc-column-text.phpnu[ __( 'Text Block', 'js_composer' ), 'icon' => 'icon-wpb-layer-shape-text', 'wrapper_class' => 'clearfix', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'A block of text with WYSIWYG editor', 'js_composer' ), 'params' => array( array( 'type' => 'textarea_html', 'holder' => 'div', 'heading' => __( 'Text', 'js_composer' ), 'param_name' => 'content', 'value' => __( '

I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

', 'js_composer' ), ), vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), ); PK<\NF#KK&config/content/shortcode-vc-toggle.phpnu[ array( 'source', 'text', 'css', 'link', ), ), array( 'element' => 'use_custom_heading', 'value' => 'true', ) ); $params = array_merge( array( array( 'type' => 'textfield', 'holder' => 'h4', 'class' => 'vc_toggle_title', 'heading' => __( 'Toggle title', 'js_composer' ), 'param_name' => 'title', 'value' => __( 'Toggle title', 'js_composer' ), 'description' => __( 'Enter title of toggle block.', 'js_composer' ), 'edit_field_class' => 'vc_col-sm-9', ), array( 'type' => 'checkbox', 'heading' => __( 'Use custom font?', 'js_composer' ), 'param_name' => 'use_custom_heading', 'description' => __( 'Enable Google fonts.', 'js_composer' ), 'edit_field_class' => 'vc_col-sm-3', ), array( 'type' => 'textarea_html', 'holder' => 'div', 'class' => 'vc_toggle_content', 'heading' => __( 'Toggle content', 'js_composer' ), 'param_name' => 'content', 'value' => __( '

Toggle content goes here, click edit button to change this text.

', 'js_composer' ), 'description' => __( 'Toggle block content.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Style', 'js_composer' ), 'param_name' => 'style', 'value' => getVcShared( 'toggle styles' ), 'description' => __( 'Select toggle design style.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Icon color', 'js_composer' ), 'param_name' => 'color', 'value' => array( __( 'Default', 'js_composer' ) => 'default' ) + getVcShared( 'colors' ), 'description' => __( 'Select icon color.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown', ), array( 'type' => 'dropdown', 'heading' => __( 'Size', 'js_composer' ), 'param_name' => 'size', 'value' => array_diff_key( getVcShared( 'sizes' ), array( 'Mini' => '' ) ), 'std' => 'md', 'description' => __( 'Select toggle size', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Default state', 'js_composer' ), 'param_name' => 'open', 'value' => array( __( 'Closed', 'js_composer' ) => 'false', __( 'Open', 'js_composer' ) => 'true', ), 'description' => __( 'Select "Open" if you want toggle to be open by default.', 'js_composer' ), ), vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter optional ID. Make sure it is unique, and it is valid as w3c specification: %s (Must not have spaces)', 'js_composer' ), '' . __( 'link', 'js_composer' ) . '' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), $cta_custom_heading, array( array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ) ); return array( 'name' => __( 'FAQ', 'js_composer' ), 'base' => 'vc_toggle', 'icon' => 'icon-wpb-toggle-small-expand', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Toggle element for Q&A block', 'js_composer' ), 'params' => $params, 'js_view' => 'VcToggleView', ); PK<\W,config/content/shortcode-vc-single-image.phpnu[ __( 'Single Image', 'js_composer' ), 'base' => 'vc_single_image', 'icon' => 'icon-wpb-single-image', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Simple image with CSS animation', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Image source', 'js_composer' ), 'param_name' => 'source', 'value' => array( __( 'Media library', 'js_composer' ) => 'media_library', __( 'External link', 'js_composer' ) => 'external_link', __( 'Featured Image', 'js_composer' ) => 'featured_image', ), 'std' => 'media_library', 'description' => __( 'Select image source.', 'js_composer' ), ), array( 'type' => 'attach_image', 'heading' => __( 'Image', 'js_composer' ), 'param_name' => 'image', 'value' => '', 'description' => __( 'Select image from media library.', 'js_composer' ), 'dependency' => array( 'element' => 'source', 'value' => 'media_library', ), 'admin_label' => true, ), array( 'type' => 'textfield', 'heading' => __( 'External link', 'js_composer' ), 'param_name' => 'custom_src', 'description' => __( 'Select external link.', 'js_composer' ), 'dependency' => array( 'element' => 'source', 'value' => 'external_link', ), 'admin_label' => true, ), array( 'type' => 'textfield', 'heading' => __( 'Image size', 'js_composer' ), 'param_name' => 'img_size', 'value' => 'thumbnail', 'description' => __( 'Enter image size (Example: "thumbnail", "medium", "large", "full" or other sizes defined by theme). Alternatively enter size in pixels (Example: 200x100 (Width x Height)).', 'js_composer' ), 'dependency' => array( 'element' => 'source', 'value' => array( 'media_library', 'featured_image', ), ), ), array( 'type' => 'textfield', 'heading' => __( 'Image size', 'js_composer' ), 'param_name' => 'external_img_size', 'value' => '', 'description' => __( 'Enter image size in pixels. Example: 200x100 (Width x Height).', 'js_composer' ), 'dependency' => array( 'element' => 'source', 'value' => 'external_link', ), ), array( 'type' => 'textfield', 'heading' => __( 'Caption', 'js_composer' ), 'param_name' => 'caption', 'description' => __( 'Enter text for image caption.', 'js_composer' ), 'dependency' => array( 'element' => 'source', 'value' => 'external_link', ), ), array( 'type' => 'checkbox', 'heading' => __( 'Add caption?', 'js_composer' ), 'param_name' => 'add_caption', 'description' => __( 'Add image caption.', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), 'dependency' => array( 'element' => 'source', 'value' => array( 'media_library', 'featured_image', ), ), ), array( 'type' => 'dropdown', 'heading' => __( 'Image alignment', 'js_composer' ), 'param_name' => 'alignment', 'value' => array( __( 'Left', 'js_composer' ) => 'left', __( 'Right', 'js_composer' ) => 'right', __( 'Center', 'js_composer' ) => 'center', ), 'description' => __( 'Select image alignment.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Image style', 'js_composer' ), 'param_name' => 'style', 'value' => getVcShared( 'single image styles' ), 'description' => __( 'Select image display style.', 'js_composer' ), 'dependency' => array( 'element' => 'source', 'value' => array( 'media_library', 'featured_image', ), ), ), array( 'type' => 'dropdown', 'heading' => __( 'Image style', 'js_composer' ), 'param_name' => 'external_style', 'value' => getVcShared( 'single image external styles' ), 'description' => __( 'Select image display style.', 'js_composer' ), 'dependency' => array( 'element' => 'source', 'value' => 'external_link', ), ), array( 'type' => 'dropdown', 'heading' => __( 'Border color', 'js_composer' ), 'param_name' => 'border_color', 'value' => getVcShared( 'colors' ), 'std' => 'grey', 'dependency' => array( 'element' => 'style', 'value' => array( 'vc_box_border', 'vc_box_border_circle', 'vc_box_outline', 'vc_box_outline_circle', 'vc_box_border_circle_2', 'vc_box_outline_circle_2', ), ), 'description' => __( 'Border color.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown', ), array( 'type' => 'dropdown', 'heading' => __( 'Border color', 'js_composer' ), 'param_name' => 'external_border_color', 'value' => getVcShared( 'colors' ), 'std' => 'grey', 'dependency' => array( 'element' => 'external_style', 'value' => array( 'vc_box_border', 'vc_box_border_circle', 'vc_box_outline', 'vc_box_outline_circle', ), ), 'description' => __( 'Border color.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown', ), array( 'type' => 'dropdown', 'heading' => __( 'On click action', 'js_composer' ), 'param_name' => 'onclick', 'value' => array( __( 'None', 'js_composer' ) => '', __( 'Link to large image', 'js_composer' ) => 'img_link_large', __( 'Open prettyPhoto', 'js_composer' ) => 'link_image', __( 'Open custom link', 'js_composer' ) => 'custom_link', __( 'Zoom', 'js_composer' ) => 'zoom', ), 'description' => __( 'Select action for click action.', 'js_composer' ), 'std' => '', ), array( 'type' => 'href', 'heading' => __( 'Image link', 'js_composer' ), 'param_name' => 'link', 'description' => __( 'Enter URL if you want this image to have a link (Note: parameters like "mailto:" are also accepted).', 'js_composer' ), 'dependency' => array( 'element' => 'onclick', 'value' => 'custom_link', ), ), array( 'type' => 'dropdown', 'heading' => __( 'Link Target', 'js_composer' ), 'param_name' => 'img_link_target', 'value' => vc_target_param_list(), 'dependency' => array( 'element' => 'onclick', 'value' => array( 'custom_link', 'img_link_large', ), ), ), vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), // backward compatibility. since 4.6 array( 'type' => 'hidden', 'param_name' => 'img_link_large', ), ), ); PK<\Y'77,config/content/shortcode-vc-progress-bar.phpnu[ __( 'Progress Bar', 'js_composer' ), 'base' => 'vc_progress_bar', 'icon' => 'icon-wpb-graph', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Animated progress bar', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ), ), array( 'type' => 'param_group', 'heading' => __( 'Values', 'js_composer' ), 'param_name' => 'values', 'description' => __( 'Enter values for graph - value, title and color.', 'js_composer' ), 'value' => urlencode( json_encode( array( array( 'label' => __( 'Development', 'js_composer' ), 'value' => '90', ), array( 'label' => __( 'Design', 'js_composer' ), 'value' => '80', ), array( 'label' => __( 'Marketing', 'js_composer' ), 'value' => '70', ), ) ) ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Label', 'js_composer' ), 'param_name' => 'label', 'description' => __( 'Enter text used as title of bar.', 'js_composer' ), 'admin_label' => true, ), array( 'type' => 'textfield', 'heading' => __( 'Value', 'js_composer' ), 'param_name' => 'value', 'description' => __( 'Enter value of bar.', 'js_composer' ), 'admin_label' => true, ), array( 'type' => 'dropdown', 'heading' => __( 'Color', 'js_composer' ), 'param_name' => 'color', 'value' => array( __( 'Default', 'js_composer' ) => '', ) + array( __( 'Classic Grey', 'js_composer' ) => 'bar_grey', __( 'Classic Blue', 'js_composer' ) => 'bar_blue', __( 'Classic Turquoise', 'js_composer' ) => 'bar_turquoise', __( 'Classic Green', 'js_composer' ) => 'bar_green', __( 'Classic Orange', 'js_composer' ) => 'bar_orange', __( 'Classic Red', 'js_composer' ) => 'bar_red', __( 'Classic Black', 'js_composer' ) => 'bar_black', ) + getVcShared( 'colors-dashed' ) + array( __( 'Custom Color', 'js_composer' ) => 'custom', ), 'description' => __( 'Select single bar background color.', 'js_composer' ), 'admin_label' => true, 'param_holder_class' => 'vc_colored-dropdown', ), array( 'type' => 'colorpicker', 'heading' => __( 'Custom color', 'js_composer' ), 'param_name' => 'customcolor', 'description' => __( 'Select custom single bar background color.', 'js_composer' ), 'dependency' => array( 'element' => 'color', 'value' => array( 'custom' ), ), ), array( 'type' => 'colorpicker', 'heading' => __( 'Custom text color', 'js_composer' ), 'param_name' => 'customtxtcolor', 'description' => __( 'Select custom single bar text color.', 'js_composer' ), 'dependency' => array( 'element' => 'color', 'value' => array( 'custom' ), ), ), ), ), array( 'type' => 'textfield', 'heading' => __( 'Units', 'js_composer' ), 'param_name' => 'units', 'description' => __( 'Enter measurement units (Example: %, px, points, etc. Note: graph value and units will be appended to graph title).', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Color', 'js_composer' ), 'param_name' => 'bgcolor', 'value' => array( __( 'Classic Grey', 'js_composer' ) => 'bar_grey', __( 'Classic Blue', 'js_composer' ) => 'bar_blue', __( 'Classic Turquoise', 'js_composer' ) => 'bar_turquoise', __( 'Classic Green', 'js_composer' ) => 'bar_green', __( 'Classic Orange', 'js_composer' ) => 'bar_orange', __( 'Classic Red', 'js_composer' ) => 'bar_red', __( 'Classic Black', 'js_composer' ) => 'bar_black', ) + getVcShared( 'colors-dashed' ) + array( __( 'Custom Color', 'js_composer' ) => 'custom', ), 'description' => __( 'Select bar background color.', 'js_composer' ), 'admin_label' => true, 'param_holder_class' => 'vc_colored-dropdown', ), array( 'type' => 'colorpicker', 'heading' => __( 'Bar custom background color', 'js_composer' ), 'param_name' => 'custombgcolor', 'description' => __( 'Select custom background color for bars.', 'js_composer' ), 'dependency' => array( 'element' => 'bgcolor', 'value' => array( 'custom' ), ), ), array( 'type' => 'colorpicker', 'heading' => __( 'Bar custom text color', 'js_composer' ), 'param_name' => 'customtxtcolor', 'description' => __( 'Select custom text color for bars.', 'js_composer' ), 'dependency' => array( 'element' => 'bgcolor', 'value' => array( 'custom' ), ), ), array( 'type' => 'checkbox', 'heading' => __( 'Options', 'js_composer' ), 'param_name' => 'options', 'value' => array( __( 'Add stripes', 'js_composer' ) => 'striped', __( 'Add animation (Note: visible only with striped bar).', 'js_composer' ) => 'animated', ), ), vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), ); PK<\y, )config/content/shortcode-vc-separator.phpnu[ __( 'Separator', 'js_composer' ), 'base' => 'vc_separator', 'icon' => 'icon-wpb-ui-separator', 'show_settings_on_create' => true, 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Horizontal separator line', 'js_composer' ), 'params' => array( array( 'type' => 'dropdown', 'heading' => __( 'Color', 'js_composer' ), 'param_name' => 'color', 'value' => array_merge( getVcShared( 'colors' ), array( __( 'Custom color', 'js_composer' ) => 'custom' ) ), 'std' => 'grey', 'description' => __( 'Select color of separator.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown', ), array( 'type' => 'dropdown', 'heading' => __( 'Alignment', 'js_composer' ), 'param_name' => 'align', 'value' => array( __( 'Center', 'js_composer' ) => 'align_center', __( 'Left', 'js_composer' ) => 'align_left', __( 'Right', 'js_composer' ) => 'align_right', ), 'description' => __( 'Select separator alignment.', 'js_composer' ), ), array( 'type' => 'colorpicker', 'heading' => __( 'Custom Border Color', 'js_composer' ), 'param_name' => 'accent_color', 'description' => __( 'Select border color for your element.', 'js_composer' ), 'dependency' => array( 'element' => 'color', 'value' => array( 'custom' ), ), ), array( 'type' => 'dropdown', 'heading' => __( 'Style', 'js_composer' ), 'param_name' => 'style', 'value' => getVcShared( 'separator styles' ), 'description' => __( 'Separator display style.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Border width', 'js_composer' ), 'param_name' => 'border_width', 'value' => getVcShared( 'separator border widths' ), 'description' => __( 'Select border width (pixels).', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Element width', 'js_composer' ), 'param_name' => 'el_width', 'value' => getVcShared( 'separator widths' ), 'description' => __( 'Select separator width (percentage).', 'js_composer' ), ), vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), ); PK<\U3/ / %config/content/shortcode-vc-video.phpnu[ __( 'Video Player', 'js_composer' ), 'base' => 'vc_video', 'icon' => 'icon-wpb-film-youtube', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Embed YouTube/Vimeo player', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Video link', 'js_composer' ), 'param_name' => 'link', 'value' => 'https://vimeo.com/51589652', 'admin_label' => true, 'description' => sprintf( __( 'Enter link to video (Note: read more about available formats at WordPress codex page).', 'js_composer' ), 'http://codex.wordpress.org/Embeds#Okay.2C_So_What_Sites_Can_I_Embed_From.3F' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Video width', 'js_composer' ), 'param_name' => 'el_width', 'value' => array( '100%' => '100', '90%' => '90', '80%' => '80', '70%' => '70', '60%' => '60', '50%' => '50', '40%' => '40', '30%' => '30', '20%' => '20', '10%' => '10', ), 'description' => __( 'Select video width (percentage).', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Video aspect ration', 'js_composer' ), 'param_name' => 'el_aspect', 'value' => array( '16:9' => '169', '4:3' => '43', '2.35:1' => '235', ), 'description' => __( 'Select video aspect ratio.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Alignment', 'js_composer' ), 'param_name' => 'align', 'description' => __( 'Select video alignment.', 'js_composer' ), 'value' => array( __( 'Left', 'js_composer' ) => 'left', __( 'Right', 'js_composer' ) => 'right', __( 'Center', 'js_composer' ) => 'center', ), ), vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), ); PK<\config/content/.content.phpnu[PK<\p##/config/content/shortcode-vc-images-carousel.phpnu[ __( 'Image Carousel', 'js_composer' ), 'base' => 'vc_images_carousel', 'icon' => 'icon-wpb-images-carousel', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Animated carousel with images', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ), ), array( 'type' => 'attach_images', 'heading' => __( 'Images', 'js_composer' ), 'param_name' => 'images', 'value' => '', 'description' => __( 'Select images from media library.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Carousel size', 'js_composer' ), 'param_name' => 'img_size', 'value' => 'thumbnail', 'description' => __( 'Enter image size. Example: thumbnail, medium, large, full or other sizes defined by current theme. Alternatively enter image size in pixels: 200x100 (Width x Height). Leave empty to use "thumbnail" size. If used slides per view, this will be used to define carousel wrapper size.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'On click action', 'js_composer' ), 'param_name' => 'onclick', 'value' => array( __( 'Open prettyPhoto', 'js_composer' ) => 'link_image', __( 'None', 'js_composer' ) => 'link_no', __( 'Open custom links', 'js_composer' ) => 'custom_link', ), 'description' => __( 'Select action for click event.', 'js_composer' ), ), array( 'type' => 'exploded_textarea_safe', 'heading' => __( 'Custom links', 'js_composer' ), 'param_name' => 'custom_links', 'description' => __( 'Enter links for each slide (Note: divide links with linebreaks (Enter)).', 'js_composer' ), 'dependency' => array( 'element' => 'onclick', 'value' => array( 'custom_link' ), ), ), array( 'type' => 'dropdown', 'heading' => __( 'Custom link target', 'js_composer' ), 'param_name' => 'custom_links_target', 'description' => __( 'Select how to open custom links.', 'js_composer' ), 'dependency' => array( 'element' => 'onclick', 'value' => array( 'custom_link' ), ), 'value' => vc_target_param_list(), ), array( 'type' => 'dropdown', 'heading' => __( 'Slider orientation', 'js_composer' ), 'param_name' => 'mode', 'value' => array( __( 'Horizontal', 'js_composer' ) => 'horizontal', __( 'Vertical', 'js_composer' ) => 'vertical', ), 'description' => __( 'Select slider position (Note: this affects swiping orientation).', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Slider speed', 'js_composer' ), 'param_name' => 'speed', 'value' => '5000', 'description' => __( 'Duration of animation between slides (in ms).', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Slides per view', 'js_composer' ), 'param_name' => 'slides_per_view', 'value' => '1', 'description' => __( 'Enter number of slides to display at the same time.', 'js_composer' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Slider autoplay', 'js_composer' ), 'param_name' => 'autoplay', 'description' => __( 'Enable autoplay mode.', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Hide pagination control', 'js_composer' ), 'param_name' => 'hide_pagination_control', 'description' => __( 'If checked, pagination controls will be hidden.', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Hide prev/next buttons', 'js_composer' ), 'param_name' => 'hide_prev_next_buttons', 'description' => __( 'If checked, prev/next buttons will be hidden.', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Partial view', 'js_composer' ), 'param_name' => 'partial_view', 'description' => __( 'If checked, part of the next slide will be visible.', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Slider loop', 'js_composer' ), 'param_name' => 'wrap', 'description' => __( 'Enable slider loop mode.', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), ), vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), ); PK<\fhbaa+config/content/shortcode-vc-round-chart.phpnu[ __( 'Round Chart', 'js_composer' ), 'base' => 'vc_round_chart', 'class' => '', 'icon' => 'icon-wpb-vc-round-chart', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Pie and Doughnut charts', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ), 'admin_label' => true, ), array( 'type' => 'dropdown', 'heading' => __( 'Design', 'js_composer' ), 'param_name' => 'type', 'value' => array( __( 'Pie', 'js_composer' ) => 'pie', __( 'Doughnut', 'js_composer' ) => 'doughnut', ), 'description' => __( 'Select type of chart.', 'js_composer' ), 'admin_label' => true, ), array( 'type' => 'dropdown', 'heading' => __( 'Style', 'js_composer' ), 'description' => __( 'Select chart color style.', 'js_composer' ), 'param_name' => 'style', 'value' => array( __( 'Flat', 'js_composer' ) => 'flat', __( 'Modern', 'js_composer' ) => 'modern', __( 'Custom', 'js_composer' ) => 'custom', ), 'dependency' => array( 'callback' => 'vcChartCustomColorDependency', ), ), array( 'type' => 'dropdown', 'heading' => __( 'Gap', 'js_composer' ), 'param_name' => 'stroke_width', 'value' => array( 0 => 0, 1 => 1, 2 => 2, 5 => 5, ), 'description' => __( 'Select gap size.', 'js_composer' ), 'std' => 2, ), array( 'type' => 'dropdown', 'heading' => __( 'Outline color', 'js_composer' ), 'param_name' => 'stroke_color', 'value' => getVcShared( 'colors-dashed' ) + array( __( 'Custom', 'js_composer' ) => 'custom' ), 'description' => __( 'Select outline color.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown', 'std' => 'white', 'dependency' => array( 'element' => 'stroke_width', 'value_not_equal_to' => '0', ), ), array( 'type' => 'colorpicker', 'heading' => __( 'Custom outline color', 'js_composer' ), 'param_name' => 'custom_stroke_color', 'description' => __( 'Select custom outline color.', 'js_composer' ), 'dependency' => array( 'element' => 'stroke_color', 'value' => array( 'custom' ), ), ), array( 'type' => 'checkbox', 'heading' => __( 'Show legend?', 'js_composer' ), 'param_name' => 'legend', 'description' => __( 'If checked, chart will have legend.', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), 'std' => 'yes', ), array( 'type' => 'checkbox', 'heading' => __( 'Show hover values?', 'js_composer' ), 'param_name' => 'tooltips', 'description' => __( 'If checked, chart will show values on hover.', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), 'std' => 'yes', ), array( 'type' => 'param_group', 'heading' => __( 'Values', 'js_composer' ), 'param_name' => 'values', 'value' => urlencode( json_encode( array( array( 'title' => __( 'One', 'js_composer' ), 'value' => '60', 'color' => 'blue', ), array( 'title' => __( 'Two', 'js_composer' ), 'value' => '40', 'color' => 'pink', ), ) ) ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'Enter title for chart area.', 'js_composer' ), 'admin_label' => true, ), array( 'type' => 'textfield', 'heading' => __( 'Value', 'js_composer' ), 'param_name' => 'value', 'description' => __( 'Enter value for area.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Color', 'js_composer' ), 'param_name' => 'color', 'value' => getVcShared( 'colors-dashed' ), 'description' => __( 'Select area color.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown', ), array( 'type' => 'colorpicker', 'heading' => __( 'Custom color', 'js_composer' ), 'param_name' => 'custom_color', 'description' => __( 'Select custom area color.', 'js_composer' ), ), ), 'callbacks' => array( 'after_add' => 'vcChartParamAfterAddCallback', ), ), array( 'type' => 'dropdown', 'heading' => __( 'Animation', 'js_composer' ), 'description' => __( 'Select animation style.', 'js_composer' ), 'param_name' => 'animation', 'value' => getVcShared( 'animation styles' ), 'std' => 'easeinOutCubic', ), vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), ); PK<\Ⳅ &config/content/shortcode-vc-zigzag.phpnu[ __( 'ZigZag Separator', 'js_composer' ), 'base' => 'vc_zigzag', 'icon' => 'vc_icon-vc-zigzag', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Horizontal zigzag separator line', 'js_composer' ), 'params' => array( array( 'type' => 'dropdown', 'heading' => __( 'Color', 'js_composer' ), 'param_name' => 'color', 'value' => array_merge( getVcShared( 'colors' ), array( __( 'Custom color', 'js_composer' ) => 'custom' ) ), 'std' => 'grey', 'description' => __( 'Select color of separator.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown', ), array( 'type' => 'colorpicker', 'heading' => __( 'Custom Color', 'js_composer' ), 'param_name' => 'custom_color', 'description' => __( 'Select color for your element.', 'js_composer' ), 'dependency' => array( 'element' => 'color', 'value' => array( 'custom' ), ), ), array( 'type' => 'dropdown', 'heading' => __( 'Alignment', 'js_composer' ), 'param_name' => 'align', 'value' => array( __( 'Center', 'js_composer' ) => 'center', __( 'Left', 'js_composer' ) => 'left', __( 'Right', 'js_composer' ) => 'right', ), 'description' => __( 'Select separator alignment.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Element width', 'js_composer' ), 'param_name' => 'el_width', 'value' => array( '100%' => '100', '90%' => '90', '80%' => '80', '70%' => '70', '60%' => '60', '50%' => '50', '40%' => '40', '30%' => '30', '20%' => '20', '10%' => '10', ), 'description' => __( 'Select separator width (percentage).', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Border width', 'js_composer' ), 'param_name' => 'el_border_width', 'std' => '12', 'value' => array( __( 'Extra small', 'js_composer' ) => '8', __( 'Small', 'js_composer' ) => '10', __( 'Medium', 'js_composer' ) => '12', __( 'Large', 'js_composer' ) => '15', __( 'Extra large', 'js_composer' ) => '20', ), 'description' => __( 'Select separator border width.', 'js_composer' ), ), vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), ); PK<\@II,config/content/shortcode-vc-posts-slider.phpnu[ __( 'Posts Slider', 'js_composer' ), 'base' => 'vc_posts_slider', 'icon' => 'icon-wpb-slideshow', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Slider with WP Posts', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Slider type', 'js_composer' ), 'param_name' => 'type', 'admin_label' => true, 'value' => array( __( 'Flex slider fade', 'js_composer' ) => 'flexslider_fade', __( 'Flex slider slide', 'js_composer' ) => 'flexslider_slide', __( 'Nivo slider', 'js_composer' ) => 'nivo', ), 'description' => __( 'Select slider type.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Slider count', 'js_composer' ), 'param_name' => 'count', 'value' => 3, 'description' => __( 'Enter number of slides to display (Note: Enter "All" to display all slides).', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Auto rotate', 'js_composer' ), 'param_name' => 'interval', 'value' => array( 3, 5, 10, 15, __( 'Disable', 'js_composer' ) => 0, ), 'description' => __( 'Auto rotate slides each X seconds.', 'js_composer' ), ), array( 'type' => 'posttypes', 'heading' => __( 'Post types', 'js_composer' ), 'param_name' => 'posttypes', 'description' => __( 'Select source for slider.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Description', 'js_composer' ), 'param_name' => 'slides_content', 'value' => array( __( 'No description', 'js_composer' ) => '', __( 'Teaser (Excerpt)', 'js_composer' ) => 'teaser', ), 'description' => __( 'Select source to use for description (Note: some sliders do not support it).', 'js_composer' ), 'dependency' => array( 'element' => 'type', 'value' => array( 'flexslider_fade', 'flexslider_slide', ), ), ), array( 'type' => 'checkbox', 'heading' => __( 'Output post title?', 'js_composer' ), 'param_name' => 'slides_title', 'description' => __( 'If selected, title will be printed before the teaser text.', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => true ), 'dependency' => array( 'element' => 'slides_content', 'value' => array( 'teaser' ), ), ), array( 'type' => 'dropdown', 'heading' => __( 'Link', 'js_composer' ), 'param_name' => 'link', 'value' => array( __( 'Link to post', 'js_composer' ) => 'link_post', __( 'Link to bigger image', 'js_composer' ) => 'link_image', __( 'Open custom links', 'js_composer' ) => 'custom_link', __( 'No link', 'js_composer' ) => 'link_no', ), 'description' => __( 'Link type.', 'js_composer' ), ), array( 'type' => 'exploded_textarea_safe', 'heading' => __( 'Custom links', 'js_composer' ), 'param_name' => 'custom_links', 'value' => site_url() . '/', 'dependency' => array( 'element' => 'link', 'value' => 'custom_link', ), 'description' => __( 'Enter links for each slide here. Divide links with linebreaks (Enter).', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Thumbnail size', 'js_composer' ), 'param_name' => 'thumb_size', 'value' => 'medium', 'description' => __( 'Enter thumbnail size. Example: thumbnail, medium, large, full or other sizes defined by current theme. Alternatively enter image size in pixels: 200x100 (Width x Height) . ', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Post/Page IDs', 'js_composer' ), 'param_name' => 'posts_in', 'description' => __( 'Enter page/posts IDs to display only those records (Note: separate values by commas (,)). Use this field in conjunction with "Post types" field.', 'js_composer' ), ), array( 'type' => 'exploded_textarea_safe', 'heading' => __( 'Categories', 'js_composer' ), 'param_name' => 'categories', 'description' => __( 'Enter categories by names to narrow output (Note: only listed categories will be displayed, divide categories with linebreak (Enter)).', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Order by', 'js_composer' ), 'param_name' => 'orderby', 'value' => array( '', __( 'Date', 'js_composer' ) => 'date', __( 'ID', 'js_composer' ) => 'ID', __( 'Author', 'js_composer' ) => 'author', __( 'Title', 'js_composer' ) => 'title', __( 'Modified', 'js_composer' ) => 'modified', __( 'Random', 'js_composer' ) => 'rand', __( 'Comment count', 'js_composer' ) => 'comment_count', __( 'Menu order', 'js_composer' ) => 'menu_order', ), 'description' => sprintf( __( 'Select how to sort retrieved posts. More at %s.', 'js_composer' ), 'WordPress codex page' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Sort order', 'js_composer' ), 'param_name' => 'order', 'value' => array( __( 'Descending', 'js_composer' ) => 'DESC', __( 'Ascending', 'js_composer' ) => 'ASC', ), 'description' => sprintf( __( 'Select ascending or descending order. More at %s.', 'js_composer' ), 'WordPress codex page' ), ), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), ); PK<\7x.y) ) &config/content/shortcode-vc-flickr.phpnu[ 'vc_flickr', 'name' => __( 'Flickr Widget', 'js_composer' ), 'icon' => 'icon-wpb-flickr', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Image feed from Flickr account', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Flickr ID', 'js_composer' ), 'param_name' => 'flickr_id', 'value' => '95572727@N00', 'admin_label' => true, 'description' => sprintf( __( 'To find your flickID visit %s.', 'js_composer' ), 'idGettr' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Number of photos', 'js_composer' ), 'param_name' => 'count', 'value' => array( 9, 8, 7, 6, 5, 4, 3, 2, 1, ), 'description' => __( 'Select number of photos to display.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Type', 'js_composer' ), 'param_name' => 'type', 'value' => array( __( 'User', 'js_composer' ) => 'user', __( 'Group', 'js_composer' ) => 'group', ), 'description' => __( 'Select photo stream type.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Display order', 'js_composer' ), 'param_name' => 'display', 'value' => array( __( 'Latest first', 'js_composer' ) => 'latest', __( 'Random', 'js_composer' ) => 'random', ), 'description' => __( 'Select photo display order.', 'js_composer' ), ), vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), ); PK<\lT'config/content/shortcode-vc-gallery.phpnu[ __( 'Image Gallery', 'js_composer' ), 'base' => 'vc_gallery', 'icon' => 'icon-wpb-images-stack', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Responsive image gallery', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Gallery type', 'js_composer' ), 'param_name' => 'type', 'value' => array( __( 'Flex slider fade', 'js_composer' ) => 'flexslider_fade', __( 'Flex slider slide', 'js_composer' ) => 'flexslider_slide', __( 'Nivo slider', 'js_composer' ) => 'nivo', __( 'Image grid', 'js_composer' ) => 'image_grid', ), 'description' => __( 'Select gallery type.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Auto rotate', 'js_composer' ), 'param_name' => 'interval', 'value' => array( 3, 5, 10, 15, __( 'Disable', 'js_composer' ) => 0, ), 'description' => __( 'Auto rotate slides each X seconds.', 'js_composer' ), 'dependency' => array( 'element' => 'type', 'value' => array( 'flexslider_fade', 'flexslider_slide', 'nivo', ), ), ), array( 'type' => 'dropdown', 'heading' => __( 'Image source', 'js_composer' ), 'param_name' => 'source', 'value' => array( __( 'Media library', 'js_composer' ) => 'media_library', __( 'External links', 'js_composer' ) => 'external_link', ), 'std' => 'media_library', 'description' => __( 'Select image source.', 'js_composer' ), ), array( 'type' => 'attach_images', 'heading' => __( 'Images', 'js_composer' ), 'param_name' => 'images', 'value' => '', 'description' => __( 'Select images from media library.', 'js_composer' ), 'dependency' => array( 'element' => 'source', 'value' => 'media_library', ), ), array( 'type' => 'exploded_textarea_safe', 'heading' => __( 'External links', 'js_composer' ), 'param_name' => 'custom_srcs', 'description' => __( 'Enter external link for each gallery image (Note: divide links with linebreaks (Enter)).', 'js_composer' ), 'dependency' => array( 'element' => 'source', 'value' => 'external_link', ), ), array( 'type' => 'textfield', 'heading' => __( 'Image size', 'js_composer' ), 'param_name' => 'img_size', 'value' => 'thumbnail', 'description' => __( 'Enter image size. Example: thumbnail, medium, large, full or other sizes defined by current theme. Alternatively enter image size in pixels: 200x100 (Width x Height). Leave empty to use "thumbnail" size.', 'js_composer' ), 'dependency' => array( 'element' => 'source', 'value' => 'media_library', ), ), array( 'type' => 'textfield', 'heading' => __( 'Image size', 'js_composer' ), 'param_name' => 'external_img_size', 'value' => '', 'description' => __( 'Enter image size in pixels. Example: 200x100 (Width x Height).', 'js_composer' ), 'dependency' => array( 'element' => 'source', 'value' => 'external_link', ), ), array( 'type' => 'dropdown', 'heading' => __( 'On click action', 'js_composer' ), 'param_name' => 'onclick', 'value' => array( __( 'None', 'js_composer' ) => '', __( 'Link to large image', 'js_composer' ) => 'img_link_large', __( 'Open prettyPhoto', 'js_composer' ) => 'link_image', __( 'Open custom link', 'js_composer' ) => 'custom_link', ), 'description' => __( 'Select action for click action.', 'js_composer' ), 'std' => 'link_image', ), array( 'type' => 'exploded_textarea_safe', 'heading' => __( 'Custom links', 'js_composer' ), 'param_name' => 'custom_links', 'description' => __( 'Enter links for each slide (Note: divide links with linebreaks (Enter)).', 'js_composer' ), 'dependency' => array( 'element' => 'onclick', 'value' => array( 'custom_link' ), ), ), array( 'type' => 'dropdown', 'heading' => __( 'Custom link target', 'js_composer' ), 'param_name' => 'custom_links_target', 'description' => __( 'Select where to open custom links.', 'js_composer' ), 'dependency' => array( 'element' => 'onclick', 'value' => array( 'custom_link', 'img_link_large', ), ), 'value' => vc_target_param_list(), ), vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), ); PK<\!u.config/content/shortcode-vc-custom-heading.phpnu[ 'info', __( 'Warning', 'js_composer' ) => 'warning', __( 'Success', 'js_composer' ) => 'success', __( 'Error', 'js_composer' ) => 'danger', __( 'Informational Classic', 'js_composer' ) => 'alert-info', __( 'Warning Classic', 'js_composer' ) => 'alert-warning', __( 'Success Classic', 'js_composer' ) => 'alert-success', __( 'Error Classic', 'js_composer' ) => 'alert-danger', ); return array( 'name' => __( 'Message Box', 'js_composer' ), 'base' => 'vc_message', 'icon' => 'icon-wpb-information-white', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Notification box', 'js_composer' ), 'params' => array( array( 'type' => 'params_preset', 'heading' => __( 'Message Box Presets', 'js_composer' ), 'param_name' => 'color', // due to backward compatibility, really it is message_box_type 'value' => '', 'options' => array( array( 'label' => __( 'Custom', 'js_composer' ), 'value' => '', 'params' => array(), ), array( 'label' => __( 'Informational', 'js_composer' ), 'value' => 'info', 'params' => array( 'message_box_color' => 'info', 'icon_type' => 'fontawesome', 'icon_fontawesome' => 'fa fa-info-circle', ), ), array( 'label' => __( 'Warning', 'js_composer' ), 'value' => 'warning', 'params' => array( 'message_box_color' => 'warning', 'icon_type' => 'fontawesome', 'icon_fontawesome' => 'fa fa-exclamation-triangle', ), ), array( 'label' => __( 'Success', 'js_composer' ), 'value' => 'success', 'params' => array( 'message_box_color' => 'success', 'icon_type' => 'fontawesome', 'icon_fontawesome' => 'fa fa-check', ), ), array( 'label' => __( 'Error', 'js_composer' ), 'value' => 'danger', 'params' => array( 'message_box_color' => 'danger', 'icon_type' => 'fontawesome', 'icon_fontawesome' => 'fa fa-times', ), ), array( 'label' => __( 'Informational Classic', 'js_composer' ), 'value' => 'alert-info', // due to backward compatibility 'params' => array( 'message_box_color' => 'alert-info', 'icon_type' => 'pixelicons', 'icon_pixelicons' => 'vc_pixel_icon vc_pixel_icon-info', ), ), array( 'label' => __( 'Warning Classic', 'js_composer' ), 'value' => 'alert-warning', // due to backward compatibility 'params' => array( 'message_box_color' => 'alert-warning', 'icon_type' => 'pixelicons', 'icon_pixelicons' => 'vc_pixel_icon vc_pixel_icon-alert', ), ), array( 'label' => __( 'Success Classic', 'js_composer' ), 'value' => 'alert-success', // due to backward compatibility 'params' => array( 'message_box_color' => 'alert-success', 'icon_type' => 'pixelicons', 'icon_pixelicons' => 'vc_pixel_icon vc_pixel_icon-tick', ), ), array( 'label' => __( 'Error Classic', 'js_composer' ), 'value' => 'alert-danger', // due to backward compatibility 'params' => array( 'message_box_color' => 'alert-danger', 'icon_type' => 'pixelicons', 'icon_pixelicons' => 'vc_pixel_icon vc_pixel_icon-explanation', ), ), ), 'description' => __( 'Select predefined message box design or choose "Custom" for custom styling.', 'js_composer' ), 'param_holder_class' => 'vc_message-type vc_colored-dropdown', ), array( 'type' => 'dropdown', 'heading' => __( 'Style', 'js_composer' ), 'param_name' => 'message_box_style', 'value' => getVcShared( 'message_box_styles' ), 'description' => __( 'Select message box design style.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Shape', 'js_composer' ), 'param_name' => 'style', // due to backward compatibility message_box_shape 'std' => 'rounded', 'value' => array( __( 'Square', 'js_composer' ) => 'square', __( 'Rounded', 'js_composer' ) => 'rounded', __( 'Round', 'js_composer' ) => 'round', ), 'description' => __( 'Select message box shape.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Color', 'js_composer' ), 'param_name' => 'message_box_color', 'value' => $custom_colors + getVcShared( 'colors' ), 'description' => __( 'Select message box color.', 'js_composer' ), 'param_holder_class' => 'vc_message-type vc_colored-dropdown', ), array( 'type' => 'dropdown', 'heading' => __( 'Icon library', 'js_composer' ), 'value' => array( __( 'Font Awesome', 'js_composer' ) => 'fontawesome', __( 'Open Iconic', 'js_composer' ) => 'openiconic', __( 'Typicons', 'js_composer' ) => 'typicons', __( 'Entypo', 'js_composer' ) => 'entypo', __( 'Linecons', 'js_composer' ) => 'linecons', __( 'Pixel', 'js_composer' ) => 'pixelicons', __( 'Mono Social', 'js_composer' ) => 'monosocial', ), 'param_name' => 'icon_type', 'description' => __( 'Select icon library.', 'js_composer' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'js_composer' ), 'param_name' => 'icon_fontawesome', 'value' => 'fa fa-info-circle', 'settings' => array( 'emptyIcon' => false, // default true, display an "EMPTY" icon? 'iconsPerPage' => 4000, // default 100, how many icons per/page to display ), 'dependency' => array( 'element' => 'icon_type', 'value' => 'fontawesome', ), 'description' => __( 'Select icon from library.', 'js_composer' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'js_composer' ), 'param_name' => 'icon_openiconic', 'settings' => array( 'emptyIcon' => false, // default true, display an "EMPTY" icon? 'type' => 'openiconic', 'iconsPerPage' => 4000, // default 100, how many icons per/page to display ), 'dependency' => array( 'element' => 'icon_type', 'value' => 'openiconic', ), 'description' => __( 'Select icon from library.', 'js_composer' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'js_composer' ), 'param_name' => 'icon_typicons', 'settings' => array( 'emptyIcon' => false, // default true, display an "EMPTY" icon? 'type' => 'typicons', 'iconsPerPage' => 4000, // default 100, how many icons per/page to display ), 'dependency' => array( 'element' => 'icon_type', 'value' => 'typicons', ), 'description' => __( 'Select icon from library.', 'js_composer' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'js_composer' ), 'param_name' => 'icon_entypo', 'settings' => array( 'emptyIcon' => false, // default true, display an "EMPTY" icon? 'type' => 'entypo', 'iconsPerPage' => 4000, // default 100, how many icons per/page to display ), 'dependency' => array( 'element' => 'icon_type', 'value' => 'entypo', ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'js_composer' ), 'param_name' => 'icon_linecons', 'settings' => array( 'emptyIcon' => false, // default true, display an "EMPTY" icon? 'type' => 'linecons', 'iconsPerPage' => 4000, // default 100, how many icons per/page to display ), 'dependency' => array( 'element' => 'icon_type', 'value' => 'linecons', ), 'description' => __( 'Select icon from library.', 'js_composer' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'js_composer' ), 'param_name' => 'icon_pixelicons', 'settings' => array( 'emptyIcon' => false, // default true, display an "EMPTY" icon? 'type' => 'pixelicons', 'source' => $pixel_icons, ), 'dependency' => array( 'element' => 'icon_type', 'value' => 'pixelicons', ), 'description' => __( 'Select icon from library.', 'js_composer' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'js_composer' ), 'param_name' => 'icon_monosocial', 'value' => 'vc-mono vc-mono-fivehundredpx', // default value to backend editor admin_label 'settings' => array( 'emptyIcon' => false, // default true, display an "EMPTY" icon? 'type' => 'monosocial', 'iconsPerPage' => 4000, // default 100, how many icons per/page to display ), 'dependency' => array( 'element' => 'icon_type', 'value' => 'monosocial', ), 'description' => __( 'Select icon from library.', 'js_composer' ), ), array( 'type' => 'textarea_html', 'holder' => 'div', 'class' => 'messagebox_text', 'heading' => __( 'Message text', 'js_composer' ), 'param_name' => 'content', 'value' => __( '

I am message box. Click edit button to change this text.

', 'js_composer' ), ), vc_map_add_css_animation( false ), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), 'js_view' => 'VcMessageView_Backend', ); PK<\*=>##(config/content/shortcode-vc-hoverbox.phpnu[ array( 'source', 'text', 'css', ), ), array( 'element' => 'use_custom_fonts_primary_title', 'value' => 'true', ) ); // This is needed to remove custom heading _tag and _align options. if ( is_array( $h2_custom_heading ) && ! empty( $h2_custom_heading ) ) { foreach ( $h2_custom_heading as $key => $param ) { if ( is_array( $param ) && isset( $param['type'] ) && 'font_container' === $param['type'] ) { $h2_custom_heading[ $key ]['value'] = ''; if ( isset( $param['settings'] ) && is_array( $param['settings'] ) && isset( $param['settings']['fields'] ) ) { $sub_key = array_search( 'tag', $param['settings']['fields'] ); if ( false !== $sub_key ) { unset( $h2_custom_heading[ $key ]['settings']['fields'][ $sub_key ] ); } elseif ( isset( $param['settings']['fields']['tag'] ) ) { unset( $h2_custom_heading[ $key ]['settings']['fields']['tag'] ); } $sub_key = array_search( 'text_align', $param['settings']['fields'] ); if ( false !== $sub_key ) { unset( $h2_custom_heading[ $key ]['settings']['fields'][ $sub_key ] ); } elseif ( isset( $param['settings']['fields']['text_align'] ) ) { unset( $h2_custom_heading[ $key ]['settings']['fields']['text_align'] ); } } } } } $h4_custom_heading = vc_map_integrate_shortcode( vc_custom_heading_element_params(), 'hover_title_', __( 'Hover Title', 'js_composer' ), array( 'exclude' => array( 'source', 'text', 'css', ), ), array( 'element' => 'use_custom_fonts_hover_title', 'value' => 'true', ) ); // This is needed to remove custom heading _tag and _align options. if ( is_array( $h4_custom_heading ) && ! empty( $h4_custom_heading ) ) { foreach ( $h4_custom_heading as $key => $param ) { if ( is_array( $param ) && isset( $param['type'] ) && 'font_container' === $param['type'] ) { $h4_custom_heading[ $key ]['value'] = ''; if ( isset( $param['settings'] ) && is_array( $param['settings'] ) && isset( $param['settings']['fields'] ) ) { $sub_key = array_search( 'tag', $param['settings']['fields'] ); if ( false !== $sub_key ) { unset( $h4_custom_heading[ $key ]['settings']['fields'][ $sub_key ] ); } elseif ( isset( $param['settings']['fields']['tag'] ) ) { unset( $h4_custom_heading[ $key ]['settings']['fields']['tag'] ); } $sub_key = array_search( 'text_align', $param['settings']['fields'] ); if ( false !== $sub_key ) { unset( $h4_custom_heading[ $key ]['settings']['fields'][ $sub_key ] ); } elseif ( isset( $param['settings']['fields']['text_align'] ) ) { unset( $h4_custom_heading[ $key ]['settings']['fields']['text_align'] ); } } } } } $params = array_merge( array( array( 'type' => 'attach_image', 'heading' => __( 'Image', 'js_composer' ), 'param_name' => 'image', 'value' => '', 'description' => __( 'Select image from media library.', 'js_composer' ), 'admin_label' => true, ), array( 'type' => 'textfield', 'heading' => __( 'Primary title', 'js_composer' ), 'admin_label' => true, 'param_name' => 'primary_title', 'value' => __( 'Hover Box Element', 'js_composer' ), 'description' => __( 'Enter text for heading line.', 'js_composer' ), 'edit_field_class' => 'vc_col-sm-9', ), array( 'type' => 'checkbox', 'heading' => __( 'Use custom font?', 'js_composer' ), 'param_name' => 'use_custom_fonts_primary_title', 'description' => __( 'Enable Google fonts.', 'js_composer' ), 'edit_field_class' => 'vc_col-sm-3', ), array( 'type' => 'dropdown', 'heading' => __( 'Primary title alignment', 'js_composer' ), 'param_name' => 'primary_align', 'value' => getVcShared( 'text align' ), 'std' => 'center', 'description' => __( 'Select text alignment for primary title.', 'js_composer' ), ), ), $h2_custom_heading, array( array( 'type' => 'textfield', 'heading' => __( 'Hover title', 'js_composer' ), 'param_name' => 'hover_title', 'value' => 'Hover Box Element', 'description' => __( 'Hover Box Element', 'js_composer' ), 'group' => __( 'Hover Block', 'js_composer' ), 'edit_field_class' => 'vc_col-sm-9', ), array( 'type' => 'checkbox', 'heading' => __( 'Use custom font?', 'js_composer' ), 'param_name' => 'use_custom_fonts_hover_title', 'description' => __( 'Enable custom font option.', 'js_composer' ), 'group' => __( 'Hover Block', 'js_composer' ), 'edit_field_class' => 'vc_col-sm-3', ), array( 'type' => 'dropdown', 'heading' => __( 'Hover title alignment', 'js_composer' ), 'param_name' => 'hover_align', 'value' => getVcShared( 'text align' ), 'std' => 'center', 'group' => __( 'Hover Block', 'js_composer' ), 'description' => __( 'Select text alignment for hovered title.', 'js_composer' ), ), array( 'type' => 'textarea_html', 'heading' => __( 'Hover text', 'js_composer' ), 'param_name' => 'content', 'value' => __( 'Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.', 'js_composer' ), 'group' => __( 'Hover Block', 'js_composer' ), 'description' => __( 'Hover part text.', 'js_composer' ), ), ), $h4_custom_heading, array( array( 'type' => 'dropdown', 'heading' => __( 'Shape', 'js_composer' ), 'param_name' => 'shape', 'std' => 'rounded', 'value' => array( __( 'Square', 'js_composer' ) => 'square', __( 'Rounded', 'js_composer' ) => 'rounded', __( 'Round', 'js_composer' ) => 'round', ), 'description' => __( 'Select block shape.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Background Color', 'js_composer' ), 'param_name' => 'hover_background_color', 'value' => getVcShared( 'colors-dashed' ) + array( __( 'Custom', 'js_composer' ) => 'custom' ), 'description' => __( 'Select color schema.', 'js_composer' ), 'std' => 'grey', 'group' => __( 'Hover Block', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown vc_cta3-colored-dropdown', ), array( 'type' => 'colorpicker', 'heading' => __( 'Background color', 'js_composer' ), 'param_name' => 'hover_custom_background', 'description' => __( 'Select custom background color.', 'js_composer' ), 'group' => __( 'Hover Block', 'js_composer' ), 'dependency' => array( 'element' => 'hover_background_color', 'value' => array( 'custom' ), ), 'edit_field_class' => 'vc_col-sm-6', ), array( 'type' => 'dropdown', 'heading' => __( 'Width', 'js_composer' ), 'param_name' => 'el_width', 'value' => array( '100%' => '100', '90%' => '90', '80%' => '80', '70%' => '70', '60%' => '60', '50%' => '50', '40%' => '40', '30%' => '30', '20%' => '20', '10%' => '10', ), 'description' => __( 'Select block width (percentage).', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Alignment', 'js_composer' ), 'param_name' => 'align', 'description' => __( 'Select block alignment.', 'js_composer' ), 'value' => array( __( 'Left', 'js_composer' ) => 'left', __( 'Right', 'js_composer' ) => 'right', __( 'Center', 'js_composer' ) => 'center', ), 'std' => 'center', ), array( 'type' => 'checkbox', 'heading' => __( 'Add button', 'js_composer' ) . '?', 'description' => __( 'Add button for call to action.', 'js_composer' ), 'group' => __( 'Hover Block', 'js_composer' ), 'param_name' => 'hover_add_button', ), array( 'type' => 'checkbox', 'heading' => __( 'Reverse blocks', 'js_composer' ), 'param_name' => 'reverse', 'description' => __( 'Reverse hover and primary block.', 'js_composer' ), ), ), vc_map_integrate_shortcode( 'vc_btn', 'hover_btn_', __( 'Hover Button', 'js_composer' ), array( 'exclude' => array( 'css' ), ), array( 'element' => 'hover_add_button', 'not_empty' => true, ) ), array( vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ) ); return array( 'name' => __( 'Hover Box', 'js_composer' ), 'base' => 'vc_cta', 'icon' => 'vc_icon-vc-hoverbox', 'category' => array( __( 'Content', 'js_composer' ) ), 'description' => __( 'Animated flip box with image and text', 'js_composer' ), 'params' => $params, ); PK<\7l %config/content/shortcode-vc-gmaps.phpnu[ __( 'Google Maps', 'js_composer' ), 'base' => 'vc_gmaps', 'icon' => 'icon-wpb-map-pin', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Map block', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ), ), array( 'type' => 'textarea_safe', 'heading' => __( 'Map embed iframe', 'js_composer' ), 'param_name' => 'link', 'value' => '', 'description' => sprintf( __( 'Visit %s to create your map (Step by step: 1) Find location 2) Click the cog symbol in the lower right corner and select "Share or embed map" 3) On modal window select "Embed map" 4) Copy iframe code and paste it).' ), '' . __( 'Google maps', 'js_composer' ) . '' ), ), array( 'type' => 'textfield', 'heading' => __( 'Map height', 'js_composer' ), 'param_name' => 'size', 'value' => 'standard', 'admin_label' => true, 'description' => __( 'Enter map height (in pixels or leave empty for responsive map).', 'js_composer' ), ), vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), ); PK<\!config/containers/.containers.phpnu[PK<\W /config/containers/shortcode-vc-column-inner.phpnu[ __( 'Inner Column', 'js_composer' ), 'base' => 'vc_column_inner', 'icon' => 'icon-wpb-row', 'class' => '', 'wrapper_class' => '', 'controls' => 'full', 'allowed_container_element' => false, 'content_element' => false, 'is_container' => true, 'description' => __( 'Place content elements inside the inner column', 'js_composer' ), 'params' => array( array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'value' => '', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Width', 'js_composer' ), 'param_name' => 'width', 'value' => array( __( '1 column - 1/12', 'js_composer' ) => '1/12', __( '2 columns - 1/6', 'js_composer' ) => '1/6', __( '3 columns - 1/4', 'js_composer' ) => '1/4', __( '4 columns - 1/3', 'js_composer' ) => '1/3', __( '5 columns - 5/12', 'js_composer' ) => '5/12', __( '6 columns - 1/2', 'js_composer' ) => '1/2', __( '7 columns - 7/12', 'js_composer' ) => '7/12', __( '8 columns - 2/3', 'js_composer' ) => '2/3', __( '9 columns - 3/4', 'js_composer' ) => '3/4', __( '10 columns - 5/6', 'js_composer' ) => '5/6', __( '11 columns - 11/12', 'js_composer' ) => '11/12', __( '12 columns - 1/1', 'js_composer' ) => '1/1', ), 'group' => __( 'Responsive Options', 'js_composer' ), 'description' => __( 'Select column width.', 'js_composer' ), 'std' => '1/1', ), array( 'type' => 'column_offset', 'heading' => __( 'Responsiveness', 'js_composer' ), 'param_name' => 'offset', 'group' => __( 'Responsive Options', 'js_composer' ), 'description' => __( 'Adjust column for different screen sizes. Control width, offset and visibility settings.', 'js_composer' ), ), ), 'js_view' => 'VcColumnView', ); PK<\g&config/containers/shortcode-vc-row.phpnu[ __( 'Row', 'js_composer' ), 'is_container' => true, 'icon' => 'icon-wpb-row', 'show_settings_on_create' => false, 'category' => __( 'Content', 'js_composer' ), 'class' => 'vc_main-sortable-element', 'description' => __( 'Place content elements inside the row', 'js_composer' ), 'params' => array( array( 'type' => 'dropdown', 'heading' => __( 'Row stretch', 'js_composer' ), 'param_name' => 'full_width', 'value' => array( __( 'Default', 'js_composer' ) => '', __( 'Stretch row', 'js_composer' ) => 'stretch_row', __( 'Stretch row and content', 'js_composer' ) => 'stretch_row_content', __( 'Stretch row and content (no paddings)', 'js_composer' ) => 'stretch_row_content_no_spaces', ), 'description' => __( 'Select stretching options for row and content (Note: stretched may not work properly if parent container has "overflow: hidden" CSS property).', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Columns gap', 'js_composer' ), 'param_name' => 'gap', 'value' => array( '0px' => '0', '1px' => '1', '2px' => '2', '3px' => '3', '4px' => '4', '5px' => '5', '10px' => '10', '15px' => '15', '20px' => '20', '25px' => '25', '30px' => '30', '35px' => '35', ), 'std' => '0', 'description' => __( 'Select gap between columns in row.', 'js_composer' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Full height row?', 'js_composer' ), 'param_name' => 'full_height', 'description' => __( 'If checked row will be set to full height.', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Columns position', 'js_composer' ), 'param_name' => 'columns_placement', 'value' => array( __( 'Middle', 'js_composer' ) => 'middle', __( 'Top', 'js_composer' ) => 'top', __( 'Bottom', 'js_composer' ) => 'bottom', __( 'Stretch', 'js_composer' ) => 'stretch', ), 'description' => __( 'Select columns position within row.', 'js_composer' ), 'dependency' => array( 'element' => 'full_height', 'not_empty' => true, ), ), array( 'type' => 'checkbox', 'heading' => __( 'Equal height', 'js_composer' ), 'param_name' => 'equal_height', 'description' => __( 'If checked columns will be set to equal height.', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Content position', 'js_composer' ), 'param_name' => 'content_placement', 'value' => array( __( 'Default', 'js_composer' ) => '', __( 'Top', 'js_composer' ) => 'top', __( 'Middle', 'js_composer' ) => 'middle', __( 'Bottom', 'js_composer' ) => 'bottom', ), 'description' => __( 'Select content position within columns.', 'js_composer' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Use video background?', 'js_composer' ), 'param_name' => 'video_bg', 'description' => __( 'If checked, video will be used as row background.', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), ), array( 'type' => 'textfield', 'heading' => __( 'YouTube link', 'js_composer' ), 'param_name' => 'video_bg_url', 'value' => 'https://www.youtube.com/watch?v=lMJXxhRFO1k', // default video url 'description' => __( 'Add YouTube link.', 'js_composer' ), 'dependency' => array( 'element' => 'video_bg', 'not_empty' => true, ), ), array( 'type' => 'dropdown', 'heading' => __( 'Parallax', 'js_composer' ), 'param_name' => 'video_bg_parallax', 'value' => array( __( 'None', 'js_composer' ) => '', __( 'Simple', 'js_composer' ) => 'content-moving', __( 'With fade', 'js_composer' ) => 'content-moving-fade', ), 'description' => __( 'Add parallax type background for row.', 'js_composer' ), 'dependency' => array( 'element' => 'video_bg', 'not_empty' => true, ), ), array( 'type' => 'dropdown', 'heading' => __( 'Parallax', 'js_composer' ), 'param_name' => 'parallax', 'value' => array( __( 'None', 'js_composer' ) => '', __( 'Simple', 'js_composer' ) => 'content-moving', __( 'With fade', 'js_composer' ) => 'content-moving-fade', ), 'description' => __( 'Add parallax type background for row (Note: If no image is specified, parallax will use background image from Design Options).', 'js_composer' ), 'dependency' => array( 'element' => 'video_bg', 'is_empty' => true, ), ), array( 'type' => 'attach_image', 'heading' => __( 'Image', 'js_composer' ), 'param_name' => 'parallax_image', 'value' => '', 'description' => __( 'Select image from media library.', 'js_composer' ), 'dependency' => array( 'element' => 'parallax', 'not_empty' => true, ), ), array( 'type' => 'textfield', 'heading' => __( 'Parallax speed', 'js_composer' ), 'param_name' => 'parallax_speed_video', 'value' => '1.5', 'description' => __( 'Enter parallax speed ratio (Note: Default value is 1.5, min value is 1)', 'js_composer' ), 'dependency' => array( 'element' => 'video_bg_parallax', 'not_empty' => true, ), ), array( 'type' => 'textfield', 'heading' => __( 'Parallax speed', 'js_composer' ), 'param_name' => 'parallax_speed_bg', 'value' => '1.5', 'description' => __( 'Enter parallax speed ratio (Note: Default value is 1.5, min value is 1)', 'js_composer' ), 'dependency' => array( 'element' => 'parallax', 'not_empty' => true, ), ), vc_map_add_css_animation( false ), array( 'type' => 'el_id', 'heading' => __( 'Row ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter row ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Disable row', 'js_composer' ), 'param_name' => 'disable_element', // Inner param name. 'description' => __( 'If checked the row won\'t be visible on the public side of your website. You can switch it back any time.', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), 'js_view' => 'VcRowView', ); PK<\ܹ88*config/containers/shortcode-vc-section.phpnu[ __( 'Section', 'js_composer' ), 'is_container' => true, 'icon' => 'vc_icon-vc-section', 'show_settings_on_create' => false, 'category' => __( 'Content', 'js_composer' ), 'as_parent' => array( 'only' => 'vc_row', ), 'as_child' => array( 'only' => '', // Only root ), 'class' => 'vc_main-sortable-element', 'description' => __( 'Group multiple rows in section', 'js_composer' ), 'params' => array( array( 'type' => 'dropdown', 'heading' => __( 'Section stretch', 'js_composer' ), 'param_name' => 'full_width', 'value' => array( __( 'Default', 'js_composer' ) => '', __( 'Stretch section', 'js_composer' ) => 'stretch_row', __( 'Stretch section and content', 'js_composer' ) => 'stretch_row_content', ), 'description' => __( 'Select stretching options for section and content (Note: stretched may not work properly if parent container has "overflow: hidden" CSS property).', 'js_composer' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Full height section?', 'js_composer' ), 'param_name' => 'full_height', 'description' => __( 'If checked section will be set to full height.', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Content position', 'js_composer' ), 'param_name' => 'content_placement', 'value' => array( __( 'Default', 'js_composer' ) => '', __( 'Top', 'js_composer' ) => 'top', __( 'Middle', 'js_composer' ) => 'middle', __( 'Bottom', 'js_composer' ) => 'bottom', ), 'description' => __( 'Select content position within section.', 'js_composer' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Use video background?', 'js_composer' ), 'param_name' => 'video_bg', 'description' => __( 'If checked, video will be used as section background.', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), ), array( 'type' => 'textfield', 'heading' => __( 'YouTube link', 'js_composer' ), 'param_name' => 'video_bg_url', 'value' => 'https://www.youtube.com/watch?v=lMJXxhRFO1k', // default video url 'description' => __( 'Add YouTube link.', 'js_composer' ), 'dependency' => array( 'element' => 'video_bg', 'not_empty' => true, ), ), array( 'type' => 'dropdown', 'heading' => __( 'Parallax', 'js_composer' ), 'param_name' => 'video_bg_parallax', 'value' => array( __( 'None', 'js_composer' ) => '', __( 'Simple', 'js_composer' ) => 'content-moving', __( 'With fade', 'js_composer' ) => 'content-moving-fade', ), 'description' => __( 'Add parallax type background for section.', 'js_composer' ), 'dependency' => array( 'element' => 'video_bg', 'not_empty' => true, ), ), array( 'type' => 'dropdown', 'heading' => __( 'Parallax', 'js_composer' ), 'param_name' => 'parallax', 'value' => array( __( 'None', 'js_composer' ) => '', __( 'Simple', 'js_composer' ) => 'content-moving', __( 'With fade', 'js_composer' ) => 'content-moving-fade', ), 'description' => __( 'Add parallax type background for section (Note: If no image is specified, parallax will use background image from Design Options).', 'js_composer' ), 'dependency' => array( 'element' => 'video_bg', 'is_empty' => true, ), ), array( 'type' => 'attach_image', 'heading' => __( 'Image', 'js_composer' ), 'param_name' => 'parallax_image', 'value' => '', 'description' => __( 'Select image from media library.', 'js_composer' ), 'dependency' => array( 'element' => 'parallax', 'not_empty' => true, ), ), array( 'type' => 'textfield', 'heading' => __( 'Parallax speed', 'js_composer' ), 'param_name' => 'parallax_speed_video', 'value' => '1.5', 'description' => __( 'Enter parallax speed ratio (Note: Default value is 1.5, min value is 1)', 'js_composer' ), 'dependency' => array( 'element' => 'video_bg_parallax', 'not_empty' => true, ), ), array( 'type' => 'textfield', 'heading' => __( 'Parallax speed', 'js_composer' ), 'param_name' => 'parallax_speed_bg', 'value' => '1.5', 'description' => __( 'Enter parallax speed ratio (Note: Default value is 1.5, min value is 1)', 'js_composer' ), 'dependency' => array( 'element' => 'parallax', 'not_empty' => true, ), ), vc_map_add_css_animation( false ), array( 'type' => 'el_id', 'heading' => __( 'Section ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter section ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Disable section', 'js_composer' ), 'param_name' => 'disable_element', // Inner param name. 'description' => __( 'If checked the section won\'t be visible on the public side of your website. You can switch it back any time.', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), 'js_view' => 'VcSectionView', ); PK<\m ,config/containers/shortcode-vc-row-inner.phpnu[ __( 'Inner Row', 'js_composer' ), //Inner Row 'content_element' => false, 'is_container' => true, 'icon' => 'icon-wpb-row', 'weight' => 1000, 'show_settings_on_create' => false, 'description' => __( 'Place content elements inside the inner row', 'js_composer' ), 'params' => array( array( 'type' => 'el_id', 'heading' => __( 'Row ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter optional row ID. Make sure it is unique, and it is valid as w3c specification: %s (Must not have spaces)', 'js_composer' ), '' . __( 'link', 'js_composer' ) . '' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Equal height', 'js_composer' ), 'param_name' => 'equal_height', 'description' => __( 'If checked columns will be set to equal height.', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Content position', 'js_composer' ), 'param_name' => 'content_placement', 'value' => array( __( 'Default', 'js_composer' ) => '', __( 'Top', 'js_composer' ) => 'top', __( 'Middle', 'js_composer' ) => 'middle', __( 'Bottom', 'js_composer' ) => 'bottom', ), 'description' => __( 'Select content position within columns.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Columns gap', 'js_composer' ), 'param_name' => 'gap', 'value' => array( '0px' => '0', '1px' => '1', '2px' => '2', '3px' => '3', '4px' => '4', '5px' => '5', '10px' => '10', '15px' => '15', '20px' => '20', '25px' => '25', '30px' => '30', '35px' => '35', ), 'std' => '0', 'description' => __( 'Select gap between columns in row.', 'js_composer' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Disable row', 'js_composer' ), 'param_name' => 'disable_element', // Inner param name. 'description' => __( 'If checked the row won\'t be visible on the public side of your website. You can switch it back any time.', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), 'js_view' => 'VcRowView', ); PK<\"")config/containers/shortcode-vc-column.phpnu[ __( 'Column', 'js_composer' ), 'icon' => 'icon-wpb-row', 'is_container' => true, 'content_element' => false, 'description' => __( 'Place content elements inside the column', 'js_composer' ), 'params' => array( array( 'type' => 'checkbox', 'heading' => __( 'Use video background?', 'js_composer' ), 'param_name' => 'video_bg', 'description' => __( 'If checked, video will be used as row background.', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), ), array( 'type' => 'textfield', 'heading' => __( 'YouTube link', 'js_composer' ), 'param_name' => 'video_bg_url', 'value' => 'https://www.youtube.com/watch?v=lMJXxhRFO1k', // default video url 'description' => __( 'Add YouTube link.', 'js_composer' ), 'dependency' => array( 'element' => 'video_bg', 'not_empty' => true, ), ), array( 'type' => 'dropdown', 'heading' => __( 'Parallax', 'js_composer' ), 'param_name' => 'video_bg_parallax', 'value' => array( __( 'None', 'js_composer' ) => '', __( 'Simple', 'js_composer' ) => 'content-moving', __( 'With fade', 'js_composer' ) => 'content-moving-fade', ), 'description' => __( 'Add parallax type background for row.', 'js_composer' ), 'dependency' => array( 'element' => 'video_bg', 'not_empty' => true, ), ), array( 'type' => 'dropdown', 'heading' => __( 'Parallax', 'js_composer' ), 'param_name' => 'parallax', 'value' => array( __( 'None', 'js_composer' ) => '', __( 'Simple', 'js_composer' ) => 'content-moving', __( 'With fade', 'js_composer' ) => 'content-moving-fade', ), 'description' => __( 'Add parallax type background for row (Note: If no image is specified, parallax will use background image from Design Options).', 'js_composer' ), 'dependency' => array( 'element' => 'video_bg', 'is_empty' => true, ), ), array( 'type' => 'attach_image', 'heading' => __( 'Image', 'js_composer' ), 'param_name' => 'parallax_image', 'value' => '', 'description' => __( 'Select image from media library.', 'js_composer' ), 'dependency' => array( 'element' => 'parallax', 'not_empty' => true, ), ), array( 'type' => 'textfield', 'heading' => __( 'Parallax speed', 'js_composer' ), 'param_name' => 'parallax_speed_video', 'value' => '1.5', 'description' => __( 'Enter parallax speed ratio (Note: Default value is 1.5, min value is 1)', 'js_composer' ), 'dependency' => array( 'element' => 'video_bg_parallax', 'not_empty' => true, ), ), array( 'type' => 'textfield', 'heading' => __( 'Parallax speed', 'js_composer' ), 'param_name' => 'parallax_speed_bg', 'value' => '1.5', 'description' => __( 'Enter parallax speed ratio (Note: Default value is 1.5, min value is 1)', 'js_composer' ), 'dependency' => array( 'element' => 'parallax', 'not_empty' => true, ), ), vc_map_add_css_animation( false ), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Width', 'js_composer' ), 'param_name' => 'width', 'value' => array( __( '1 column - 1/12', 'js_composer' ) => '1/12', __( '2 columns - 1/6', 'js_composer' ) => '1/6', __( '3 columns - 1/4', 'js_composer' ) => '1/4', __( '4 columns - 1/3', 'js_composer' ) => '1/3', __( '5 columns - 5/12', 'js_composer' ) => '5/12', __( '6 columns - 1/2', 'js_composer' ) => '1/2', __( '7 columns - 7/12', 'js_composer' ) => '7/12', __( '8 columns - 2/3', 'js_composer' ) => '2/3', __( '9 columns - 3/4', 'js_composer' ) => '3/4', __( '10 columns - 5/6', 'js_composer' ) => '5/6', __( '11 columns - 11/12', 'js_composer' ) => '11/12', __( '12 columns - 1/1', 'js_composer' ) => '1/1', ), 'group' => __( 'Responsive Options', 'js_composer' ), 'description' => __( 'Select column width.', 'js_composer' ), 'std' => '1/1', ), array( 'type' => 'column_offset', 'heading' => __( 'Responsiveness', 'js_composer' ), 'param_name' => 'offset', 'group' => __( 'Responsive Options', 'js_composer' ), 'description' => __( 'Adjust column for different screen sizes. Control width, offset and visibility settings.', 'js_composer' ), ), ), 'js_view' => 'VcColumnView', ); PK<\Z%%#config/buttons/shortcode-vc-cta.phpnu[ array( 'source', 'text', 'css', ), ), array( 'element' => 'use_custom_fonts_h2', 'value' => 'true', ) ); // This is needed to remove custom heading _tag and _align options. if ( is_array( $h2_custom_heading ) && ! empty( $h2_custom_heading ) ) { foreach ( $h2_custom_heading as $key => $param ) { if ( is_array( $param ) && isset( $param['type'] ) && 'font_container' === $param['type'] ) { $h2_custom_heading[ $key ]['value'] = ''; if ( isset( $param['settings'] ) && is_array( $param['settings'] ) && isset( $param['settings']['fields'] ) ) { $sub_key = array_search( 'tag', $param['settings']['fields'] ); if ( false !== $sub_key ) { unset( $h2_custom_heading[ $key ]['settings']['fields'][ $sub_key ] ); } elseif ( isset( $param['settings']['fields']['tag'] ) ) { unset( $h2_custom_heading[ $key ]['settings']['fields']['tag'] ); } $sub_key = array_search( 'text_align', $param['settings']['fields'] ); if ( false !== $sub_key ) { unset( $h2_custom_heading[ $key ]['settings']['fields'][ $sub_key ] ); } elseif ( isset( $param['settings']['fields']['text_align'] ) ) { unset( $h2_custom_heading[ $key ]['settings']['fields']['text_align'] ); } } } } } $h4_custom_heading = vc_map_integrate_shortcode( vc_custom_heading_element_params(), 'h4_', __( 'Subheading', 'js_composer' ), array( 'exclude' => array( 'source', 'text', 'css', ), ), array( 'element' => 'use_custom_fonts_h4', 'value' => 'true', ) ); // This is needed to remove custom heading _tag and _align options. if ( is_array( $h4_custom_heading ) && ! empty( $h4_custom_heading ) ) { foreach ( $h4_custom_heading as $key => $param ) { if ( is_array( $param ) && isset( $param['type'] ) && 'font_container' === $param['type'] ) { $h4_custom_heading[ $key ]['value'] = ''; if ( isset( $param['settings'] ) && is_array( $param['settings'] ) && isset( $param['settings']['fields'] ) ) { $sub_key = array_search( 'tag', $param['settings']['fields'] ); if ( false !== $sub_key ) { unset( $h4_custom_heading[ $key ]['settings']['fields'][ $sub_key ] ); } elseif ( isset( $param['settings']['fields']['tag'] ) ) { unset( $h4_custom_heading[ $key ]['settings']['fields']['tag'] ); } $sub_key = array_search( 'text_align', $param['settings']['fields'] ); if ( false !== $sub_key ) { unset( $h4_custom_heading[ $key ]['settings']['fields'][ $sub_key ] ); } elseif ( isset( $param['settings']['fields']['text_align'] ) ) { unset( $h4_custom_heading[ $key ]['settings']['fields']['text_align'] ); } } } } } $params = array_merge( array( array( 'type' => 'textfield', 'heading' => __( 'Heading', 'js_composer' ), 'admin_label' => true, 'param_name' => 'h2', 'value' => __( 'Hey! I am first heading line feel free to change me', 'js_composer' ), 'description' => __( 'Enter text for heading line.', 'js_composer' ), 'edit_field_class' => 'vc_col-sm-9', ), array( 'type' => 'checkbox', 'heading' => __( 'Use custom font?', 'js_composer' ), 'param_name' => 'use_custom_fonts_h2', 'description' => __( 'Enable Google fonts.', 'js_composer' ), 'edit_field_class' => 'vc_col-sm-3', ), ), $h2_custom_heading, array( array( 'type' => 'textfield', 'heading' => __( 'Subheading', 'js_composer' ), 'param_name' => 'h4', 'value' => '', 'description' => __( 'Enter text for subheading line.', 'js_composer' ), 'edit_field_class' => 'vc_col-sm-9', ), array( 'type' => 'checkbox', 'heading' => __( 'Use custom font?', 'js_composer' ), 'param_name' => 'use_custom_fonts_h4', 'description' => __( 'Enable custom font option.', 'js_composer' ), 'edit_field_class' => 'vc_col-sm-3', ), ), $h4_custom_heading, array( array( 'type' => 'dropdown', 'heading' => __( 'Text alignment', 'js_composer' ), 'param_name' => 'txt_align', 'value' => getVcShared( 'text align' ), // default left 'description' => __( 'Select text alignment in "Call to Action" block.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Shape', 'js_composer' ), 'param_name' => 'shape', 'std' => 'rounded', 'value' => array( __( 'Square', 'js_composer' ) => 'square', __( 'Rounded', 'js_composer' ) => 'rounded', __( 'Round', 'js_composer' ) => 'round', ), 'description' => __( 'Select call to action shape.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Style', 'js_composer' ), 'param_name' => 'style', 'value' => array( __( 'Classic', 'js_composer' ) => 'classic', __( 'Flat', 'js_composer' ) => 'flat', __( 'Outline', 'js_composer' ) => 'outline', __( '3d', 'js_composer' ) => '3d', __( 'Custom', 'js_composer' ) => 'custom', ), 'std' => 'classic', 'description' => __( 'Select call to action display style.', 'js_composer' ), ), array( 'type' => 'colorpicker', 'heading' => __( 'Background color', 'js_composer' ), 'param_name' => 'custom_background', 'description' => __( 'Select custom background color.', 'js_composer' ), 'dependency' => array( 'element' => 'style', 'value' => array( 'custom' ), ), 'edit_field_class' => 'vc_col-sm-6', ), array( 'type' => 'colorpicker', 'heading' => __( 'Text color', 'js_composer' ), 'param_name' => 'custom_text', 'description' => __( 'Select custom text color.', 'js_composer' ), 'dependency' => array( 'element' => 'style', 'value' => array( 'custom' ), ), 'edit_field_class' => 'vc_col-sm-6', ), array( 'type' => 'dropdown', 'heading' => __( 'Color', 'js_composer' ), 'param_name' => 'color', 'value' => array( __( 'Classic', 'js_composer' ) => 'classic' ) + getVcShared( 'colors-dashed' ), 'std' => 'classic', 'description' => __( 'Select color schema.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown vc_cta3-colored-dropdown', 'dependency' => array( 'element' => 'style', 'value_not_equal_to' => array( 'custom' ), ), ), array( 'type' => 'textarea_html', 'heading' => __( 'Text', 'js_composer' ), 'param_name' => 'content', 'value' => __( 'I am promo text. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Width', 'js_composer' ), 'param_name' => 'el_width', 'value' => array( '100%' => '', '90%' => 'xl', '80%' => 'lg', '70%' => 'md', '60%' => 'sm', '50%' => 'xs', ), 'description' => __( 'Select call to action width (percentage).', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Add button', 'js_composer' ) . '?', 'description' => __( 'Add button for call to action.', 'js_composer' ), 'param_name' => 'add_button', 'value' => array( __( 'No', 'js_composer' ) => '', __( 'Top', 'js_composer' ) => 'top', __( 'Bottom', 'js_composer' ) => 'bottom', __( 'Left', 'js_composer' ) => 'left', __( 'Right', 'js_composer' ) => 'right', ), ), ), vc_map_integrate_shortcode( 'vc_btn', 'btn_', __( 'Button', 'js_composer' ), array( 'exclude' => array( 'css' ), ), array( 'element' => 'add_button', 'not_empty' => true, ) ), array( array( 'type' => 'dropdown', 'heading' => __( 'Add icon?', 'js_composer' ), 'description' => __( 'Add icon for call to action.', 'js_composer' ), 'param_name' => 'add_icon', 'value' => array( __( 'No', 'js_composer' ) => '', __( 'Top', 'js_composer' ) => 'top', __( 'Bottom', 'js_composer' ) => 'bottom', __( 'Left', 'js_composer' ) => 'left', __( 'Right', 'js_composer' ) => 'right', ), ), array( 'type' => 'checkbox', 'param_name' => 'i_on_border', 'heading' => __( 'Place icon on border?', 'js_composer' ), 'description' => __( 'Display icon on call to action element border.', 'js_composer' ), 'group' => __( 'Icon', 'js_composer' ), 'dependency' => array( 'element' => 'add_icon', 'not_empty' => true, ), ), ), vc_map_integrate_shortcode( 'vc_icon', 'i_', __( 'Icon', 'js_composer' ), array( 'exclude' => array( 'align', 'css', ), ), array( 'element' => 'add_icon', 'not_empty' => true, ) ), array( /// cta3 vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ) ); return array( 'name' => __( 'Call to Action', 'js_composer' ), 'base' => 'vc_cta', 'icon' => 'icon-wpb-call-to-action', 'category' => array( __( 'Content', 'js_composer' ) ), 'description' => __( 'Catch visitors attention with CTA block', 'js_composer' ), 'since' => '4.5', 'params' => $params, 'js_view' => 'VcCallToActionView3', ); PK<\1g.g.#config/buttons/shortcode-vc-btn.phpnu[ '/^(type|icon_\w*)/', // we need only type, icon_fontawesome, icon_blabla..., NOT color and etc ), array( 'element' => 'add_icon', 'value' => 'true', ) ); // populate integrated vc_icons params. if ( is_array( $icons_params ) && ! empty( $icons_params ) ) { foreach ( $icons_params as $key => $param ) { if ( is_array( $param ) && ! empty( $param ) ) { if ( 'i_type' === $param['param_name'] ) { // append pixelicons to dropdown $icons_params[ $key ]['value'][ __( 'Pixel', 'js_composer' ) ] = 'pixelicons'; } if ( isset( $param['admin_label'] ) ) { // remove admin label unset( $icons_params[ $key ]['admin_label'] ); } } } } $params = array_merge( array( array( 'type' => 'textfield', 'heading' => __( 'Text', 'js_composer' ), 'param_name' => 'title', // fully compatible to btn1 and btn2 'value' => __( 'Text on the button', 'js_composer' ), ), array( 'type' => 'vc_link', 'heading' => __( 'URL (Link)', 'js_composer' ), 'param_name' => 'link', 'description' => __( 'Add link to button.', 'js_composer' ), // compatible with btn2 and converted from href{btn1} ), array( 'type' => 'dropdown', 'heading' => __( 'Style', 'js_composer' ), 'description' => __( 'Select button display style.', 'js_composer' ), 'param_name' => 'style', // partly compatible with btn2, need to be converted shape+style from btn2 and btn1 'value' => array( __( 'Modern', 'js_composer' ) => 'modern', __( 'Classic', 'js_composer' ) => 'classic', __( 'Flat', 'js_composer' ) => 'flat', __( 'Outline', 'js_composer' ) => 'outline', __( '3d', 'js_composer' ) => '3d', __( 'Custom', 'js_composer' ) => 'custom', __( 'Outline custom', 'js_composer' ) => 'outline-custom', __( 'Gradient', 'js_composer' ) => 'gradient', __( 'Gradient Custom', 'js_composer' ) => 'gradient-custom', ), ), array( 'type' => 'dropdown', 'heading' => __( 'Gradient Color 1', 'js_composer' ), 'param_name' => 'gradient_color_1', 'description' => __( 'Select first color for gradient.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown vc_btn3-colored-dropdown', 'value' => getVcShared( 'colors-dashed' ), 'std' => 'turquoise', 'dependency' => array( 'element' => 'style', 'value' => array( 'gradient' ), ), 'edit_field_class' => 'vc_col-sm-6', ), array( 'type' => 'dropdown', 'heading' => __( 'Gradient Color 2', 'js_composer' ), 'param_name' => 'gradient_color_2', 'description' => __( 'Select second color for gradient.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown vc_btn3-colored-dropdown', 'value' => getVcShared( 'colors-dashed' ), 'std' => 'blue', // must have default color grey 'dependency' => array( 'element' => 'style', 'value' => array( 'gradient' ), ), 'edit_field_class' => 'vc_col-sm-6', ), array( 'type' => 'colorpicker', 'heading' => __( 'Gradient Color 1', 'js_composer' ), 'param_name' => 'gradient_custom_color_1', 'description' => __( 'Select first color for gradient.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown vc_btn3-colored-dropdown', 'value' => '#dd3333', 'dependency' => array( 'element' => 'style', 'value' => array( 'gradient-custom' ), ), 'edit_field_class' => 'vc_col-sm-4', ), array( 'type' => 'colorpicker', 'heading' => __( 'Gradient Color 2', 'js_composer' ), 'param_name' => 'gradient_custom_color_2', 'description' => __( 'Select second color for gradient.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown vc_btn3-colored-dropdown', 'value' => '#eeee22', 'dependency' => array( 'element' => 'style', 'value' => array( 'gradient-custom' ), ), 'edit_field_class' => 'vc_col-sm-4', ), array( 'type' => 'colorpicker', 'heading' => __( 'Button Text Color', 'js_composer' ), 'param_name' => 'gradient_text_color', 'description' => __( 'Select button text color.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown vc_btn3-colored-dropdown', 'value' => '#ffffff', // must have default color grey 'dependency' => array( 'element' => 'style', 'value' => array( 'gradient-custom' ), ), 'edit_field_class' => 'vc_col-sm-4', ), array( 'type' => 'colorpicker', 'heading' => __( 'Background', 'js_composer' ), 'param_name' => 'custom_background', 'description' => __( 'Select custom background color for your element.', 'js_composer' ), 'dependency' => array( 'element' => 'style', 'value' => array( 'custom' ), ), 'edit_field_class' => 'vc_col-sm-6', 'std' => '#ededed', ), array( 'type' => 'colorpicker', 'heading' => __( 'Text', 'js_composer' ), 'param_name' => 'custom_text', 'description' => __( 'Select custom text color for your element.', 'js_composer' ), 'dependency' => array( 'element' => 'style', 'value' => array( 'custom' ), ), 'edit_field_class' => 'vc_col-sm-6', 'std' => '#666', ), array( 'type' => 'colorpicker', 'heading' => __( 'Outline and Text', 'js_composer' ), 'param_name' => 'outline_custom_color', 'description' => __( 'Select outline and text color for your element.', 'js_composer' ), 'dependency' => array( 'element' => 'style', 'value' => array( 'outline-custom' ), ), 'edit_field_class' => 'vc_col-sm-4', 'std' => '#666', ), array( 'type' => 'colorpicker', 'heading' => __( 'Hover background', 'js_composer' ), 'param_name' => 'outline_custom_hover_background', 'description' => __( 'Select hover background color for your element.', 'js_composer' ), 'dependency' => array( 'element' => 'style', 'value' => array( 'outline-custom' ), ), 'edit_field_class' => 'vc_col-sm-4', 'std' => '#666', ), array( 'type' => 'colorpicker', 'heading' => __( 'Hover text', 'js_composer' ), 'param_name' => 'outline_custom_hover_text', 'description' => __( 'Select hover text color for your element.', 'js_composer' ), 'dependency' => array( 'element' => 'style', 'value' => array( 'outline-custom' ), ), 'edit_field_class' => 'vc_col-sm-4', 'std' => '#fff', ), array( 'type' => 'dropdown', 'heading' => __( 'Shape', 'js_composer' ), 'description' => __( 'Select button shape.', 'js_composer' ), 'param_name' => 'shape', // need to be converted 'value' => array( __( 'Rounded', 'js_composer' ) => 'rounded', __( 'Square', 'js_composer' ) => 'square', __( 'Round', 'js_composer' ) => 'round', ), ), array( 'type' => 'dropdown', 'heading' => __( 'Color', 'js_composer' ), 'param_name' => 'color', 'description' => __( 'Select button color.', 'js_composer' ), // compatible with btn2, need to be converted from btn1 'param_holder_class' => 'vc_colored-dropdown vc_btn3-colored-dropdown', 'value' => array( // Btn1 Colors __( 'Classic Grey', 'js_composer' ) => 'default', __( 'Classic Blue', 'js_composer' ) => 'primary', __( 'Classic Turquoise', 'js_composer' ) => 'info', __( 'Classic Green', 'js_composer' ) => 'success', __( 'Classic Orange', 'js_composer' ) => 'warning', __( 'Classic Red', 'js_composer' ) => 'danger', __( 'Classic Black', 'js_composer' ) => 'inverse', // + Btn2 Colors (default color set) ) + getVcShared( 'colors-dashed' ), 'std' => 'grey', // must have default color grey 'dependency' => array( 'element' => 'style', 'value_not_equal_to' => array( 'custom', 'outline-custom', 'gradient', 'gradient-custom', ), ), ), array( 'type' => 'dropdown', 'heading' => __( 'Size', 'js_composer' ), 'param_name' => 'size', 'description' => __( 'Select button display size.', 'js_composer' ), // compatible with btn2, default md, but need to be converted from btn1 to btn2 'std' => 'md', 'value' => getVcShared( 'sizes' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Alignment', 'js_composer' ), 'param_name' => 'align', 'description' => __( 'Select button alignment.', 'js_composer' ), // compatible with btn2, default left to be compatible with btn1 'value' => array( __( 'Inline', 'js_composer' ) => 'inline', // default as well __( 'Left', 'js_composer' ) => 'left', // default as well __( 'Right', 'js_composer' ) => 'right', __( 'Center', 'js_composer' ) => 'center', ), ), array( 'type' => 'checkbox', 'heading' => __( 'Set full width button?', 'js_composer' ), 'param_name' => 'button_block', 'dependency' => array( 'element' => 'align', 'value_not_equal_to' => 'inline', ), ), array( 'type' => 'checkbox', 'heading' => __( 'Add icon?', 'js_composer' ), 'param_name' => 'add_icon', ), array( 'type' => 'dropdown', 'heading' => __( 'Icon Alignment', 'js_composer' ), 'description' => __( 'Select icon alignment.', 'js_composer' ), 'param_name' => 'i_align', 'value' => array( __( 'Left', 'js_composer' ) => 'left', // default as well __( 'Right', 'js_composer' ) => 'right', ), 'dependency' => array( 'element' => 'add_icon', 'value' => 'true', ), ), ), $icons_params, array( array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'js_composer' ), 'param_name' => 'i_icon_pixelicons', 'value' => 'vc_pixel_icon vc_pixel_icon-alert', 'settings' => array( 'emptyIcon' => false, // default true, display an "EMPTY" icon? 'type' => 'pixelicons', 'source' => $pixel_icons, ), 'dependency' => array( 'element' => 'i_type', 'value' => 'pixelicons', ), 'description' => __( 'Select icon from library.', 'js_composer' ), ), ), array( vc_map_add_css_animation( true ), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Advanced on click action', 'js_composer' ), 'param_name' => 'custom_onclick', 'description' => __( 'Insert inline onclick javascript action.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'On click code', 'js_composer' ), 'param_name' => 'custom_onclick_code', 'description' => __( 'Enter onclick action code.', 'js_composer' ), 'dependency' => array( 'element' => 'custom_onclick', 'not_empty' => true, ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ) ); /** * @class WPBakeryShortCode_VC_Btn */ return array( 'name' => __( 'Button', 'js_composer' ), 'base' => 'vc_btn', 'icon' => 'icon-wpb-ui-button', 'category' => array( __( 'Content', 'js_composer' ), ), 'description' => __( 'Eye catching button', 'js_composer' ), 'params' => $params, 'js_view' => 'VcButton3View', 'custom_markup' => '{{title}}
', ); PK<\config/buttons/.buttons.phpnu[PK<\T"VV&config/deprecated/shortcode-vc-tab.phpnu[ __( 'Old Tab', 'js_composer' ), 'base' => 'vc_tab', 'allowed_container_element' => 'vc_row', 'is_container' => true, 'content_element' => false, 'deprecated' => '4.6', 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'Enter title of tab.', 'js_composer' ), ), array( 'type' => 'tab_id', 'heading' => __( 'Tab ID', 'js_composer' ), 'param_name' => 'tab_id', ), ), 'js_view' => 'VcTabView', ); PK<\S^Bf f ,config/deprecated/shortcode-vc-accordion.phpnu[ __( 'Old Accordion', 'js_composer' ), 'base' => 'vc_accordion', 'show_settings_on_create' => false, 'is_container' => true, 'icon' => 'icon-wpb-ui-accordion', 'deprecated' => '4.6', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Collapsible content panels', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Active section', 'js_composer' ), 'param_name' => 'active_tab', 'value' => 1, 'description' => __( 'Enter section number to be active on load or enter "false" to collapse all sections.', 'js_composer' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Allow collapse all sections?', 'js_composer' ), 'param_name' => 'collapsible', 'description' => __( 'If checked, it is allowed to collapse all sections.', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Disable keyboard interactions?', 'js_composer' ), 'param_name' => 'disable_keyboard', 'description' => __( 'If checked, disables keyboard arrow interactions (Keys: Left, Up, Right, Down, Space).', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), 'custom_markup' => '
%content%
' . __( 'Add section', 'js_composer' ) . '
', 'default_content' => ' [vc_accordion_tab title="' . __( 'Section 1', 'js_composer' ) . '"][/vc_accordion_tab] [vc_accordion_tab title="' . __( 'Section 2', 'js_composer' ) . '"][/vc_accordion_tab] ', 'js_view' => 'VcAccordionView', ); PK<\L  'config/deprecated/shortcode-vc-tabs.phpnu[ __( 'Old Tabs', 'js_composer' ), 'base' => 'vc_tabs', 'show_settings_on_create' => false, 'is_container' => true, 'icon' => 'icon-wpb-ui-tab-content', 'category' => __( 'Content', 'js_composer' ), 'deprecated' => '4.6', 'description' => __( 'Tabbed content', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Auto rotate', 'js_composer' ), 'param_name' => 'interval', 'value' => array( __( 'Disable', 'js_composer' ) => 0, 3, 5, 10, 15, ), 'std' => 0, 'description' => __( 'Auto rotate tabs each X seconds.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), 'custom_markup' => '
%content%
', 'default_content' => ' [vc_tab title="' . __( 'Tab 1', 'js_composer' ) . '" tab_id=""][/vc_tab] [vc_tab title="' . __( 'Tab 2', 'js_composer' ) . '" tab_id=""][/vc_tab] ', 'js_view' => 'VcTabsView', ); PK<\H]b-config/deprecated/shortcode-vc-posts-grid.phpnu[ __( 'Old Posts Grid', 'js_composer' ), 'base' => 'vc_posts_grid', 'content_element' => false, 'deprecated' => '4.4', 'icon' => 'icon-wpb-application-icon-large', 'description' => __( 'Posts in grid view', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ), ), array( 'type' => 'loop', 'heading' => __( 'Grids content', 'js_composer' ), 'param_name' => 'loop', 'value' => 'size:10|order_by:date', 'settings' => array( 'size' => array( 'hidden' => false, 'value' => 10, ), 'order_by' => array( 'value' => 'date' ), ), 'description' => __( 'Create WordPress loop, to populate content from your site.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Columns count', 'js_composer' ), 'param_name' => 'grid_columns_count', 'value' => array( 6, 4, 3, 2, 1, ), 'std' => 3, 'admin_label' => true, 'description' => __( 'Select columns count.', 'js_composer' ), ), array( 'type' => 'sorted_list', 'heading' => __( 'Teaser layout', 'js_composer' ), 'param_name' => 'grid_layout', 'description' => __( 'Control teasers look. Enable blocks and place them in desired order. Note: This setting can be overrriden on post to post basis.', 'js_composer' ), 'value' => 'title,image,text', 'options' => array( array( 'image', __( 'Thumbnail', 'js_composer' ), $vc_layout_sub_controls, ), array( 'title', __( 'Title', 'js_composer' ), $vc_layout_sub_controls, ), array( 'text', __( 'Text', 'js_composer' ), array( array( 'excerpt', __( 'Teaser/Excerpt', 'js_composer' ), ), array( 'text', __( 'Full content', 'js_composer' ), ), ), ), array( 'link', __( 'Read more link', 'js_composer' ), ), ), ), array( 'type' => 'dropdown', 'heading' => __( 'Link target', 'js_composer' ), 'param_name' => 'grid_link_target', 'value' => vc_target_param_list(), ), array( 'type' => 'checkbox', 'heading' => __( 'Show filter', 'js_composer' ), 'param_name' => 'filter', 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), 'description' => __( 'Select to add animated category filter to your posts grid.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Layout mode', 'js_composer' ), 'param_name' => 'grid_layout_mode', 'value' => array( __( 'Fit rows', 'js_composer' ) => 'fitRows', __( 'Masonry', 'js_composer' ) => 'masonry', ), 'description' => __( 'Teaser layout template.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Thumbnail size', 'js_composer' ), 'param_name' => 'grid_thumb_size', 'value' => 'thumbnail', 'description' => __( 'Enter thumbnail size. Example: thumbnail, medium, large, full or other sizes defined by current theme. Alternatively enter image size in pixels: 200x100 (Width x Height) . ', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), ); PK<\7_Xoo+config/deprecated/shortcode-vc-carousel.phpnu[ __( 'Old Post Carousel', 'js_composer' ), 'base' => 'vc_carousel', 'content_element' => false, 'deprecated' => '4.4', 'class' => '', 'icon' => 'icon-wpb-vc_carousel', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Animated carousel with posts', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ), ), array( 'type' => 'loop', 'heading' => __( 'Carousel content', 'js_composer' ), 'param_name' => 'posts_query', 'value' => 'size:10|order_by:date', 'settings' => array( 'size' => array( 'hidden' => false, 'value' => 10, ), 'order_by' => array( 'value' => 'date' ), ), 'description' => __( 'Create WordPress loop, to populate content from your site.', 'js_composer' ), ), array( 'type' => 'sorted_list', 'heading' => __( 'Teaser layout', 'js_composer' ), 'param_name' => 'layout', 'description' => __( 'Control teasers look. Enable blocks and place them in desired order. Note: This setting can be overrriden on post to post basis.', 'js_composer' ), 'value' => 'title,image,text', 'options' => array( array( 'image', __( 'Thumbnail', 'js_composer' ), vc_layout_sub_controls(), ), array( 'title', __( 'Title', 'js_composer' ), vc_layout_sub_controls(), ), array( 'text', __( 'Text', 'js_composer' ), array( array( 'excerpt', __( 'Teaser/Excerpt', 'js_composer' ), ), array( 'text', __( 'Full content', 'js_composer' ), ), ), ), array( 'link', __( 'Read more link', 'js_composer' ), ), ), ), array( 'type' => 'dropdown', 'heading' => __( 'Link target', 'js_composer' ), 'param_name' => 'link_target', 'value' => vc_target_param_list(), ), array( 'type' => 'textfield', 'heading' => __( 'Thumbnail size', 'js_composer' ), 'param_name' => 'thumb_size', 'value' => 'thumbnail', 'description' => __( 'Enter thumbnail size. Example: thumbnail, medium, large, full or other sizes defined by current theme. Alternatively enter image size in pixels: 200x100 (Width x Height) . ', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Slider speed', 'js_composer' ), 'param_name' => 'speed', 'value' => '5000', 'description' => __( 'Duration of animation between slides (in ms).', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Slider orientation', 'js_composer' ), 'param_name' => 'mode', 'value' => array( __( 'Horizontal', 'js_composer' ) => 'horizontal', __( 'Vertical', 'js_composer' ) => 'vertical', ), 'description' => __( 'Select slider position (Note: this affects swiping orientation).', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Slides per view', 'js_composer' ), 'param_name' => 'slides_per_view', 'value' => '1', 'description' => __( 'Enter number of slides to display at the same time.', 'js_composer' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Slider autoplay', 'js_composer' ), 'param_name' => 'autoplay', 'description' => __( 'Enable autoplay mode.', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Hide pagination control', 'js_composer' ), 'param_name' => 'hide_pagination_control', 'description' => __( 'If "YES" pagination control will be removed', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Hide prev/next buttons', 'js_composer' ), 'param_name' => 'hide_prev_next_buttons', 'description' => __( 'If "YES" prev/next control will be removed', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Partial view', 'js_composer' ), 'param_name' => 'partial_view', 'description' => __( 'If "YES" part of the next slide will be visible on the right side', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Slider loop', 'js_composer' ), 'param_name' => 'wrap', 'description' => __( 'Enable slider loop mode.', 'js_composer' ), 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), ); PK<\h0config/deprecated/shortcode-vc-accordion-tab.phpnu[ __( 'Old Section', 'js_composer' ), 'base' => 'vc_accordion_tab', 'allowed_container_element' => 'vc_row', 'is_container' => true, 'deprecated' => '4.6', 'content_element' => false, 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Title', 'js_composer' ), 'param_name' => 'title', 'value' => __( 'Section', 'js_composer' ), 'description' => __( 'Enter accordion section title.', 'js_composer' ), ), array( 'type' => 'el_id', 'heading' => __( 'Section ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter optional row ID. Make sure it is unique, and it is valid as w3c specification: %s (Must not have spaces)', 'js_composer' ), '' . __( 'link', 'js_composer' ) . '' ), ), ), 'js_view' => 'VcAccordionTabView', ); PK<\_^iG G -config/deprecated/shortcode-vc-cta-button.phpnu[ __( 'Old Call to Action', 'js_composer' ), 'base' => 'vc_cta_button', 'icon' => 'icon-wpb-call-to-action', 'deprecated' => '4.5', 'content_element' => false, 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Catch visitors attention with CTA block', 'js_composer' ), 'params' => array( array( 'type' => 'textarea', 'admin_label' => true, 'heading' => __( 'Text', 'js_composer' ), 'param_name' => 'call_text', 'value' => __( 'Click edit button to change this text.', 'js_composer' ), 'description' => __( 'Enter text content.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Text on the button', 'js_composer' ), 'param_name' => 'title', 'value' => __( 'Text on the button', 'js_composer' ), 'description' => __( 'Enter text on the button.', 'js_composer' ), ), array( 'type' => 'href', 'heading' => __( 'URL (Link)', 'js_composer' ), 'param_name' => 'href', 'description' => __( 'Enter button link.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Target', 'js_composer' ), 'param_name' => 'target', 'value' => vc_target_param_list(), 'dependency' => array( 'element' => 'href', 'not_empty' => true, 'callback' => 'vc_cta_button_param_target_callback', ), ), array( 'type' => 'dropdown', 'heading' => __( 'Color', 'js_composer' ), 'param_name' => 'color', 'value' => $colors_arr, 'description' => __( 'Select button color.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown', ), array( 'type' => 'dropdown', 'heading' => __( 'Button icon', 'js_composer' ), 'param_name' => 'icon', 'value' => $icons_arr, 'description' => __( 'Select icon to display on button.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Size', 'js_composer' ), 'param_name' => 'size', 'value' => $size_arr, 'description' => __( 'Select button size.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Button position', 'js_composer' ), 'param_name' => 'position', 'value' => array( __( 'Right', 'js_composer' ) => 'cta_align_right', __( 'Left', 'js_composer' ) => 'cta_align_left', __( 'Bottom', 'js_composer' ) => 'cta_align_bottom', ), 'description' => __( 'Select button alignment.', 'js_composer' ), ), vc_map_add_css_animation(), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), 'js_view' => 'VcCallToActionView', ); PK<\)config/deprecated/shortcode-vc-button.phpnu[ __( 'Old Button', 'js_composer' ) . ' 1', 'base' => 'vc_button', 'icon' => 'icon-wpb-ui-button', 'category' => __( 'Content', 'js_composer' ), 'deprecated' => '4.5', 'content_element' => false, 'description' => __( 'Eye catching button', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Text', 'js_composer' ), 'holder' => 'button', 'class' => 'wpb_button', 'param_name' => 'title', 'value' => __( 'Text on the button', 'js_composer' ), 'description' => __( 'Enter text on the button.', 'js_composer' ), ), array( 'type' => 'href', 'heading' => __( 'URL (Link)', 'js_composer' ), 'param_name' => 'href', 'description' => __( 'Enter button link.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Target', 'js_composer' ), 'param_name' => 'target', 'value' => vc_target_param_list(), 'dependency' => array( 'element' => 'href', 'not_empty' => true, 'callback' => 'vc_button_param_target_callback', ), ), array( 'type' => 'dropdown', 'heading' => __( 'Color', 'js_composer' ), 'param_name' => 'color', 'value' => $colors_arr, 'description' => __( 'Select button color.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown', ), array( 'type' => 'dropdown', 'heading' => __( 'Icon', 'js_composer' ), 'param_name' => 'icon', 'value' => $icons_arr, 'description' => __( 'Select icon to display on button.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Size', 'js_composer' ), 'param_name' => 'size', 'value' => $size_arr, 'description' => __( 'Select button size.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), 'js_view' => 'VcButtonView', ); PK<\nz.config/deprecated/shortcode-vc-cta-button2.phpnu[ __( 'Old Call to Action Button', 'js_composer' ) . ' 2', 'base' => 'vc_cta_button2', 'icon' => 'icon-wpb-call-to-action', 'deprecated' => '4.5', 'content_element' => false, 'category' => array( __( 'Content', 'js_composer' ) ), 'description' => __( 'Catch visitors attention with CTA block', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Heading', 'js_composer' ), 'admin_label' => true, 'param_name' => 'h2', 'value' => __( 'Hey! I am first heading line feel free to change me', 'js_composer' ), 'description' => __( 'Enter text for heading line.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Subheading', 'js_composer' ), 'param_name' => 'h4', 'value' => '', 'description' => __( 'Enter text for subheading line.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Shape', 'js_composer' ), 'param_name' => 'style', 'value' => getVcShared( 'cta styles' ), 'description' => __( 'Select display shape and style.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Width', 'js_composer' ), 'param_name' => 'el_width', 'value' => getVcShared( 'cta widths' ), 'description' => __( 'Select element width (percentage).', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Text alignment', 'js_composer' ), 'param_name' => 'txt_align', 'value' => getVcShared( 'text align' ), 'description' => __( 'Select text alignment in "Call to Action" block.', 'js_composer' ), ), array( 'type' => 'colorpicker', 'heading' => __( 'Background color', 'js_composer' ), 'param_name' => 'accent_color', 'description' => __( 'Select background color.', 'js_composer' ), ), array( 'type' => 'textarea_html', 'heading' => __( 'Text', 'js_composer' ), 'param_name' => 'content', 'value' => __( 'I am promo text. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.', 'js_composer' ), ), array( 'type' => 'vc_link', 'heading' => __( 'URL (Link)', 'js_composer' ), 'param_name' => 'link', 'description' => __( 'Add link to button (Important: adding link automatically adds button).', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Text on the button', 'js_composer' ), 'param_name' => 'title', 'value' => __( 'Text on the button', 'js_composer' ), 'description' => __( 'Add text on the button.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Shape', 'js_composer' ), 'param_name' => 'btn_style', 'value' => getVcShared( 'button styles' ), 'description' => __( 'Select button display style and shape.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Color', 'js_composer' ), 'param_name' => 'color', 'value' => getVcShared( 'colors' ), 'description' => __( 'Select button color.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown', ), array( 'type' => 'dropdown', 'heading' => __( 'Size', 'js_composer' ), 'param_name' => 'size', 'value' => getVcShared( 'sizes' ), 'std' => 'md', 'description' => __( 'Select button size.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Button position', 'js_composer' ), 'param_name' => 'position', 'value' => array( __( 'Right', 'js_composer' ) => 'right', __( 'Left', 'js_composer' ) => 'left', __( 'Bottom', 'js_composer' ) => 'bottom', ), 'description' => __( 'Select button alignment.', 'js_composer' ), ), vc_map_add_css_animation(), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), ); PK<\#t*config/deprecated/shortcode-vc-button2.phpnu[ __( 'Old Button', 'js_composer' ) . ' 2', 'base' => 'vc_button2', 'icon' => 'icon-wpb-ui-button', 'deprecated' => '4.5', 'content_element' => false, 'category' => array( __( 'Content', 'js_composer' ), ), 'description' => __( 'Eye catching button', 'js_composer' ), 'params' => array( array( 'type' => 'vc_link', 'heading' => __( 'URL (Link)', 'js_composer' ), 'param_name' => 'link', 'description' => __( 'Add link to button.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Text', 'js_composer' ), 'holder' => 'button', 'class' => 'vc_btn', 'param_name' => 'title', 'value' => __( 'Text on the button', 'js_composer' ), 'description' => __( 'Enter text on the button.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Alignment', 'js_composer' ), 'param_name' => 'align', 'value' => array( __( 'Inline', 'js_composer' ) => 'inline', __( 'Left', 'js_composer' ) => 'left', __( 'Center', 'js_composer' ) => 'center', __( 'Right', 'js_composer' ) => 'right', ), 'description' => __( 'Select button alignment.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Shape', 'js_composer' ), 'param_name' => 'style', 'value' => getVcShared( 'button styles' ), 'description' => __( 'Select button display style and shape.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Color', 'js_composer' ), 'param_name' => 'color', 'value' => getVcShared( 'colors' ), 'description' => __( 'Select button color.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown', ), array( 'type' => 'dropdown', 'heading' => __( 'Size', 'js_composer' ), 'param_name' => 'size', 'value' => getVcShared( 'sizes' ), 'std' => 'md', 'description' => __( 'Select button size.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), 'js_view' => 'VcButton2View', ); PK<\!config/deprecated/.deprecated.phpnu[PK<\[5ww'config/deprecated/shortcode-vc-tour.phpnu[ __( 'Old Tour', 'js_composer' ), 'base' => 'vc_tour', 'show_settings_on_create' => false, 'is_container' => true, 'container_not_allowed' => true, 'deprecated' => '4.6', 'icon' => 'icon-wpb-ui-tab-content-vertical', 'category' => __( 'Content', 'js_composer' ), 'wrapper_class' => 'vc_clearfix', 'description' => __( 'Vertical tabbed content', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Auto rotate slides', 'js_composer' ), 'param_name' => 'interval', 'value' => array( __( 'Disable', 'js_composer' ) => 0, 3, 5, 10, 15, ), 'std' => 0, 'description' => __( 'Auto rotate slides each X seconds.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), 'custom_markup' => '
%content%
', 'default_content' => ' [vc_tab title="' . __( 'Tab 1', 'js_composer' ) . '" tab_id=""][/vc_tab] [vc_tab title="' . __( 'Tab 2', 'js_composer' ) . '" tab_id=""][/vc_tab] ', 'js_view' => 'VcTabsView', ); PK<\config/.config.phpnu[PK<\N'*config/structure/shortcode-vc-raw-html.phpnu[ __( 'Raw HTML', 'js_composer' ), 'base' => 'vc_raw_html', 'icon' => 'icon-wpb-raw-html', 'category' => __( 'Structure', 'js_composer' ), 'wrapper_class' => 'clearfix', 'description' => __( 'Output raw HTML code on your page', 'js_composer' ), 'params' => array( array( 'type' => 'textarea_raw_html', 'holder' => 'div', 'heading' => __( 'Raw HTML', 'js_composer' ), 'param_name' => 'content', 'value' => base64_encode( '

I am raw html block.
Click edit button to change this html

' ), 'description' => __( 'Enter your HTML content.', 'js_composer' ), ), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), ); PK<\!22(config/structure/shortcode-vc-raw-js.phpnu[ __( 'Raw JS', 'js_composer' ), 'base' => 'vc_raw_js', 'icon' => 'icon-wpb-raw-javascript', 'category' => __( 'Structure', 'js_composer' ), 'wrapper_class' => 'clearfix', 'description' => __( 'Output raw JavaScript code on your page', 'js_composer' ), 'params' => array( array( 'type' => 'textarea_raw_html', 'holder' => 'div', 'heading' => __( 'JavaScript Code', 'js_composer' ), 'param_name' => 'content', 'value' => __( base64_encode( '' ), 'js_composer' ), 'description' => __( 'Enter your JavaScript code.', 'js_composer' ), ), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), ); PK<\config/structure/.structure.phpnu[PK<\2͸0config/structure/shortcode-vc-widget-sidebar.phpnu[ __( 'Widgetised Sidebar', 'js_composer' ), 'base' => 'vc_widget_sidebar', 'class' => 'wpb_widget_sidebar_widget', 'icon' => 'icon-wpb-layout_sidebar', 'category' => __( 'Structure', 'js_composer' ), 'description' => __( 'WordPress widgetised sidebar', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ), 'admin_label' => true, ), array( 'type' => 'widgetised_sidebars', 'heading' => __( 'Sidebar', 'js_composer' ), 'param_name' => 'sidebar_id', 'description' => __( 'Select widget area to display.', 'js_composer' ), ), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), ); PK<\zY^ ^ )config/social/shortcode-vc-googleplus.phpnu[ __( 'Google+ Button', 'js_composer' ), 'base' => 'vc_googleplus', 'icon' => 'icon-wpb-application-plus', 'category' => __( 'Social', 'js_composer' ), 'description' => __( 'Recommend on Google', 'js_composer' ), 'params' => array( array( 'type' => 'dropdown', 'heading' => __( 'Button size', 'js_composer' ), 'param_name' => 'type', 'admin_label' => true, 'value' => array( __( 'Standard', 'js_composer' ) => 'standard', __( 'Small', 'js_composer' ) => 'small', __( 'Medium', 'js_composer' ) => 'medium', __( 'Tall', 'js_composer' ) => 'tall', ), 'description' => __( 'Select button size.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Annotation', 'js_composer' ), 'param_name' => 'annotation', 'admin_label' => true, 'value' => array( __( 'Bubble', 'js_composer' ) => 'bubble', __( 'Inline', 'js_composer' ) => 'inline', __( 'None', 'js_composer' ) => 'none', ), 'std' => 'bubble', 'description' => __( 'Select type of annotation.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Width', 'js_composer' ), 'param_name' => 'widget_width', 'dependency' => array( 'element' => 'annotation', 'value' => array( 'inline' ), ), 'description' => __( 'Minimum width of 120px to display. If annotation is set to "inline", this parameter sets the width in pixels to use for button and its inline annotation. Default width is 450px.', 'js_composer' ), ), vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), ); PK<\config/social/.social.phpnu[PK<\'config/social/shortcode-vc-facebook.phpnu[ __( 'Facebook Like', 'js_composer' ), 'base' => 'vc_facebook', 'icon' => 'icon-wpb-balloon-facebook-left', 'category' => __( 'Social', 'js_composer' ), 'description' => __( 'Facebook "Like" button', 'js_composer' ), 'params' => array( array( 'type' => 'dropdown', 'heading' => __( 'Button type', 'js_composer' ), 'param_name' => 'type', 'admin_label' => true, 'value' => array( __( 'Horizontal', 'js_composer' ) => 'standard', __( 'Horizontal with count', 'js_composer' ) => 'button_count', __( 'Vertical with count', 'js_composer' ) => 'box_count', ), 'description' => __( 'Select button type.', 'js_composer' ), ), vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), ); PK<\˺o+o+(config/social/shortcode-vc-tweetmeme.phpnu[ __( 'Tweetmeme Button', 'js_composer' ), 'base' => 'vc_tweetmeme', 'icon' => 'icon-wpb-tweetme', 'category' => __( 'Social', 'js_composer' ), 'description' => __( 'Tweet button', 'js_composer' ), 'params' => array( array( 'type' => 'dropdown', 'param_name' => 'type', 'heading' => __( 'Choose a button', 'js_composer' ), 'value' => array( __( 'Share a link', 'js_composer' ) => 'share', __( 'Follow', 'js_composer' ) => 'follow', __( 'Hashtag', 'js_composer' ) => 'hashtag', __( 'Mention', 'js_composer' ) => 'mention', ), 'description' => __( 'Select type of Twitter button.', 'js_composer' ), ), //share type array( 'type' => 'checkbox', 'heading' => __( 'Share url: page URL', 'js_composer' ), 'param_name' => 'share_use_page_url', 'value' => array( __( 'Yes', 'js_composer' ) => 'page_url', ), 'std' => 'page_url', 'dependency' => array( 'element' => 'type', 'value' => 'share', ), 'description' => __( 'Use the current page url to share?', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Share url: custom URL', 'js_composer' ), 'param_name' => 'share_use_custom_url', 'value' => '', 'dependency' => array( 'element' => 'share_use_page_url', 'value_not_equal_to' => 'page_url', ), 'description' => __( 'Enter custom page url which you like to share on twitter?', 'js_composer' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Tweet text: page title', 'js_composer' ), 'param_name' => 'share_text_page_title', 'value' => array( __( 'Yes', 'js_composer' ) => 'page_title', ), 'std' => 'page_title', 'dependency' => array( 'element' => 'type', 'value' => 'share', ), 'description' => __( 'Use the current page title as tweet text?', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Tweet text: custom text', 'js_composer' ), 'param_name' => 'share_text_custom_text', 'value' => '', 'dependency' => array( 'element' => 'share_text_page_title', 'value_not_equal_to' => 'page_title', ), 'description' => __( 'Enter the text to be used as a tweet?', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Via @', 'js_composer' ), 'param_name' => 'share_via', 'value' => '', 'dependency' => array( 'element' => 'type', 'value' => 'share', ), 'description' => __( 'Enter your Twitter username.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Recommend @', 'js_composer' ), 'param_name' => 'share_recommend', 'value' => '', 'dependency' => array( 'element' => 'type', 'value' => 'share', ), 'description' => __( 'Enter the Twitter username to be recommended.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Hashtag #', 'js_composer' ), 'param_name' => 'share_hashtag', 'value' => '', 'dependency' => array( 'element' => 'type', 'value' => 'share', ), 'description' => __( 'Add a comma-separated list of hashtags to a Tweet using the hashtags parameter.', 'js_composer' ), ), //follow type array( 'type' => 'textfield', 'heading' => __( 'User @', 'js_composer' ), 'param_name' => 'follow_user', 'value' => '', 'dependency' => array( 'element' => 'type', 'value' => 'follow', ), 'description' => __( 'Enter username to follow.', 'js_composer' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Show username', 'js_composer' ), 'param_name' => 'follow_show_username', 'value' => array( __( 'Yes', 'js_composer' ) => 'yes', ), 'std' => 'yes', 'dependency' => array( 'element' => 'type', 'value' => 'follow', ), 'description' => __( 'Do you want to show username in button?', 'js_composer' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Show followers count', 'js_composer' ), 'param_name' => 'show_followers_count', 'value' => '', 'dependency' => array( 'element' => 'type', 'value' => 'follow', ), 'description' => __( 'Do you want to displat the follower count in button?', 'js_composer' ), ), //hashtag type array( 'type' => 'textfield', 'heading' => __( 'Hashtag #', 'js_composer' ), 'param_name' => 'hashtag_hash', 'value' => '', 'dependency' => array( 'element' => 'type', 'value' => 'hashtag', ), 'description' => __( 'Add hashtag to a Tweet using the hashtags parameter', 'js_composer' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Tweet text: No default text', 'js_composer' ), 'param_name' => 'hashtag_no_default', 'value' => array( __( 'Yes', 'js_composer' ) => 'yes', ), 'std' => 'yes', 'dependency' => array( 'element' => 'type', 'value' => 'hashtag', ), 'description' => __( 'Set no default text for tweet?', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Tweet text: custom', 'js_composer' ), 'param_name' => 'hashtag_custom_tweet_text', 'value' => '', 'dependency' => array( 'element' => 'hashtag_no_default', 'value_not_equal_to' => 'yes', ), 'description' => __( 'Set custom text for tweet.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Recommend @', 'js_composer' ), 'param_name' => 'hashtag_recommend_1', 'value' => '', 'dependency' => array( 'element' => 'type', 'value' => 'hashtag', ), 'description' => __( 'Enter username to be recommended.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Recommend @', 'js_composer' ), 'param_name' => 'hashtag_recommend_2', 'value' => '', 'dependency' => array( 'element' => 'type', 'value' => 'hashtag', ), 'description' => __( 'Enter username to be recommended.', 'js_composer' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Tweet url: No URL', 'js_composer' ), 'param_name' => 'hashtag_no_url', 'value' => array( __( 'Yes', 'js_composer' ) => 'yes', ), 'std' => 'yes', 'dependency' => array( 'element' => 'type', 'value' => 'hashtag', ), 'description' => __( 'Do you want to set no url to be tweeted?', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Tweet url: custom', 'js_composer' ), 'param_name' => 'hashtag_custom_tweet_url', 'value' => '', 'dependency' => array( 'element' => 'hashtag_no_url', 'value_not_equal_to' => 'yes', ), 'description' => __( 'Enter custom url to be used in the tweet.', 'js_composer' ), ), //mention type array( 'type' => 'textfield', 'heading' => __( 'Tweet to @', 'js_composer' ), 'param_name' => 'mention_tweet_to', 'value' => '', 'dependency' => array( 'element' => 'type', 'value' => 'mention', ), 'description' => __( 'Enter username where you want to send your tweet.', 'js_composer' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Tweet text: No default text', 'js_composer' ), 'param_name' => 'mention_no_default', 'value' => array( __( 'Yes', 'js_composer' ) => 'yes', ), 'std' => 'yes', 'dependency' => array( 'element' => 'type', 'value' => 'mention', ), 'description' => __( 'Set no default text of the tweet?', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Tweet text: custom', 'js_composer' ), 'param_name' => 'mention_custom_tweet_text', 'value' => '', 'dependency' => array( 'element' => 'mention_no_default', 'value_not_equal_to' => 'yes', ), 'description' => __( 'Enter custom text for the tweet.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Recommend @', 'js_composer' ), 'param_name' => 'mention_recommend_1', 'value' => '', 'dependency' => array( 'element' => 'type', 'value' => 'mention', ), 'description' => __( 'Enter username to recommend.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Recommend @', 'js_composer' ), 'param_name' => 'mention_recommend_2', 'value' => '', 'dependency' => array( 'element' => 'type', 'value' => 'mention', ), 'description' => __( 'Enter username to recommend.', 'js_composer' ), ), // general array( 'type' => 'checkbox', 'heading' => __( 'Use large button', 'js_composer' ), 'param_name' => 'large_button', 'value' => '', 'description' => __( 'Do you like to display a larger Tweet button?', 'js_composer' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Opt-out of tailoring Twitter', 'js_composer' ), 'param_name' => 'disable_tailoring', 'value' => '', 'description' => __( 'Tailored suggestions make building a great timeline. Would you like to disable this feature?', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Language', 'js_composer' ), 'param_name' => 'lang', 'value' => array( 'Automatic' => '', 'French - français' => 'fr', 'English' => 'en', 'Arabic - العربية' => 'ar', 'Japanese - 日本語' => 'ja', 'Spanish - Español' => 'es', 'German - Deutsch' => 'de', 'Italian - Italiano' => 'it', 'Indonesian - Bahasa Indonesia' => 'id', 'Portuguese - Português' => 'pt', 'Korean - 한국어' => 'ko', 'Turkish - Türkçe' => 'tr', 'Russian - Русский' => 'ru', 'Dutch - Nederlands' => 'nl', 'Filipino - Filipino' => 'fil', 'Malay - Bahasa Melayu' => 'msa', 'Traditional Chinese - 繁體中文' => 'zh-tw', 'Simplified Chinese - 简体中文' => 'zh-cn', 'Hindi - हिन्दी' => 'hi', 'Norwegian - Norsk' => 'no', 'Swedish - Svenska' => 'sv', 'Finnish - Suomi' => 'fi', 'Danish - Dansk' => 'da', 'Polish - Polski' => 'pl', 'Hungarian - Magyar' => 'hu', 'Farsi - فارسی' => 'fa', 'Hebrew - עִבְרִית' => 'he', 'Urdu - اردو' => 'ur', 'Thai - ภาษาไทย' => 'th', ), 'description' => __( 'Select button display language or allow it to be automatically defined by user preferences.', 'js_composer' ), ), vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), ); PK<\m6(config/social/shortcode-vc-pinterest.phpnu[ __( 'Pinterest', 'js_composer' ), 'base' => 'vc_pinterest', 'icon' => 'icon-wpb-pinterest', 'category' => __( 'Social', 'js_composer' ), 'description' => __( 'Pinterest button', 'js_composer' ), 'params' => array( array( 'type' => 'dropdown', 'heading' => __( 'Button type', 'js_composer' ), 'param_name' => 'type', 'admin_label' => true, 'value' => array( __( 'Horizontal', 'js_composer' ) => 'horizontal', __( 'Vertical', 'js_composer' ) => 'vertical', __( 'No count', 'js_composer' ) => 'none', ), 'description' => __( 'Select button layout.', 'js_composer' ), ), vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), ); PK<\ 8@@config/lean-map.phpnu[ '_self', __( 'New window', 'js_composer' ) => '_blank', ); } function vc_layout_sub_controls() { return array( array( 'link_post', __( 'Link to post', 'js_composer' ), ), array( 'no_link', __( 'No link', 'js_composer' ), ), array( 'link_image', __( 'Link to bigger image', 'js_composer' ), ), ); } function vc_pixel_icons() { return array( array( 'vc_pixel_icon vc_pixel_icon-alert' => __( 'Alert', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-info' => __( 'Info', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-tick' => __( 'Tick', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-explanation' => __( 'Explanation', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-address_book' => __( 'Address book', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-alarm_clock' => __( 'Alarm clock', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-anchor' => __( 'Anchor', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-application_image' => __( 'Application Image', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-arrow' => __( 'Arrow', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-asterisk' => __( 'Asterisk', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-hammer' => __( 'Hammer', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-balloon' => __( 'Balloon', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-balloon_buzz' => __( 'Balloon Buzz', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-balloon_facebook' => __( 'Balloon Facebook', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-balloon_twitter' => __( 'Balloon Twitter', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-battery' => __( 'Battery', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-binocular' => __( 'Binocular', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-document_excel' => __( 'Document Excel', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-document_image' => __( 'Document Image', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-document_music' => __( 'Document Music', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-document_office' => __( 'Document Office', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-document_pdf' => __( 'Document PDF', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-document_powerpoint' => __( 'Document Powerpoint', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-document_word' => __( 'Document Word', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-bookmark' => __( 'Bookmark', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-camcorder' => __( 'Camcorder', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-camera' => __( 'Camera', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-chart' => __( 'Chart', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-chart_pie' => __( 'Chart pie', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-clock' => __( 'Clock', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-fire' => __( 'Fire', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-heart' => __( 'Heart', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-mail' => __( 'Mail', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-play' => __( 'Play', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-shield' => __( 'Shield', 'js_composer' ) ), array( 'vc_pixel_icon vc_pixel_icon-video' => __( 'Video', 'js_composer' ) ), ); } function vc_colors_arr() { return array( __( 'Grey', 'js_composer' ) => 'wpb_button', __( 'Blue', 'js_composer' ) => 'btn-primary', __( 'Turquoise', 'js_composer' ) => 'btn-info', __( 'Green', 'js_composer' ) => 'btn-success', __( 'Orange', 'js_composer' ) => 'btn-warning', __( 'Red', 'js_composer' ) => 'btn-danger', __( 'Black', 'js_composer' ) => 'btn-inverse', ); } // Used in "Button" and "Call to Action" blocks function vc_size_arr() { return array( __( 'Regular', 'js_composer' ) => 'wpb_regularsize', __( 'Large', 'js_composer' ) => 'btn-large', __( 'Small', 'js_composer' ) => 'btn-small', __( 'Mini', 'js_composer' ) => 'btn-mini', ); } function vc_icons_arr() { return array( __( 'None', 'js_composer' ) => 'none', __( 'Address book icon', 'js_composer' ) => 'wpb_address_book', __( 'Alarm clock icon', 'js_composer' ) => 'wpb_alarm_clock', __( 'Anchor icon', 'js_composer' ) => 'wpb_anchor', __( 'Application Image icon', 'js_composer' ) => 'wpb_application_image', __( 'Arrow icon', 'js_composer' ) => 'wpb_arrow', __( 'Asterisk icon', 'js_composer' ) => 'wpb_asterisk', __( 'Hammer icon', 'js_composer' ) => 'wpb_hammer', __( 'Balloon icon', 'js_composer' ) => 'wpb_balloon', __( 'Balloon Buzz icon', 'js_composer' ) => 'wpb_balloon_buzz', __( 'Balloon Facebook icon', 'js_composer' ) => 'wpb_balloon_facebook', __( 'Balloon Twitter icon', 'js_composer' ) => 'wpb_balloon_twitter', __( 'Battery icon', 'js_composer' ) => 'wpb_battery', __( 'Binocular icon', 'js_composer' ) => 'wpb_binocular', __( 'Document Excel icon', 'js_composer' ) => 'wpb_document_excel', __( 'Document Image icon', 'js_composer' ) => 'wpb_document_image', __( 'Document Music icon', 'js_composer' ) => 'wpb_document_music', __( 'Document Office icon', 'js_composer' ) => 'wpb_document_office', __( 'Document PDF icon', 'js_composer' ) => 'wpb_document_pdf', __( 'Document Powerpoint icon', 'js_composer' ) => 'wpb_document_powerpoint', __( 'Document Word icon', 'js_composer' ) => 'wpb_document_word', __( 'Bookmark icon', 'js_composer' ) => 'wpb_bookmark', __( 'Camcorder icon', 'js_composer' ) => 'wpb_camcorder', __( 'Camera icon', 'js_composer' ) => 'wpb_camera', __( 'Chart icon', 'js_composer' ) => 'wpb_chart', __( 'Chart pie icon', 'js_composer' ) => 'wpb_chart_pie', __( 'Clock icon', 'js_composer' ) => 'wpb_clock', __( 'Fire icon', 'js_composer' ) => 'wpb_fire', __( 'Heart icon', 'js_composer' ) => 'wpb_heart', __( 'Mail icon', 'js_composer' ) => 'wpb_mail', __( 'Play icon', 'js_composer' ) => 'wpb_play', __( 'Shield icon', 'js_composer' ) => 'wpb_shield', __( 'Video icon', 'js_composer' ) => 'wpb_video', ); } require_once vc_path_dir( 'CONFIG_DIR', 'grids/vc-grids-functions.php' ); if ( 'vc_get_autocomplete_suggestion' === vc_request_param( 'action' ) || 'vc_edit_form' === vc_post_param( 'action' ) ) { add_filter( 'vc_autocomplete_vc_basic_grid_include_callback', 'vc_include_field_search', 10, 1 ); // Get suggestion(find). Must return an array add_filter( 'vc_autocomplete_vc_basic_grid_include_render', 'vc_include_field_render', 10, 1 ); // Render exact product. Must return an array (label,value) add_filter( 'vc_autocomplete_vc_masonry_grid_include_callback', 'vc_include_field_search', 10, 1 ); // Get suggestion(find). Must return an array add_filter( 'vc_autocomplete_vc_masonry_grid_include_render', 'vc_include_field_render', 10, 1 ); // Render exact product. Must return an array (label,value) // Narrow data taxonomies add_filter( 'vc_autocomplete_vc_basic_grid_taxonomies_callback', 'vc_autocomplete_taxonomies_field_search', 10, 1 ); add_filter( 'vc_autocomplete_vc_basic_grid_taxonomies_render', 'vc_autocomplete_taxonomies_field_render', 10, 1 ); add_filter( 'vc_autocomplete_vc_masonry_grid_taxonomies_callback', 'vc_autocomplete_taxonomies_field_search', 10, 1 ); add_filter( 'vc_autocomplete_vc_masonry_grid_taxonomies_render', 'vc_autocomplete_taxonomies_field_render', 10, 1 ); // Narrow data taxonomies for exclude_filter add_filter( 'vc_autocomplete_vc_basic_grid_exclude_filter_callback', 'vc_autocomplete_taxonomies_field_search', 10, 1 ); add_filter( 'vc_autocomplete_vc_basic_grid_exclude_filter_render', 'vc_autocomplete_taxonomies_field_render', 10, 1 ); add_filter( 'vc_autocomplete_vc_masonry_grid_exclude_filter_callback', 'vc_autocomplete_taxonomies_field_search', 10, 1 ); add_filter( 'vc_autocomplete_vc_masonry_grid_exclude_filter_render', 'vc_autocomplete_taxonomies_field_render', 10, 1 ); add_filter( 'vc_autocomplete_vc_basic_grid_exclude_callback', 'vc_exclude_field_search', 10, 1 ); // Get suggestion(find). Must return an array add_filter( 'vc_autocomplete_vc_basic_grid_exclude_render', 'vc_exclude_field_render', 10, 1 ); // Render exact product. Must return an array (label,value) add_filter( 'vc_autocomplete_vc_masonry_grid_exclude_callback', 'vc_exclude_field_search', 10, 1 ); // Get suggestion(find). Must return an array add_filter( 'vc_autocomplete_vc_masonry_grid_exclude_render', 'vc_exclude_field_render', 10, 1 ); // Render exact product. Must return an array (label,value); } PK<\Y Z)config/tta/shortcode-vc-tta-accordion.phpnu[ __( 'Accordion', 'js_composer' ), 'base' => 'vc_tta_accordion', 'icon' => 'icon-wpb-ui-accordion', 'is_container' => true, 'show_settings_on_create' => false, 'as_parent' => array( 'only' => 'vc_tta_section', ), 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Collapsible content panels', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'param_name' => 'title', 'heading' => __( 'Widget title', 'js_composer' ), 'description' => __( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'style', 'value' => array( __( 'Classic', 'js_composer' ) => 'classic', __( 'Modern', 'js_composer' ) => 'modern', __( 'Flat', 'js_composer' ) => 'flat', __( 'Outline', 'js_composer' ) => 'outline', ), 'heading' => __( 'Style', 'js_composer' ), 'description' => __( 'Select accordion display style.', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'shape', 'value' => array( __( 'Rounded', 'js_composer' ) => 'rounded', __( 'Square', 'js_composer' ) => 'square', __( 'Round', 'js_composer' ) => 'round', ), 'heading' => __( 'Shape', 'js_composer' ), 'description' => __( 'Select accordion shape.', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'color', 'value' => getVcShared( 'colors-dashed' ), 'std' => 'grey', 'heading' => __( 'Color', 'js_composer' ), 'description' => __( 'Select accordion color.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown', ), array( 'type' => 'checkbox', 'param_name' => 'no_fill', 'heading' => __( 'Do not fill content area?', 'js_composer' ), 'description' => __( 'Do not fill content area with color.', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'spacing', 'value' => array( __( 'None', 'js_composer' ) => '', '1px' => '1', '2px' => '2', '3px' => '3', '4px' => '4', '5px' => '5', '10px' => '10', '15px' => '15', '20px' => '20', '25px' => '25', '30px' => '30', '35px' => '35', ), 'heading' => __( 'Spacing', 'js_composer' ), 'description' => __( 'Select accordion spacing.', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'gap', 'value' => array( __( 'None', 'js_composer' ) => '', '1px' => '1', '2px' => '2', '3px' => '3', '4px' => '4', '5px' => '5', '10px' => '10', '15px' => '15', '20px' => '20', '25px' => '25', '30px' => '30', '35px' => '35', ), 'heading' => __( 'Gap', 'js_composer' ), 'description' => __( 'Select accordion gap.', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'c_align', 'value' => array( __( 'Left', 'js_composer' ) => 'left', __( 'Right', 'js_composer' ) => 'right', __( 'Center', 'js_composer' ) => 'center', ), 'heading' => __( 'Alignment', 'js_composer' ), 'description' => __( 'Select accordion section title alignment.', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'autoplay', 'value' => array( __( 'None', 'js_composer' ) => 'none', '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '10' => '10', '20' => '20', '30' => '30', '40' => '40', '50' => '50', '60' => '60', ), 'std' => 'none', 'heading' => __( 'Autoplay', 'js_composer' ), 'description' => __( 'Select auto rotate for accordion in seconds (Note: disabled by default).', 'js_composer' ), ), array( 'type' => 'checkbox', 'param_name' => 'collapsible_all', 'heading' => __( 'Allow collapse all?', 'js_composer' ), 'description' => __( 'Allow collapse all accordion sections.', 'js_composer' ), ), // Control Icons array( 'type' => 'dropdown', 'param_name' => 'c_icon', 'value' => array( __( 'None', 'js_composer' ) => '', __( 'Chevron', 'js_composer' ) => 'chevron', __( 'Plus', 'js_composer' ) => 'plus', __( 'Triangle', 'js_composer' ) => 'triangle', ), 'std' => 'plus', 'heading' => __( 'Icon', 'js_composer' ), 'description' => __( 'Select accordion navigation icon.', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'c_position', 'value' => array( __( 'Left', 'js_composer' ) => 'left', __( 'Right', 'js_composer' ) => 'right', ), 'dependency' => array( 'element' => 'c_icon', 'not_empty' => true, ), 'heading' => __( 'Position', 'js_composer' ), 'description' => __( 'Select accordion navigation icon position.', 'js_composer' ), ), // Control Icons END array( 'type' => 'textfield', 'param_name' => 'active_section', 'heading' => __( 'Active section', 'js_composer' ), 'value' => 1, 'description' => __( 'Enter active section number (Note: to have all sections closed on initial load enter non-existing number).', 'js_composer' ), ), vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), 'js_view' => 'VcBackendTtaAccordionView', 'custom_markup' => '
', 'default_content' => '[vc_tta_section title="' . sprintf( '%s %d', __( 'Section', 'js_composer' ), 1 ) . '"][/vc_tta_section][vc_tta_section title="' . sprintf( '%s %d', __( 'Section', 'js_composer' ), 2 ) . '"][/vc_tta_section]', ); PK<\config/tta/.tta.phpnu[PK<\W(config/tta/shortcode-vc-tta-pageable.phpnu[ __( 'Pageable Container', 'js_composer' ), 'base' => 'vc_tta_pageable', 'icon' => 'icon-wpb-ui-pageable', 'is_container' => true, 'show_settings_on_create' => false, 'as_parent' => array( 'only' => 'vc_tta_section', ), 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Pageable content container', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'param_name' => 'title', 'heading' => __( 'Widget title', 'js_composer' ), 'description' => __( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ), ), array( 'type' => 'hidden', 'param_name' => 'no_fill_content_area', 'std' => true, ), array( 'type' => 'dropdown', 'param_name' => 'autoplay', 'value' => array( __( 'None', 'js_composer' ) => 'none', '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '10' => '10', '20' => '20', '30' => '30', '40' => '40', '50' => '50', '60' => '60', ), 'std' => 'none', 'heading' => __( 'Autoplay', 'js_composer' ), 'description' => __( 'Select auto rotate for pageable in seconds (Note: disabled by default).', 'js_composer' ), ), array( 'type' => 'textfield', 'param_name' => 'active_section', 'heading' => __( 'Active section', 'js_composer' ), 'value' => 1, 'description' => __( 'Enter active section number (Note: to have all sections closed on initial load enter non-existing number).', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'pagination_style', 'value' => array( __( 'None', 'js_composer' ) => '', __( 'Square Dots', 'js_composer' ) => 'outline-square', __( 'Radio Dots', 'js_composer' ) => 'outline-round', __( 'Point Dots', 'js_composer' ) => 'flat-round', __( 'Fill Square Dots', 'js_composer' ) => 'flat-square', __( 'Rounded Fill Square Dots', 'js_composer' ) => 'flat-rounded', ), 'heading' => __( 'Pagination style', 'js_composer' ), 'description' => __( 'Select pagination style.', 'js_composer' ), 'std' => 'outline-round', ), array( 'type' => 'dropdown', 'param_name' => 'pagination_color', 'value' => getVcShared( 'colors-dashed' ), 'heading' => __( 'Pagination color', 'js_composer' ), 'description' => __( 'Select pagination color.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown', 'std' => 'grey', 'dependency' => array( 'element' => 'pagination_style', 'not_empty' => true, ), ), array( 'type' => 'dropdown', 'param_name' => 'tab_position', 'value' => array( __( 'Top', 'js_composer' ) => 'top', __( 'Bottom', 'js_composer' ) => 'bottom', ), 'std' => 'bottom', 'heading' => __( 'Pagination position', 'js_composer' ), 'description' => __( 'Select pageable navigation position.', 'js_composer' ), ), vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), 'js_view' => 'VcBackendTtaPageableView', 'custom_markup' => '
' . '
{{ content }}
', 'default_content' => ' [vc_tta_section title="' . sprintf( '%s %d', __( 'Section', 'js_composer' ), 1 ) . '"][/vc_tta_section] [vc_tta_section title="' . sprintf( '%s %d', __( 'Section', 'js_composer' ), 2 ) . '"][/vc_tta_section] ', 'admin_enqueue_js' => array( vc_asset_url( 'lib/vc_tabs/vc-tabs.min.js' ), ), ); PK<\!+$config/tta/shortcode-vc-tta-tour.phpnu[ __( 'Tour', 'js_composer' ), 'base' => 'vc_tta_tour', 'icon' => 'icon-wpb-ui-tab-content-vertical', 'is_container' => true, 'show_settings_on_create' => false, 'as_parent' => array( 'only' => 'vc_tta_section', ), 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Vertical tabbed content', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'param_name' => 'title', 'heading' => __( 'Widget title', 'js_composer' ), 'description' => __( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'style', 'value' => array( __( 'Classic', 'js_composer' ) => 'classic', __( 'Modern', 'js_composer' ) => 'modern', __( 'Flat', 'js_composer' ) => 'flat', __( 'Outline', 'js_composer' ) => 'outline', ), 'heading' => __( 'Style', 'js_composer' ), 'description' => __( 'Select tour display style.', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'shape', 'value' => array( __( 'Rounded', 'js_composer' ) => 'rounded', __( 'Square', 'js_composer' ) => 'square', __( 'Round', 'js_composer' ) => 'round', ), 'heading' => __( 'Shape', 'js_composer' ), 'description' => __( 'Select tour shape.', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'color', 'heading' => __( 'Color', 'js_composer' ), 'description' => __( 'Select tour color.', 'js_composer' ), 'value' => getVcShared( 'colors-dashed' ), 'std' => 'grey', 'param_holder_class' => 'vc_colored-dropdown', ), array( 'type' => 'checkbox', 'param_name' => 'no_fill_content_area', 'heading' => __( 'Do not fill content area?', 'js_composer' ), 'description' => __( 'Do not fill content area with color.', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'spacing', 'value' => array( __( 'None', 'js_composer' ) => '', '1px' => '1', '2px' => '2', '3px' => '3', '4px' => '4', '5px' => '5', '10px' => '10', '15px' => '15', '20px' => '20', '25px' => '25', '30px' => '30', '35px' => '35', ), 'heading' => __( 'Spacing', 'js_composer' ), 'description' => __( 'Select tour spacing.', 'js_composer' ), 'std' => '1', ), array( 'type' => 'dropdown', 'param_name' => 'gap', 'value' => array( __( 'None', 'js_composer' ) => '', '1px' => '1', '2px' => '2', '3px' => '3', '4px' => '4', '5px' => '5', '10px' => '10', '15px' => '15', '20px' => '20', '25px' => '25', '30px' => '30', '35px' => '35', ), 'heading' => __( 'Gap', 'js_composer' ), 'description' => __( 'Select tour gap.', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'tab_position', 'value' => array( __( 'Left', 'js_composer' ) => 'left', __( 'Right', 'js_composer' ) => 'right', ), 'heading' => __( 'Position', 'js_composer' ), 'description' => __( 'Select tour navigation position.', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'alignment', 'value' => array( __( 'Left', 'js_composer' ) => 'left', __( 'Right', 'js_composer' ) => 'right', __( 'Center', 'js_composer' ) => 'center', ), 'heading' => __( 'Alignment', 'js_composer' ), 'description' => __( 'Select tour section title alignment.', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'controls_size', 'value' => array( __( 'Auto', 'js_composer' ) => '', __( 'Extra large', 'js_composer' ) => 'xl', __( 'Large', 'js_composer' ) => 'lg', __( 'Medium', 'js_composer' ) => 'md', __( 'Small', 'js_composer' ) => 'sm', __( 'Extra small', 'js_composer' ) => 'xs', ), 'heading' => __( 'Navigation width', 'js_composer' ), 'description' => __( 'Select tour navigation width.', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'autoplay', 'value' => array( __( 'None', 'js_composer' ) => 'none', '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '10' => '10', '20' => '20', '30' => '30', '40' => '40', '50' => '50', '60' => '60', ), 'std' => 'none', 'heading' => __( 'Autoplay', 'js_composer' ), 'description' => __( 'Select auto rotate for tour in seconds (Note: disabled by default).', 'js_composer' ), ), array( 'type' => 'textfield', 'param_name' => 'active_section', 'heading' => __( 'Active section', 'js_composer' ), 'value' => 1, 'description' => __( 'Enter active section number (Note: to have all sections closed on initial load enter non-existing number).', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'pagination_style', 'value' => array( __( 'None', 'js_composer' ) => '', __( 'Square Dots', 'js_composer' ) => 'outline-square', __( 'Radio Dots', 'js_composer' ) => 'outline-round', __( 'Point Dots', 'js_composer' ) => 'flat-round', __( 'Fill Square Dots', 'js_composer' ) => 'flat-square', __( 'Rounded Fill Square Dots', 'js_composer' ) => 'flat-rounded', ), 'heading' => __( 'Pagination style', 'js_composer' ), 'description' => __( 'Select pagination style.', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'pagination_color', 'value' => getVcShared( 'colors-dashed' ), 'heading' => __( 'Pagination color', 'js_composer' ), 'description' => __( 'Select pagination color.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown', 'std' => 'grey', 'dependency' => array( 'element' => 'pagination_style', 'not_empty' => true, ), ), vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), 'js_view' => 'VcBackendTtaTourView', 'custom_markup' => '
' . '
{{ content }}
', 'default_content' => ' [vc_tta_section title="' . sprintf( '%s %d', __( 'Section', 'js_composer' ), 1 ) . '"][/vc_tta_section] [vc_tta_section title="' . sprintf( '%s %d', __( 'Section', 'js_composer' ), 2 ) . '"][/vc_tta_section] ', 'admin_enqueue_js' => array( vc_asset_url( 'lib/vc_tabs/vc-tabs.min.js' ), ), ); PK<\ 'config/tta/shortcode-vc-tta-section.phpnu[ 'checkbox', 'param_name' => 'add_icon', 'heading' => __( 'Add icon?', 'js_composer' ), 'description' => __( 'Add icon next to section title.', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'i_position', 'value' => array( __( 'Before title', 'js_composer' ) => 'left', __( 'After title', 'js_composer' ) => 'right', ), 'dependency' => array( 'element' => 'add_icon', 'value' => 'true', ), 'heading' => __( 'Icon position', 'js_composer' ), 'description' => __( 'Select icon position.', 'js_composer' ), ), ); $icon_params = array_merge( $icon_params, (array) vc_map_integrate_shortcode( vc_icon_element_params(), 'i_', '', array( // we need only type, icon_fontawesome, icon_.., NOT color and etc 'include_only_regex' => '/^(type|icon_\w*)/', ), array( 'element' => 'add_icon', 'value' => 'true', ) ) ); } else { $icon_params = array(); } $params = array_merge( array( array( 'type' => 'textfield', 'param_name' => 'title', 'heading' => __( 'Title', 'js_composer' ), 'description' => __( 'Enter section title (Note: you can leave it empty).', 'js_composer' ), ), array( 'type' => 'el_id', 'param_name' => 'tab_id', 'settings' => array( 'auto_generate' => true, ), 'heading' => __( 'Section ID', 'js_composer' ), 'description' => __( 'Enter section ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), ), ), $icon_params, array( array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.', 'js_composer' ), ), ) ); return array( 'name' => __( 'Section', 'js_composer' ), 'base' => 'vc_tta_section', 'icon' => 'icon-wpb-ui-tta-section', 'allowed_container_element' => 'vc_row', 'is_container' => true, 'show_settings_on_create' => false, 'as_child' => array( 'only' => 'vc_tta_tour,vc_tta_tabs,vc_tta_accordion', ), 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Section for Tabs, Tours, Accordions.', 'js_composer' ), 'params' => $params, 'js_view' => 'VcBackendTtaSectionView', 'custom_markup' => '

{{ section_title }}

{{ editor_controls }}
{{ content }}
', 'default_content' => '', ); PK<\e$config/tta/shortcode-vc-tta-tabs.phpnu[ __( 'Tabs', 'js_composer' ), 'base' => 'vc_tta_tabs', 'icon' => 'icon-wpb-ui-tab-content', 'is_container' => true, 'show_settings_on_create' => false, 'as_parent' => array( 'only' => 'vc_tta_section', ), 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Tabbed content', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'param_name' => 'title', 'heading' => __( 'Widget title', 'js_composer' ), 'description' => __( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'style', 'value' => array( __( 'Classic', 'js_composer' ) => 'classic', __( 'Modern', 'js_composer' ) => 'modern', __( 'Flat', 'js_composer' ) => 'flat', __( 'Outline', 'js_composer' ) => 'outline', ), 'heading' => __( 'Style', 'js_composer' ), 'description' => __( 'Select tabs display style.', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'shape', 'value' => array( __( 'Rounded', 'js_composer' ) => 'rounded', __( 'Square', 'js_composer' ) => 'square', __( 'Round', 'js_composer' ) => 'round', ), 'heading' => __( 'Shape', 'js_composer' ), 'description' => __( 'Select tabs shape.', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'color', 'heading' => __( 'Color', 'js_composer' ), 'description' => __( 'Select tabs color.', 'js_composer' ), 'value' => getVcShared( 'colors-dashed' ), 'std' => 'grey', 'param_holder_class' => 'vc_colored-dropdown', ), array( 'type' => 'checkbox', 'param_name' => 'no_fill_content_area', 'heading' => __( 'Do not fill content area?', 'js_composer' ), 'description' => __( 'Do not fill content area with color.', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'spacing', 'value' => array( __( 'None', 'js_composer' ) => '', '1px' => '1', '2px' => '2', '3px' => '3', '4px' => '4', '5px' => '5', '10px' => '10', '15px' => '15', '20px' => '20', '25px' => '25', '30px' => '30', '35px' => '35', ), 'heading' => __( 'Spacing', 'js_composer' ), 'description' => __( 'Select tabs spacing.', 'js_composer' ), 'std' => '1', ), array( 'type' => 'dropdown', 'param_name' => 'gap', 'value' => array( __( 'None', 'js_composer' ) => '', '1px' => '1', '2px' => '2', '3px' => '3', '4px' => '4', '5px' => '5', '10px' => '10', '15px' => '15', '20px' => '20', '25px' => '25', '30px' => '30', '35px' => '35', ), 'heading' => __( 'Gap', 'js_composer' ), 'description' => __( 'Select tabs gap.', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'tab_position', 'value' => array( __( 'Top', 'js_composer' ) => 'top', __( 'Bottom', 'js_composer' ) => 'bottom', ), 'heading' => __( 'Position', 'js_composer' ), 'description' => __( 'Select tabs navigation position.', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'alignment', 'value' => array( __( 'Left', 'js_composer' ) => 'left', __( 'Right', 'js_composer' ) => 'right', __( 'Center', 'js_composer' ) => 'center', ), 'heading' => __( 'Alignment', 'js_composer' ), 'description' => __( 'Select tabs section title alignment.', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'autoplay', 'value' => array( __( 'None', 'js_composer' ) => 'none', '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '10' => '10', '20' => '20', '30' => '30', '40' => '40', '50' => '50', '60' => '60', ), 'std' => 'none', 'heading' => __( 'Autoplay', 'js_composer' ), 'description' => __( 'Select auto rotate for tabs in seconds (Note: disabled by default).', 'js_composer' ), ), array( 'type' => 'textfield', 'param_name' => 'active_section', 'heading' => __( 'Active section', 'js_composer' ), 'value' => 1, 'description' => __( 'Enter active section number (Note: to have all sections closed on initial load enter non-existing number).', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'pagination_style', 'value' => array( __( 'None', 'js_composer' ) => '', __( 'Square Dots', 'js_composer' ) => 'outline-square', __( 'Radio Dots', 'js_composer' ) => 'outline-round', __( 'Point Dots', 'js_composer' ) => 'flat-round', __( 'Fill Square Dots', 'js_composer' ) => 'flat-square', __( 'Rounded Fill Square Dots', 'js_composer' ) => 'flat-rounded', ), 'heading' => __( 'Pagination style', 'js_composer' ), 'description' => __( 'Select pagination style.', 'js_composer' ), ), array( 'type' => 'dropdown', 'param_name' => 'pagination_color', 'value' => getVcShared( 'colors-dashed' ), 'heading' => __( 'Pagination color', 'js_composer' ), 'description' => __( 'Select pagination color.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown', 'std' => 'grey', 'dependency' => array( 'element' => 'pagination_style', 'not_empty' => true, ), ), vc_map_add_css_animation(), array( 'type' => 'el_id', 'heading' => __( 'Element ID', 'js_composer' ), 'param_name' => 'el_id', 'description' => sprintf( __( 'Enter element ID (Note: make sure it is unique and valid according to w3c specification).', 'js_composer' ), 'http://www.w3schools.com/tags/att_global_id.asp' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), 'js_view' => 'VcBackendTtaTabsView', 'custom_markup' => '
' . '
{{ content }}
', 'default_content' => ' [vc_tta_section title="' . sprintf( '%s %d', __( 'Tab', 'js_composer' ), 1 ) . '"][/vc_tta_section] [vc_tta_section title="' . sprintf( '%s %d', __( 'Tab', 'js_composer' ), 2 ) . '"][/vc_tta_section] ', 'admin_enqueue_js' => array( vc_asset_url( 'lib/vc_tabs/vc-tabs.min.js' ), ), ); PK<\ڈ,j,jconfig/templates.phpnu[I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][/vc_column][vc_column width="1/3"][vc_single_image alignment="center" border_color="grey" img_link_target="_self" style="vc_box_outline"][vc_column_text]

I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][/vc_column][vc_column width="1/3"][vc_single_image alignment="center" border_color="grey" img_link_target="_self" style="vc_box_outline"][vc_column_text]

I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column width="1/1"][vc_column_text]I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.[/vc_column_text][/vc_column][/vc_row] CONTENT; vc_add_default_templates( $data ); /** Three image description */ $data = array(); $data['name'] = __( 'Three image description', 'js_composer' ); $data['disabled'] = true; $data['content'] = <<I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][/vc_column][/vc_row] CONTENT; vc_add_default_templates( $data ); /** News list */ $data = array(); $data['name'] = __( 'News list', 'js_composer' ); $data['disabled'] = true; $data['content'] = <<I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column width="1/2"][vc_single_image alignment="center" style="vc_box_circle" border_color="grey" img_link_target="_self"][vc_column_text]

I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][/vc_column][vc_column width="1/2"][vc_single_image alignment="center" style="vc_box_circle" border_color="grey" img_link_target="_self"][vc_column_text]

I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column width="1/3"][vc_single_image alignment="center" style="vc_box_circle" border_color="grey" img_link_target="_self"][vc_column_text]

I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][/vc_column][vc_column width="1/3"][vc_single_image alignment="center" style="vc_box_circle" border_color="grey" img_link_target="_self"][vc_column_text]

I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][/vc_column][vc_column width="1/3"][vc_single_image alignment="center" style="vc_box_circle" border_color="grey" img_link_target="_self"][vc_column_text]

I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][/vc_column][/vc_row] CONTENT; vc_add_default_templates( $data ); /** Description with success message */ $data = array(); $data['name'] = __( 'Description with success message', 'js_composer' ); $data['disabled'] = true; $data['content'] = <<I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][vc_cta h2="Hey! I am first heading line feel free to change me" h2_google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal" h4_google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal" txt_align="center" shape="rounded" style="classic" color="classic" add_button="bottom" btn_title="Try now" btn_style="flat" btn_shape="rounded" btn_color="juicy-pink" btn_size="md" btn_align="center" btn_i_align="left" btn_i_type="fontawesome" btn_i_icon_fontawesome="fa fa-adjust" btn_i_icon_openiconic="vc-oi vc-oi-dial" btn_i_icon_typicons="typcn typcn-adjust-brightness" btn_i_icon_entypo="entypo-icon entypo-icon-note" btn_i_icon_linecons="vc_li vc_li-heart" i_type="fontawesome" i_icon_fontawesome="fa fa-adjust" i_icon_openiconic="vc-oi vc-oi-dial" i_icon_typicons="typcn typcn-adjust-brightness" i_icon_entypo="entypo-icon entypo-icon-note" i_icon_linecons="vc_li vc_li-heart" i_color="blue" i_background_color="grey" i_size="md" use_custom_fonts_h2="" use_custom_fonts_h4="" btn_button_block="" btn_add_icon="" btn_i_icon_pixelicons="vc_pixel_icon vc_pixel_icon-alert" i_on_border=""]I am promo text. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.[/vc_cta][/vc_column_inner][vc_column_inner el_class="" width="1/3"][/vc_column_inner][/vc_row_inner][vc_empty_space height="200px"][/vc_column][/vc_row] CONTENT; vc_add_default_templates( $data ); /** Product description with tabs */ $data = array(); $data['name'] = __( 'Product description with tabs', 'js_composer' ); $data['disabled'] = true; $data['content'] = <<I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][/vc_column][/vc_row][vc_row full_width=""][vc_column width="1/1"][vc_separator color="grey" align="align_center" style="dashed" border_width="" el_width=""][/vc_column][/vc_row][vc_row full_width=""][vc_column width="1/2"][vc_custom_heading text="This is custom heading element with Google Fonts" font_container="tag:h3|text_align:left" google_fonts="font_family:Montserrat%3Aregular%2C700|font_style:400%20regular%3A400%3Anormal"][vc_column_text css_animation=""]I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.[/vc_column_text][vc_btn title="Read more" style="flat" shape="round" color="sandy-brown" size="md" align="inline" i_align="left" i_type="fontawesome" i_icon_fontawesome="fa fa-adjust" i_icon_openiconic="vc-oi vc-oi-dial" i_icon_typicons="typcn typcn-adjust-brightness" i_icon_entypo="entypo-icon entypo-icon-note" i_icon_linecons="vc_li vc_li-heart" button_block="" add_icon="" i_icon_pixelicons="vc_pixel_icon vc_pixel_icon-alert"][/vc_column][vc_column width="1/2"][vc_custom_heading text="This is custom heading element with Google Fonts" font_container="tag:h3|text_align:left" google_fonts="font_family:Montserrat%3Aregular%2C700|font_style:400%20regular%3A400%3Anormal"][vc_column_text css_animation=""]

I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][vc_btn title="Read more" style="flat" shape="round" color="sandy-brown" size="md" align="inline" i_align="left" i_type="fontawesome" i_icon_fontawesome="fa fa-adjust" i_icon_openiconic="vc-oi vc-oi-dial" i_icon_typicons="typcn typcn-adjust-brightness" i_icon_entypo="entypo-icon entypo-icon-note" i_icon_linecons="vc_li vc_li-heart" css_animation="" button_block="" add_icon="" i_icon_pixelicons="vc_pixel_icon vc_pixel_icon-alert"][/vc_column][/vc_row] CONTENT; vc_add_default_templates( $data ); /** Video description */ $data = array(); $data['name'] = __( 'Video with description', 'js_composer' ); $data['disabled'] = true; $data['content'] = <<I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][/vc_column][/vc_row][vc_row full_width=""][vc_column width="1/2"][vc_custom_heading text="This is custom heading element with Google Fonts" font_container="tag:h3|text_align:left" google_fonts="font_family:Montserrat%3Aregular%2C700|font_style:400%20regular%3A400%3Anormal"][vc_column_text css_animation=""]I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.[/vc_column_text][vc_btn title="Read more" style="3d" shape="rounded" color="chino" size="md" align="inline" i_align="left" i_type="fontawesome" i_icon_fontawesome="fa fa-adjust" i_icon_openiconic="vc-oi vc-oi-dial" i_icon_typicons="typcn typcn-adjust-brightness" i_icon_entypo="entypo-icon entypo-icon-note" i_icon_linecons="vc_li vc_li-heart" button_block="" add_icon="" i_icon_pixelicons="vc_pixel_icon vc_pixel_icon-alert"][/vc_column][vc_column width="1/2"][vc_custom_heading text="This is custom heading element with Google Fonts" font_container="tag:h3|text_align:left" google_fonts="font_family:Montserrat%3Aregular%2C700|font_style:400%20regular%3A400%3Anormal"][vc_column_text css_animation=""]I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.[/vc_column_text][vc_btn title="Read more" style="3d" shape="rounded" color="chino" size="md" align="inline" i_align="left" i_type="fontawesome" i_icon_fontawesome="fa fa-adjust" i_icon_openiconic="vc-oi vc-oi-dial" i_icon_typicons="typcn typcn-adjust-brightness" i_icon_entypo="entypo-icon entypo-icon-note" i_icon_linecons="vc_li vc_li-heart" css_animation="" button_block="" add_icon="" i_icon_pixelicons="vc_pixel_icon vc_pixel_icon-alert"][/vc_column][/vc_row][vc_row full_width=""][vc_column width="1/3"][vc_custom_heading text="This is custom heading element with Google Fonts" font_container="tag:h4|text_align:left" google_fonts="font_family:Montserrat%3Aregular%2C700|font_style:400%20regular%3A400%3Anormal"][vc_column_text css_animation=""]I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.[/vc_column_text][vc_btn title="Read more" style="3d" shape="rounded" color="chino" size="md" align="inline" i_align="left" i_type="fontawesome" i_icon_fontawesome="fa fa-adjust" i_icon_openiconic="vc-oi vc-oi-dial" i_icon_typicons="typcn typcn-adjust-brightness" i_icon_entypo="entypo-icon entypo-icon-note" i_icon_linecons="vc_li vc_li-heart" css_animation="" button_block="" add_icon="" i_icon_pixelicons="vc_pixel_icon vc_pixel_icon-alert"][/vc_column][vc_column width="1/3"][vc_custom_heading text="This is custom heading element with Google Fonts" font_container="tag:h4|text_align:left" google_fonts="font_family:Montserrat%3Aregular%2C700|font_style:400%20regular%3A400%3Anormal"][vc_column_text css_animation=""]I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.[/vc_column_text][vc_btn title="Read more" style="3d" shape="rounded" color="chino" size="md" align="inline" i_align="left" i_type="fontawesome" i_icon_fontawesome="fa fa-adjust" i_icon_openiconic="vc-oi vc-oi-dial" i_icon_typicons="typcn typcn-adjust-brightness" i_icon_entypo="entypo-icon entypo-icon-note" i_icon_linecons="vc_li vc_li-heart" css_animation="" button_block="" add_icon="" i_icon_pixelicons="vc_pixel_icon vc_pixel_icon-alert"][/vc_column][vc_column width="1/3"][vc_custom_heading text="This is custom heading element with Google Fonts" font_container="tag:h4|text_align:left" google_fonts="font_family:Montserrat%3Aregular%2C700|font_style:400%20regular%3A400%3Anormal"][vc_column_text css_animation=""]I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.[/vc_column_text][vc_btn title="Read more" style="3d" shape="rounded" color="chino" size="md" align="inline" i_align="left" i_type="fontawesome" i_icon_fontawesome="fa fa-adjust" i_icon_openiconic="vc-oi vc-oi-dial" i_icon_typicons="typcn typcn-adjust-brightness" i_icon_entypo="entypo-icon entypo-icon-note" i_icon_linecons="vc_li vc_li-heart" css_animation="" button_block="" add_icon="" i_icon_pixelicons="vc_pixel_icon vc_pixel_icon-alert"][/vc_column][/vc_row] CONTENT; vc_add_default_templates( $data ); /** Map and Contacts */ $data = array(); $data['name'] = __( 'Map and Contacts', 'js_composer' ); $data['disabled'] = true; $data['content'] = <<I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][/vc_column][/vc_row] CONTENT; vc_add_default_templates( $data ); /** Help section */ $data = array(); $data['name'] = __( 'Help section', 'js_composer' ); $data['disabled'] = true; $data['content'] = <<I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][/vc_column][/vc_row] CONTENT; vc_add_default_templates( $data ); /** Screen description */ $data = array(); $data['name'] = __( 'Screen description', 'js_composer' ); $data['disabled'] = true; $data['content'] = <<I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column width="1/3"][vc_single_image alignment="center" style="vc_box_circle" border_color="grey" img_link_target="_self"][/vc_column][vc_column width="1/3"][vc_single_image alignment="center" style="vc_box_circle" border_color="grey" img_link_target="_self"][/vc_column][vc_column width="1/3"][vc_single_image alignment="center" style="vc_box_circle" border_color="grey" img_link_target="_self"][/vc_column][/vc_row][vc_row][vc_column width="1/1"][vc_column_text]

I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][/vc_column][/vc_row] CONTENT; vc_add_default_templates( $data ); /** FAQ in three columns */ $data = array(); $data['name'] = __( 'FAQ in three columns', 'js_composer' ); $data['disabled'] = true; $data['content'] = <<I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column width="1/1"][vc_separator color="grey" style="double"][/vc_column][/vc_row][vc_row][vc_column width="1/3"][vc_toggle title="First question" open="false"]Toggle content goes here, click edit button to change this text.[/vc_toggle][vc_toggle title="Second question" open="false"]Toggle content goes here, click edit button to change this text.[/vc_toggle][/vc_column][vc_column width="1/3"][vc_toggle title="Third question" open="false"]Toggle content goes here, click edit button to change this text.[/vc_toggle][vc_toggle title="Fourth question" open="false"]Toggle content goes here, click edit button to change this text.[/vc_toggle][/vc_column][vc_column width="1/3"][vc_toggle title="Fifth question" open="false"]Toggle content goes here, click edit button to change this text.[/vc_toggle][vc_toggle title="Sixth question" open="false"]Toggle content goes here, click edit button to change this text.[/vc_toggle][/vc_column][/vc_row] CONTENT; vc_add_default_templates( $data ); /** Centre description */ $data = array(); $data['name'] = __( 'Centre description', 'js_composer' ); $data['disabled'] = true; $data['content'] = <<I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][/vc_column_inner][vc_column_inner width="1/3"][/vc_column_inner][/vc_row_inner][/vc_column][/vc_row] CONTENT; vc_add_default_templates( $data ); /** Description with gallery */ $data = array(); $data['name'] = __( 'Description with gallery', 'js_composer' ); $data['disabled'] = true; $data['content'] = <<I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column width="1/4"][vc_single_image alignment="center" border_color="grey" img_link_target="_self" style="vc_box_rounded"][/vc_column][vc_column width="1/4"][vc_single_image alignment="center" border_color="grey" img_link_target="_self" style="vc_box_rounded"][/vc_column][vc_column width="1/4"][vc_single_image alignment="center" border_color="grey" img_link_target="_self" style="vc_box_rounded"][/vc_column][vc_column width="1/4"][vc_single_image alignment="center" border_color="grey" img_link_target="_self" style="vc_box_rounded"][/vc_column][/vc_row][vc_row][vc_column width="1/4"][vc_single_image alignment="center" border_color="grey" img_link_target="_self" style="vc_box_rounded"][/vc_column][vc_column width="1/4"][vc_single_image alignment="center" border_color="grey" img_link_target="_self" style="vc_box_rounded"][/vc_column][vc_column width="1/4"][vc_single_image alignment="center" border_color="grey" img_link_target="_self" style="vc_box_rounded"][/vc_column][vc_column width="1/4"][vc_single_image alignment="center" border_color="grey" img_link_target="_self" style="vc_box_rounded"][/vc_column][/vc_row][vc_row][vc_column width="1/1"][vc_column_text]

I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][/vc_column][/vc_row] CONTENT; vc_add_default_templates( $data ); /** About with left gallery */ $data = array(); $data['name'] = __( 'About with left gallery', 'js_composer' ); $data['disabled'] = true; $data['content'] = <<I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][/vc_column][vc_column width="1/2"][vc_single_image alignment="center" style="vc_box_rounded" border_color="grey" img_link_target="_self"][/vc_column][vc_column width="1/4"][vc_column_text]I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.[/vc_column_text][/vc_column][/vc_row] CONTENT; vc_add_default_templates( $data ); /** Team members */ $data = array(); $data['name'] = __( 'Team members', 'js_composer' ); $data['disabled'] = true; $data['content'] = <<I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][/vc_column][vc_column width="1/4"][vc_single_image alignment="center" style="vc_box_circle" border_color="grey" img_link_target="_self"][vc_column_text]

I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][/vc_column][vc_column width="1/4"][vc_single_image alignment="center" style="vc_box_circle" border_color="grey" img_link_target="_self"][vc_column_text]

I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][/vc_column][vc_column width="1/4"][vc_single_image alignment="center" style="vc_box_circle" border_color="grey" img_link_target="_self"][vc_column_text]

I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

[/vc_column_text][/vc_column][/vc_row] CONTENT; vc_add_default_templates( $data ); /** Large image with thumbnails */ $data = array(); $data['name'] = __( 'Large image with thumbnails', 'js_composer' ); $data['disabled'] = true; $data['content'] = <<Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin ipsum odio, luctus in vehicula tempor, bibendum at nisl. Proin in facilisis mauris, vitae iaculis felis. Etiam auctor quis tellus quis laoreet. Fusce pretium ex at posuere viverra.

[/vc_column_text][vc_btn title="Read More" style="outline" shape="square" color="black" size="sm" align="center"][/vc_column][vc_column width="1/3"][vc_custom_heading text="Related article title" font_container="tag:h3|text_align:center|color:%232a2a2a" use_theme_fonts="yes"][vc_column_text]

Proin in facilisis mauris, vitae iaculis felis. Etiam auctor quis tellus quis laoreet. Fusce pretium ex at posuere viverra. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean in est nec justo lobortis vestibulum eget vel mauris.

[/vc_column_text][vc_btn title="Read More" style="outline" shape="square" color="black" size="sm" align="center"][/vc_column][vc_column width="1/3"][vc_custom_heading text="Related article title" font_container="tag:h3|text_align:center|color:%232a2a2a" use_theme_fonts="yes"][vc_column_text]

Duis vel diam tortor. Curabitur iaculis porttitor ante, at dictum nibh volutpat sit amet. Nullam eu quam ac lacus posuere lacinia. Ut interdum dolor et quam dictum, at rhoncus magna commodo. Aliquam tempus ex tristique mi ullamcorper tristique. Praesent vitae vehicula mi. Praesent tempus leo elit, non condimentum mauris vulputate non.

[/vc_column_text][vc_btn title="Read More" style="outline" shape="square" color="black" size="sm" align="center"][/vc_column][/vc_row] CONTENT; vc_add_default_templates( $data ); /** Post portfolio */ $data = array(); $data['name'] = __( 'Post portfolio', 'js_composer' ); $data['disabled'] = true; $data['content'] = << IDATx\ TT~fA`@X#*5`Iؚ]ck'iTFcL1ъ!jh"DED@QYe0̎+[v"#H$0455)Px PC0]{ukkk|N i4ɓ'״1Knxi/޽ "JBYZZZriڴlf X}cU׏ɽVnܜSYYNBBB?"kl|[Emkw`+bO>=*8ΚZ1,˾l{ 555j_rrr򲳳KΜ9SYOzW^3BBB 6l _[]]i>~ۜR@xk( ן9m߾}y'O Xb%*@9TŊ+###Ǐ9 ~~~_N!&xREEŔO&M4^ : PBUB0ٌb9@ TVoZjJXl<̜9p,`N[n <6 (2AcRBT;k֬1 bK"zaaR|u^>G&C}77XkfΛ7ol~~~ @xG ,*4oß FV809 }v<(Bc.--Gʕ;wx?ЃU;vX LD ǎp/I6Dw&B_D1N퓞'P|P);h0q=ȟ;qEYY@h`Կ Qyق~CS'9(Xh%Fr|** Ykh#>xڵk}t:U wB(@}_ӧO' }K wAH5"ZMl0Ժ.* 7Nw$''?f/R̝;01p+iw9sD@K^G4HaAqAqI \!2A?|pP1\?S={H7XENщ-[@_cI1***>ۼy[u0?V!;E'Oki```.[ o 8pd"(ܷ$7o$ݢ4 g(>}rmB YkvrRÿ6uTbp o+t2Yrk)5kTvpС"aQ߬,%6y̘1G`޽fq[-_}`?kژX:{7nX]@e#H|PƱ' H}=:eА!CKx ##c%#qB]]] k *}SmCP<<cNN΁YfTsE*EdVT*bїT@رcʕ+k9=ZM///%#AϪ=111)"p$0B,2̀e}$H{xjŋN6-#T9 RUUUVc{7Gٞ^7ݶdɒ7 Uok0SĿVZZZv@ |MooArzabMΝۿhѢݗ/_@v%j9t:?);mMʺiHèhtYHHH(uuhLQQ˗/u{w7bmJ}\$CL4qF駟I R@Oছ9k&&ڐt$l|PZZZ#@[[[/^?""0PSCLcq|$"=7Hee*\ˆe%@igݺuA㙎, 0ADG2eʔq5D-͛7/+9hkɦ#GS&04R{ʁh{ ~%kD l|'2")v-??ٳIfD(~q/ʋ&J-CEYZԦ Ln#=,Yԟr{16H| mmՋP2GSڸ->>%c߄3P^[~EP({ ?}J5"}J>rGnK O-[eJOl&V~1:th~E /e۶m1H kB011CM6]- LPʃqЁ֪4撔H:`hfFSZOa:v2nQdO#iZ(wiorĠ"J0 V"؁A)))mcb@QVٞ.ƻ]Ç X@x36l0q#[rK}I|KJ2ZP%&dh-PS˲zh].8PJRB~7 G3AL\v(hC^|58!? B"⾍}5,Y.x?Z#j"UJ ح4cǎ;&&\)֔-_baD&;\O5j\ppp`kiګKѣGU`1ٔlՋqo&n~QQQàuuuKdL&sLxbzd#XM%ϫwUhF#ZY^? ~+&`mUݶi8@![;Xf %S@raZ'୬IENDB`PK<\~!%assets/lib/owl-carousel2-dist/LICENSEnu[Copyright (c) 2014 Owl Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. PK<\01||t.items.merge,o[s]=n?e*i:this._items[s].width();this._widths=o}},{filter:["items","settings"],run:function(){var e=[],i=this._items,s=this.settings,n=Math.max(2*s.items,4),o=2*Math.ceil(i.length/2),r=s.loop&&i.length?s.rewind?n:Math.max(n,o):0,a="",h="";for(r/=2;r--;)e.push(this.normalize(e.length/2,!0)),a+=i[e[e.length-1]][0].outerHTML,e.push(this.normalize(i.length-1-(e.length-1)/2,!0)),h=i[e[e.length-1]][0].outerHTML+h;this._clones=e,t(a).addClass("cloned").appendTo(this.$stage),t(h).addClass("cloned").prependTo(this.$stage)}},{filter:["width","items","settings"],run:function(){for(var t=this.settings.rtl?1:-1,e=this._clones.length+this._items.length,i=-1,s=0,n=0,o=[];++ii;i++)t=this._coordinates[i-1]||0,e=Math.abs(this._coordinates[i])+o*n,(this.op(t,"<=",r)&&this.op(t,">",a)||this.op(e,"<",r)&&this.op(e,">",a))&&h.push(i);this.$stage.children(".active").removeClass("active"),this.$stage.children(":eq("+h.join("), :eq(")+")").addClass("active"),this.settings.center&&(this.$stage.children(".center").removeClass("center"),this.$stage.children().eq(this.current()).addClass("center"))}}],n.prototype.initialize=function(){if(this.enter("initializing"),this.trigger("initialize"),this.$element.toggleClass(this.settings.rtlClass,this.settings.rtl),this.settings.autoWidth&&!this.is("pre-loading")){var e,i,n;e=this.$element.find("img"),i=this.settings.nestedItemSelector?"."+this.settings.nestedItemSelector:s,n=this.$element.children(i).width(),e.length&&0>=n&&this.preloadAutoWidthImages(e)}this.$element.addClass(this.options.loadingClass),this.$stage=t("<"+this.settings.stageElement+' class="'+this.settings.stageClass+'"/>').wrap('
'),this.$element.append(this.$stage.parent()),this.replace(this.$element.children().not(this.$stage.parent())),this.$element.is(":visible")?this.refresh():this.invalidate("width"),this.$element.removeClass(this.options.loadingClass).addClass(this.options.loadedClass),this.registerEventHandlers(),this.leave("initializing"),this.trigger("initialized")},n.prototype.setup=function(){var e=this.viewport(),i=this.options.responsive,s=-1,n=null;i?(t.each(i,function(t){e>=t&&t>s&&(s=Number(t))}),n=t.extend({},this.options,i[s]),delete n.responsive,n.responsiveClass&&this.$element.attr("class",this.$element.attr("class").replace(new RegExp("("+this.options.responsiveClass+"-)\\S+\\s","g"),"$1"+s))):n=t.extend({},this.options),(null===this.settings||this._breakpoint!==s)&&(this.trigger("change",{property:{name:"settings",value:n}}),this._breakpoint=s,this.settings=n,this.invalidate("settings"),this.trigger("changed",{property:{name:"settings",value:this.settings}}))},n.prototype.optionsLogic=function(){this.settings.autoWidth&&(this.settings.stagePadding=!1,this.settings.merge=!1)},n.prototype.prepare=function(e){var i=this.trigger("prepare",{content:e});return i.data||(i.data=t("<"+this.settings.itemElement+"/>").addClass(this.options.itemClass).append(e)),this.trigger("prepared",{content:i.data}),i.data},n.prototype.update=function(){for(var e=0,i=this._pipe.length,s=t.proxy(function(t){return this[t]},this._invalidated),n={};i>e;)(this._invalidated.all||t.grep(this._pipe[e].filter,s).length>0)&&this._pipe[e].run(n),e++;this._invalidated={},!this.is("valid")&&this.enter("valid")},n.prototype.width=function(t){switch(t=t||n.Width.Default){case n.Width.Inner:case n.Width.Outer:return this._width;default:return this._width-2*this.settings.stagePadding+this.settings.margin}},n.prototype.refresh=function(){this.enter("refreshing"),this.trigger("refresh"),this.setup(),this.optionsLogic(),this.$element.addClass(this.options.refreshClass),this.update(),this.$element.removeClass(this.options.refreshClass),this.leave("refreshing"),this.trigger("refreshed")},n.prototype.onThrottledResize=function(){e.clearTimeout(this.resizeTimer),this.resizeTimer=e.setTimeout(this._handlers.onResize,this.settings.responsiveRefreshRate)},n.prototype.onResize=function(){return this._items.length?this._width===this.$element.width()?!1:this.$element.is(":visible")?(this.enter("resizing"),this.trigger("resize").isDefaultPrevented()?(this.leave("resizing"),!1):(this.invalidate("width"),this.refresh(),this.leave("resizing"),void this.trigger("resized"))):!1:!1},n.prototype.registerEventHandlers=function(){t.support.transition&&this.$stage.on(t.support.transition.end+".owl.core",t.proxy(this.onTransitionEnd,this)),this.settings.responsive!==!1&&this.on(e,"resize",this._handlers.onThrottledResize),this.settings.mouseDrag&&(this.$element.addClass(this.options.dragClass),this.$stage.on("mousedown.owl.core",t.proxy(this.onDragStart,this)),this.$stage.on("dragstart.owl.core selectstart.owl.core",function(){return!1})),this.settings.touchDrag&&(this.$stage.on("touchstart.owl.core",t.proxy(this.onDragStart,this)),this.$stage.on("touchcancel.owl.core",t.proxy(this.onDragEnd,this)))},n.prototype.onDragStart=function(e){var s=null;3!==e.which&&(t.support.transform?(s=this.$stage.css("transform").replace(/.*\(|\)| /g,"").split(","),s={x:s[16===s.length?12:4],y:s[16===s.length?13:5]}):(s=this.$stage.position(),s={x:this.settings.rtl?s.left+this.$stage.width()-this.width()+this.settings.margin:s.left,y:s.top}),this.is("animating")&&(t.support.transform?this.animate(s.x):this.$stage.stop(),this.invalidate("position")),this.$element.toggleClass(this.options.grabClass,"mousedown"===e.type),this.speed(0),this._drag.time=(new Date).getTime(),this._drag.target=t(e.target),this._drag.stage.start=s,this._drag.stage.current=s,this._drag.pointer=this.pointer(e),t(i).on("mouseup.owl.core touchend.owl.core",t.proxy(this.onDragEnd,this)),t(i).one("mousemove.owl.core touchmove.owl.core",t.proxy(function(e){var s=this.difference(this._drag.pointer,this.pointer(e));t(i).on("mousemove.owl.core touchmove.owl.core",t.proxy(this.onDragMove,this)),Math.abs(s.x)0^this.settings.rtl?"left":"right";t(i).off(".owl.core"),this.$element.removeClass(this.options.grabClass),(0!==s.x&&this.is("dragging")||!this.is("valid"))&&(this.speed(this.settings.dragEndSpeed||this.settings.smartSpeed),this.current(this.closest(n.x,0!==s.x?o:this._drag.direction)),this.invalidate("position"),this.update(),this._drag.direction=o,(Math.abs(s.x)>3||(new Date).getTime()-this._drag.time>300)&&this._drag.target.one("click.owl.core",function(){return!1})),this.is("dragging")&&(this.leave("dragging"),this.trigger("dragged"))},n.prototype.closest=function(e,i){var s=-1,n=30,o=this.width(),r=this.coordinates();return this.settings.freeDrag||t.each(r,t.proxy(function(t,a){return e>a-n&&a+n>e?s=t:this.op(e,"<",a)&&this.op(e,">",r[t+1]||a-o)&&(s="left"===i?t+1:t),-1===s},this)),this.settings.loop||(this.op(e,">",r[this.minimum()])?s=e=this.minimum():this.op(e,"<",r[this.maximum()])&&(s=e=this.maximum())),s},n.prototype.animate=function(e){var i=this.speed()>0;this.is("animating")&&this.onTransitionEnd(),i&&(this.enter("animating"),this.trigger("translate")),t.support.transform3d&&t.support.transition?this.$stage.css({transform:"translate3d("+e+"px,0px,0px)",transition:this.speed()/1e3+"s"}):i?this.$stage.animate({left:e+"px"},this.speed(),this.settings.fallbackEasing,t.proxy(this.onTransitionEnd,this)):this.$stage.css({left:e+"px"})},n.prototype.is=function(t){return this._states.current[t]&&this._states.current[t]>0},n.prototype.current=function(t){if(t===s)return this._current;if(0===this._items.length)return s;if(t=this.normalize(t),this._current!==t){var e=this.trigger("change",{property:{name:"position",value:t}});e.data!==s&&(t=this.normalize(e.data)),this._current=t,this.invalidate("position"),this.trigger("changed",{property:{name:"position",value:this._current}})}return this._current},n.prototype.invalidate=function(e){return"string"===t.type(e)&&(this._invalidated[e]=!0,this.is("valid")&&this.leave("valid")),t.map(this._invalidated,function(t,e){return e})},n.prototype.reset=function(t){t=this.normalize(t),t!==s&&(this._speed=0,this._current=t,this.suppress(["translate","translated"]),this.animate(this.coordinates(t)),this.release(["translate","translated"]))},n.prototype.normalize=function(e,i){var n=this._items.length,o=i?0:this._clones.length;return!t.isNumeric(e)||1>n?e=s:(0>e||e>=n+o)&&(e=((e-o/2)%n+n)%n+o/2),e},n.prototype.relative=function(t){return t-=this._clones.length/2,this.normalize(t,!0)},n.prototype.maximum=function(t){var e,i=this.settings,s=this._coordinates.length,n=Math.abs(this._coordinates[s-1])-this._width,o=-1;if(i.loop)s=this._clones.length/2+this._items.length-1;else if(i.autoWidth||i.merge)for(;s-o>1;)Math.abs(this._coordinates[e=s+o>>1])0)-(0>n),r=this._items.length,a=this.minimum(),h=this.maximum();this.settings.loop?(!this.settings.rewind&&Math.abs(n)>r/2&&(n+=-1*o*r),t=i+n,s=((t-a)%r+r)%r+a,s!==t&&h>=s-n&&s-n>0&&(i=s-n,t=s,this.reset(i))):this.settings.rewind?(h+=1,t=(t%h+h)%h):t=Math.max(a,Math.min(h,t)),this.speed(this.duration(i,t,e)),this.current(t),this.$element.is(":visible")&&this.update()},n.prototype.next=function(t){t=t||!1,this.to(this.relative(this.current())+1,t)},n.prototype.prev=function(t){t=t||!1,this.to(this.relative(this.current())-1,t)},n.prototype.onTransitionEnd=function(t){return t!==s&&(t.stopPropagation(),(t.target||t.srcElement||t.originalTarget)!==this.$stage.get(0))?!1:(this.leave("animating"),void this.trigger("translated"))},n.prototype.viewport=function(){var s;if(this.options.responsiveBaseElement!==e)s=t(this.options.responsiveBaseElement).width();else if(e.innerWidth)s=e.innerWidth;else{if(!i.documentElement||!i.documentElement.clientWidth)throw"Can not detect viewport width.";s=i.documentElement.clientWidth}return s},n.prototype.replace=function(e){this.$stage.empty(),this._items=[],e&&(e=e instanceof jQuery?e:t(e)),this.settings.nestedItemSelector&&(e=e.find("."+this.settings.nestedItemSelector)),e.filter(function(){return 1===this.nodeType}).each(t.proxy(function(t,e){e=this.prepare(e),this.$stage.append(e),this._items.push(e),this._mergers.push(1*e.find("[data-merge]").andSelf("[data-merge]").attr("data-merge")||1)},this)),this.reset(t.isNumeric(this.settings.startPosition)?this.settings.startPosition:0),this.invalidate("items")},n.prototype.add=function(e,i){var n=this.relative(this._current);i=i===s?this._items.length:this.normalize(i,!0),e=e instanceof jQuery?e:t(e),this.trigger("add",{content:e,position:i}),e=this.prepare(e),0===this._items.length||i===this._items.length?(0===this._items.length&&this.$stage.append(e),0!==this._items.length&&this._items[i-1].after(e),this._items.push(e),this._mergers.push(1*e.find("[data-merge]").andSelf("[data-merge]").attr("data-merge")||1)):(this._items[i].before(e),this._items.splice(i,0,e),this._mergers.splice(i,0,1*e.find("[data-merge]").andSelf("[data-merge]").attr("data-merge")||1)),this._items[n]&&this.reset(this._items[n].index()),this.invalidate("items"),this.trigger("added",{content:e,position:i})},n.prototype.remove=function(t){t=this.normalize(t,!0),t!==s&&(this.trigger("remove",{content:this._items[t],position:t}),this._items[t].remove(),this._items.splice(t,1),this._mergers.splice(t,1),this.invalidate("items"),this.trigger("removed",{content:null,position:t}))},n.prototype.preloadAutoWidthImages=function(e){e.each(t.proxy(function(e,i){this.enter("pre-loading"),i=t(i),t(new Image).one("load",t.proxy(function(t){i.attr("src",t.target.src),i.css("opacity",1),this.leave("pre-loading"),!this.is("pre-loading")&&!this.is("initializing")&&this.refresh()},this)).attr("src",i.attr("src")||i.attr("data-src")||i.attr("data-src-retina"))},this))},n.prototype.destroy=function(){this.$element.off(".owl.core"),this.$stage.off(".owl.core"),t(i).off(".owl.core"),this.settings.responsive!==!1&&(e.clearTimeout(this.resizeTimer),this.off(e,"resize",this._handlers.onThrottledResize));for(var s in this._plugins)this._plugins[s].destroy();this.$stage.children(".cloned").remove(),this.$stage.unwrap(),this.$stage.children().contents().unwrap(),this.$stage.children().unwrap(),this.$element.removeClass(this.options.refreshClass).removeClass(this.options.loadingClass).removeClass(this.options.loadedClass).removeClass(this.options.rtlClass).removeClass(this.options.dragClass).removeClass(this.options.grabClass).attr("class",this.$element.attr("class").replace(new RegExp(this.options.responsiveClass+"-\\S+\\s","g"),"")).removeData("owl.vccarousel")},n.prototype.op=function(t,e,i){var s=this.settings.rtl;switch(e){case"<":return s?t>i:i>t;case">":return s?i>t:t>i;case">=":return s?i>=t:t>=i;case"<=":return s?t>=i:i>=t}},n.prototype.on=function(t,e,i,s){t.addEventListener?t.addEventListener(e,i,s):t.attachEvent&&t.attachEvent("on"+e,i)},n.prototype.off=function(t,e,i,s){t.removeEventListener?t.removeEventListener(e,i,s):t.detachEvent&&t.detachEvent("on"+e,i)},n.prototype.trigger=function(e,i,s,o,r){var a={item:{count:this._items.length,index:this.current()}},h=t.camelCase(t.grep(["on",e,s],function(t){return t}).join("-").toLowerCase()),l=t.Event([e,"owl",s||"vccarousel"].join(".").toLowerCase(),t.extend({relatedTarget:this},a,i));return this._supress[e]||(t.each(this._plugins,function(t,e){e.onTrigger&&e.onTrigger(l)}),this.register({type:n.Type.Event,name:e}),this.$element.trigger(l),this.settings&&"function"==typeof this.settings[h]&&this.settings[h].call(this,l)),l},n.prototype.enter=function(e){t.each([e].concat(this._states.tags[e]||[]),t.proxy(function(t,e){this._states.current[e]===s&&(this._states.current[e]=0),this._states.current[e]++},this))},n.prototype.leave=function(e){t.each([e].concat(this._states.tags[e]||[]),t.proxy(function(t,e){this._states.current[e]--},this))},n.prototype.register=function(e){if(e.type===n.Type.Event){if(t.event.special[e.name]||(t.event.special[e.name]={}),!t.event.special[e.name].owl){var i=t.event.special[e.name]._default;t.event.special[e.name]._default=function(t){return!i||!i.apply||t.namespace&&-1!==t.namespace.indexOf("owl")?t.namespace&&t.namespace.indexOf("owl")>-1:i.apply(this,arguments)},t.event.special[e.name].owl=!0}}else e.type===n.Type.State&&(this._states.tags[e.name]?this._states.tags[e.name]=this._states.tags[e.name].concat(e.tags):this._states.tags[e.name]=e.tags,this._states.tags[e.name]=t.grep(this._states.tags[e.name],t.proxy(function(i,s){return t.inArray(i,this._states.tags[e.name])===s},this)))},n.prototype.suppress=function(e){t.each(e,t.proxy(function(t,e){this._supress[e]=!0},this))},n.prototype.release=function(e){t.each(e,t.proxy(function(t,e){delete this._supress[e]},this))},n.prototype.pointer=function(t){var i={x:null,y:null};return t=t.originalEvent||t||e.event,t=t.touches&&t.touches.length?t.touches[0]:t.changedTouches&&t.changedTouches.length?t.changedTouches[0]:t,t.pageX?(i.x=t.pageX,i.y=t.pageY):(i.x=t.clientX,i.y=t.clientY),i},n.prototype.difference=function(t,e){return{x:t.x-e.x,y:t.y-e.y}},t.fn.vcOwlCarousel=function(e){var i=Array.prototype.slice.call(arguments,1);return this.each(function(){var s=t(this),o=s.data("owl.vccarousel");o||(o=new n(this,"object"==typeof e&&e),s.data("owl.vccarousel",o),t.each(["next","prev","to","destroy","refresh","replace","add","remove"],function(e,i){o.register({type:n.Type.Event,name:i}),o.$element.on(i+".owl.vccarousel.core",t.proxy(function(t){t.namespace&&t.relatedTarget!==this&&(this.suppress([i]),o[i].apply(this,[].slice.call(arguments,1)),this.release([i]))},o))})),"string"==typeof e&&"_"!==e.charAt(0)&&o[e].apply(o,i)})},t.fn.vcOwlCarousel.Constructor=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){var n=function(e){this._core=e,this._interval=null,this._visible=null,this._handlers={"initialized.owl.vccarousel":t.proxy(function(t){t.namespace&&this._core.settings.autoRefresh&&this.watch()},this)},this._core.options=t.extend({},n.Defaults,this._core.options),this._core.$element.on(this._handlers)};n.Defaults={autoRefresh:!0,autoRefreshInterval:500},n.prototype.watch=function(){this._interval||(this._visible=this._core.$element.is(":visible"),this._interval=e.setInterval(t.proxy(this.refresh,this),this._core.settings.autoRefreshInterval))},n.prototype.refresh=function(){this._core.$element.is(":visible")!==this._visible&&(this._visible=!this._visible,this._core.$element.toggleClass("owl-hidden",!this._visible),this._visible&&this._core.invalidate("width")&&this._core.refresh())},n.prototype.destroy=function(){var t,i;e.clearInterval(this._interval);for(t in this._handlers)this._core.$element.off(t,this._handlers[t]);for(i in Object.getOwnPropertyNames(this))"function"!=typeof this[i]&&(this[i]=null)},t.fn.vcOwlCarousel.Constructor.Plugins.AutoRefresh=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){var n=function(e){this._core=e,this._loaded=[],this._handlers={"initialized.owl.vccarousel change.owl.vccarousel":t.proxy(function(e){if(e.namespace&&this._core.settings&&this._core.settings.lazyLoad&&(e.property&&"position"==e.property.name||"initialized"==e.type))for(var i=this._core.settings,s=i.center&&Math.ceil(i.items/2)||i.items,n=i.center&&-1*s||0,o=(e.property&&e.property.value||this._core.current())+n,r=this._core.clones().length,a=t.proxy(function(t,e){this.load(e)},this);n++-1||(n.each(t.proxy(function(i,s){var n,o=t(s),r=e.devicePixelRatio>1&&o.attr("data-src-retina")||o.attr("data-src");this._core.trigger("load",{element:o,url:r},"lazy"),o.is("img")?o.one("load.owl.lazy",t.proxy(function(){o.css("opacity",1),this._core.trigger("loaded",{element:o,url:r},"lazy")},this)).attr("src",r):(n=new Image,n.onload=t.proxy(function(){o.css({"background-image":"url("+r+")",opacity:"1"}),this._core.trigger("loaded",{element:o,url:r},"lazy")},this),n.src=r)},this)),this._loaded.push(s.get(0)))},n.prototype.destroy=function(){var t,e;for(t in this.handlers)this._core.$element.off(t,this.handlers[t]);for(e in Object.getOwnPropertyNames(this))"function"!=typeof this[e]&&(this[e]=null)},t.fn.vcOwlCarousel.Constructor.Plugins.Lazy=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){var n=function(e){this._core=e,this._handlers={"initialized.owl.vccarousel refreshed.owl.vccarousel":t.proxy(function(t){t.namespace&&this._core.settings.autoHeight&&this.update()},this),"changed.owl.vccarousel":t.proxy(function(t){t.namespace&&this._core.settings.autoHeight&&"position"==t.property.name&&this.update()},this),"loaded.owl.lazy":t.proxy(function(t){t.namespace&&this._core.settings.autoHeight&&t.element.closest("."+this._core.settings.itemClass).index()===this._core.current()&&this.update()},this)},this._core.options=t.extend({},n.Defaults,this._core.options),this._core.$element.on(this._handlers)};n.Defaults={autoHeight:!1,autoHeightClass:"owl-height"},n.prototype.update=function(){this._core.$stage.parent().height(this._core.$stage.children().eq(this._core.current()).height()).addClass(this._core.settings.autoHeightClass)},n.prototype.destroy=function(){var t,e;for(t in this._handlers)this._core.$element.off(t,this._handlers[t]);for(e in Object.getOwnPropertyNames(this))"function"!=typeof this[e]&&(this[e]=null)},t.fn.vcOwlCarousel.Constructor.Plugins.AutoHeight=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){var n=function(e){this._core=e,this._videos={},this._playing=null,this._handlers={"initialized.owl.vccarousel":t.proxy(function(t){t.namespace&&this._core.register({type:"state",name:"playing",tags:["interacting"]})},this),"resize.owl.vccarousel":t.proxy(function(t){t.namespace&&this._core.settings.video&&this.isInFullScreen()&&t.preventDefault()},this),"refreshed.owl.vccarousel":t.proxy(function(t){t.namespace&&this._core.is("resizing")&&this._core.$stage.find(".cloned .owl-video-frame").remove()},this),"changed.owl.vccarousel":t.proxy(function(t){t.namespace&&"position"===t.property.name&&this._playing&&this.stop()},this),"prepared.owl.vccarousel":t.proxy(function(e){if(e.namespace){var i=t(e.content).find(".owl-video");i.length&&(i.css("display","none"),this.fetch(i,t(e.content)))}},this)},this._core.options=t.extend({},n.Defaults,this._core.options),this._core.$element.on(this._handlers),this._core.$element.on("click.owl.video",".owl-video-play-icon",t.proxy(function(t){this.play(t)},this))};n.Defaults={video:!1,videoHeight:!1,videoWidth:!1},n.prototype.fetch=function(t,e){var i=t.attr("data-vimeo-id")?"vimeo":"youtube",s=t.attr("data-vimeo-id")||t.attr("data-youtube-id"),n=t.attr("data-width")||this._core.settings.videoWidth,o=t.attr("data-height")||this._core.settings.videoHeight,r=t.attr("href");if(!r)throw new Error("Missing video URL.");if(s=r.match(/(http:|https:|)\/\/(player.|www.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com))\/(video\/|embed\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/),s[3].indexOf("youtu")>-1)i="youtube";else{if(!(s[3].indexOf("vimeo")>-1))throw new Error("Video URL not supported.");i="vimeo"}s=s[6],this._videos[r]={type:i,id:s,width:n,height:o},e.attr("data-video",r),this.thumbnail(t,this._videos[r])},n.prototype.thumbnail=function(e,i){var s,n,o,r=i.width&&i.height?'style="width:'+i.width+"px;height:"+i.height+'px;"':"",a=e.find("img"),h="src",l="",c=this._core.settings,p=function(t){n='
',s=c.lazyLoad?'
':'
',e.after(s),e.after(n)};return e.wrap('
"),this._core.settings.lazyLoad&&(h="data-src",l="owl-lazy"),a.length?(p(a.attr(h)),a.remove(),!1):void("youtube"===i.type?(o="http://img.youtube.com/vi/"+i.id+"/hqdefault.jpg",p(o)):"vimeo"===i.type&&t.ajax({type:"GET",url:"http://vimeo.com/api/v2/video/"+i.id+".json",jsonp:"callback",dataType:"jsonp",success:function(t){o=t[0].thumbnail_large,p(o)}}))},n.prototype.stop=function(){this._core.trigger("stop",null,"video"),this._playing.find(".owl-video-frame").remove(),this._playing.removeClass("owl-video-playing"),this._playing=null,this._core.leave("playing"),this._core.trigger("stopped",null,"video")},n.prototype.play=function(e){var i,s=t(e.target),n=s.closest("."+this._core.settings.itemClass),o=this._videos[n.attr("data-video")],r=o.width||"100%",a=o.height||this._core.$stage.height();this._playing||(this._core.enter("playing"),this._core.trigger("play",null,"video"),n=this._core.items(this._core.relative(n.index())),this._core.reset(n.index()),"youtube"===o.type?i='':"vimeo"===o.type&&(i=''),t('
'+i+"
").insertAfter(n.find(".owl-video")),this._playing=n.addClass("owl-video-playing"))},n.prototype.isInFullScreen=function(){var e=i.fullscreenElement||i.mozFullScreenElement||i.webkitFullscreenElement;return e&&t(e).parent().hasClass("owl-video-frame")},n.prototype.destroy=function(){var t,e;this._core.$element.off("click.owl.video");for(t in this._handlers)this._core.$element.off(t,this._handlers[t]);for(e in Object.getOwnPropertyNames(this))"function"!=typeof this[e]&&(this[e]=null)},t.fn.vcOwlCarousel.Constructor.Plugins.Video=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){var n=function(e){this.core=e,this.core.options=t.extend({},n.Defaults,this.core.options),this.swapping=!0,this.previous=s,this.next=s,this.handlers={"change.owl.vccarousel":t.proxy(function(t){t.namespace&&"position"==t.property.name&&(this.previous=this.core.current(),this.next=t.property.value)},this),"drag.owl.vccarousel dragged.owl.vccarousel translated.owl.vccarousel":t.proxy(function(t){t.namespace&&(this.swapping="translated"==t.type)},this),"translate.owl.vccarousel":t.proxy(function(t){t.namespace&&this.swapping&&(this.core.options.animateOut||this.core.options.animateIn)&&this.swap()},this)},this.core.$element.on(this.handlers)};n.Defaults={animateOut:!1,animateIn:!1},n.prototype.swap=function(){if(1===this.core.settings.items&&t.support.animation&&t.support.transition){this.core.speed(0);var e,i=t.proxy(this.clear,this),s=this.core.$stage.children().eq(this.previous),n=this.core.$stage.children().eq(this.next),o=this.core.settings.animateIn,r=this.core.settings.animateOut;this.core.current()!==this.previous&&(r&&(e=this.core.coordinates(this.previous)-this.core.coordinates(this.next),s.one(t.support.animation.end,i).css({left:e+"px"}).addClass("animated owl-animated-out").addClass(r)),o&&n.one(t.support.animation.end,i).addClass("animated owl-animated-in").addClass(o))}},n.prototype.clear=function(e){t(e.target).css({left:""}).removeClass("animated owl-animated-out owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut),this.core.onTransitionEnd()},n.prototype.destroy=function(){var t,e;for(t in this.handlers)this.core.$element.off(t,this.handlers[t]);for(e in Object.getOwnPropertyNames(this))"function"!=typeof this[e]&&(this[e]=null)},t.fn.vcOwlCarousel.Constructor.Plugins.Animate=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){var n=function(e){this._core=e,this._interval=null,this._paused=!1,this._handlers={"changed.owl.vccarousel":t.proxy(function(t){t.namespace&&"settings"===t.property.name&&(this._core.settings.autoplay?this.play():this.stop())},this),"initialized.owl.vccarousel":t.proxy(function(t){t.namespace&&this._core.settings.autoplay&&this.play()},this),"play.owl.autoplay":t.proxy(function(t,e,i){t.namespace&&this.play(e,i)},this),"stop.owl.autoplay":t.proxy(function(t){t.namespace&&this.stop()},this),"mouseover.owl.autoplay":t.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.pause()},this),"mouseleave.owl.autoplay":t.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.play(); },this)},this._core.$element.on(this._handlers),this._core.options=t.extend({},n.Defaults,this._core.options)};n.Defaults={autoplay:!1,autoplayTimeout:5e3,autoplayHoverPause:!1,autoplaySpeed:!1},n.prototype.play=function(s,n){this._paused=!1,this._core.is("rotating")||(this._core.enter("rotating"),this._interval=e.setInterval(t.proxy(function(){this._paused||this._core.is("busy")||this._core.is("interacting")||i.hidden||this._core.next(n||this._core.settings.autoplaySpeed)},this),s||this._core.settings.autoplayTimeout))},n.prototype.stop=function(){this._core.is("rotating")&&(e.clearInterval(this._interval),this._core.leave("rotating"))},n.prototype.pause=function(){this._core.is("rotating")&&(this._paused=!0)},n.prototype.destroy=function(){var t,e;this.stop();for(t in this._handlers)this._core.$element.off(t,this._handlers[t]);for(e in Object.getOwnPropertyNames(this))"function"!=typeof this[e]&&(this[e]=null)},t.fn.vcOwlCarousel.Constructor.Plugins.autoplay=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){"use strict";var n=function(e){this._core=e,this._initialized=!1,this._pages=[],this._controls={},this._templates=[],this.$element=this._core.$element,this._overrides={next:this._core.next,prev:this._core.prev,to:this._core.to},this._handlers={"prepared.owl.vccarousel":t.proxy(function(e){e.namespace&&this._core.settings.dotsData&&this._templates.push('
'+t(e.content).find("[data-dot]").andSelf("[data-dot]").attr("data-dot")+"
")},this),"added.owl.vccarousel":t.proxy(function(t){t.namespace&&this._core.settings.dotsData&&this._templates.splice(t.position,0,this._templates.pop())},this),"remove.owl.vccarousel":t.proxy(function(t){t.namespace&&this._core.settings.dotsData&&this._templates.splice(t.position,1)},this),"changed.owl.vccarousel":t.proxy(function(t){t.namespace&&"position"==t.property.name&&this.draw()},this),"initialized.owl.vccarousel":t.proxy(function(t){t.namespace&&!this._initialized&&(this._core.trigger("initialize",null,"navigation"),this.initialize(),this.update(),this.draw(),this._initialized=!0,this._core.trigger("initialized",null,"navigation"))},this),"refreshed.owl.vccarousel":t.proxy(function(t){t.namespace&&this._initialized&&(this._core.trigger("refresh",null,"navigation"),this.update(),this.draw(),this._core.trigger("refreshed",null,"navigation"))},this)},this._core.options=t.extend({},n.Defaults,this._core.options),this.$element.on(this._handlers)};n.Defaults={nav:!1,navText:["prev","next"],navSpeed:!1,navElement:"div",navContainer:!1,navContainerClass:"owl-nav",navClass:["owl-prev","owl-next"],slideBy:1,dotClass:"owl-dot",dotsClass:"owl-dots",dots:!0,dotsEach:!1,dotsData:!1,dotsSpeed:!1,dotsContainer:!1},n.prototype.initialize=function(){var e,i=this._core.settings;this._controls.$relative=(i.navContainer?t(i.navContainer):t("
").addClass(i.navContainerClass).appendTo(this.$element)).addClass("disabled"),this._controls.$previous=t("<"+i.navElement+">").addClass(i.navClass[0]).html(i.navText[0]).prependTo(this._controls.$relative).on("click",t.proxy(function(t){this.prev(i.navSpeed)},this)),this._controls.$next=t("<"+i.navElement+">").addClass(i.navClass[1]).html(i.navText[1]).appendTo(this._controls.$relative).on("click",t.proxy(function(t){this.next(i.navSpeed)},this)),i.dotsData||(this._templates=[t("
").addClass(i.dotClass).append(t("")).prop("outerHTML")]),this._controls.$absolute=(i.dotsContainer?t(i.dotsContainer):t("
").addClass(i.dotsClass).appendTo(this.$element)).addClass("disabled"),this._controls.$absolute.on("click","div",t.proxy(function(e){var s=t(e.target).parent().is(this._controls.$absolute)?t(e.target).index():t(e.target).parent().index();e.preventDefault(),this.to(s,i.dotsSpeed)},this));for(e in this._overrides)this._core[e]=t.proxy(this[e],this)},n.prototype.destroy=function(){var t,e,i,s;for(t in this._handlers)this.$element.off(t,this._handlers[t]);for(e in this._controls)this._controls[e].remove();for(s in this.overides)this._core[s]=this._overrides[s];for(i in Object.getOwnPropertyNames(this))"function"!=typeof this[i]&&(this[i]=null)},n.prototype.update=function(){var t,e,i,s=this._core.clones().length/2,n=s+this._core.items().length,o=this._core.maximum(!0),r=this._core.settings,a=r.center||r.autoWidth||r.dotsData?1:r.dotsEach||r.items;if("page"!==r.slideBy&&(r.slideBy=Math.min(r.slideBy,r.items)),r.dots||"page"==r.slideBy)for(this._pages=[],t=s,e=0,i=0;n>t;t++){if(e>=a||0===e){if(this._pages.push({start:Math.min(o,t-s),end:t-s+a-1}),Math.min(o,t-s)===o)break;e=0,++i}e+=this._core.mergers(this._core.relative(t))}},n.prototype.draw=function(){var e,i=this._core.settings,s=this._core.items().length<=i.items,n=this._core.relative(this._core.current()),o=i.loop||i.rewind;this._controls.$relative.toggleClass("disabled",!i.nav||s),i.nav&&(this._controls.$previous.toggleClass("disabled",!o&&n<=this._core.minimum(!0)),this._controls.$next.toggleClass("disabled",!o&&n>=this._core.maximum(!0))),this._controls.$absolute.toggleClass("disabled",!i.dots||s),i.dots&&(e=this._pages.length-this._controls.$absolute.children().length,i.dotsData&&0!==e?this._controls.$absolute.html(this._templates.join("")):e>0?this._controls.$absolute.append(new Array(e+1).join(this._templates[0])):0>e&&this._controls.$absolute.children().slice(e).remove(),this._controls.$absolute.find(".active").removeClass("active"),this._controls.$absolute.children().eq(t.inArray(this.current(),this._pages)).addClass("active"))},n.prototype.onTrigger=function(e){var i=this._core.settings;e.page={index:t.inArray(this.current(),this._pages),count:this._pages.length,size:i&&(i.center||i.autoWidth||i.dotsData?1:i.dotsEach||i.items)}},n.prototype.current=function(){var e=this._core.relative(this._core.current());return t.grep(this._pages,t.proxy(function(t,i){return t.start<=e&&t.end>=e},this)).pop()},n.prototype.getPosition=function(e){var i,s,n=this._core.settings;return"page"==n.slideBy?(i=t.inArray(this.current(),this._pages),s=this._pages.length,e?++i:--i,i=this._pages[(i%s+s)%s].start):(i=this._core.relative(this._core.current()),s=this._core.items().length,e?i+=n.slideBy:i-=n.slideBy),i},n.prototype.next=function(e){t.proxy(this._overrides.to,this._core)(this.getPosition(!0),e)},n.prototype.prev=function(e){t.proxy(this._overrides.to,this._core)(this.getPosition(!1),e)},n.prototype.to=function(e,i,s){var n;s?t.proxy(this._overrides.to,this._core)(e,i):(n=this._pages.length,t.proxy(this._overrides.to,this._core)(this._pages[(e%n+n)%n].start,i))},t.fn.vcOwlCarousel.Constructor.Plugins.Navigation=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){"use strict";var n=function(i){this._core=i,this._hashes={},this.$element=this._core.$element,this._handlers={"initialized.owl.vccarousel":t.proxy(function(i){i.namespace&&"URLHash"===this._core.settings.startPosition&&t(e).trigger("hashchange.owl.navigation")},this),"prepared.owl.vccarousel":t.proxy(function(e){if(e.namespace){var i=t(e.content).find("[data-hash]").andSelf("[data-hash]").attr("data-hash");if(!i)return;this._hashes[i]=e.content}},this),"changed.owl.vccarousel":t.proxy(function(i){if(i.namespace&&"position"===i.property.name){var s=this._core.items(this._core.relative(this._core.current())),n=t.map(this._hashes,function(t,e){return t===s?e:null}).join();if(!n||e.location.hash.slice(1)===n)return;e.location.hash=n}},this)},this._core.options=t.extend({},n.Defaults,this._core.options),this.$element.on(this._handlers),t(e).on("hashchange.owl.navigation",t.proxy(function(t){var i=e.location.hash.substring(1),n=this._core.$stage.children(),o=this._hashes[i]&&n.index(this._hashes[i]);o!==s&&o!==this._core.current()&&this._core.to(this._core.relative(o),!1,!0)},this))};n.Defaults={URLhashListener:!1},n.prototype.destroy=function(){var i,s;t(e).off("hashchange.owl.navigation");for(i in this._handlers)this._core.$element.off(i,this._handlers[i]);for(s in Object.getOwnPropertyNames(this))"function"!=typeof this[s]&&(this[s]=null)},t.fn.vcOwlCarousel.Constructor.Plugins.Hash=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){function n(e,i){var n=!1,o=e.charAt(0).toUpperCase()+e.slice(1);return t.each((e+" "+a.join(o+" ")+o).split(" "),function(t,e){return r[e]!==s?(n=i?e:!0,!1):void 0}),n}function o(t){return n(t,!0)}var r=t("").get(0).style,a="Webkit Moz O ms".split(" "),h={transition:{end:{WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd",transition:"transitionend"}},animation:{end:{WebkitAnimation:"webkitAnimationEnd",MozAnimation:"animationend",OAnimation:"oAnimationEnd",animation:"animationend"}}},l={csstransforms:function(){return!!n("transform")},csstransforms3d:function(){return!!n("perspective")},csstransitions:function(){return!!n("transition")},cssanimations:function(){return!!n("animation")}};l.csstransitions()&&(t.support.transition=new String(o("transition")),t.support.transition.end=h.transition.end[t.support.transition]),l.cssanimations()&&(t.support.animation=new String(o("animation")),t.support.animation.end=h.animation.end[t.support.animation]),l.csstransforms()&&(t.support.transform=new String(o("transform")),t.support.transform3d=l.csstransforms3d())}(window.Zepto||window.jQuery,window,document); PK<\Ԍ-assets/lib/vc_image_zoom/vc_image_zoom.min.jsnu[!function($){$.fn.vcImageZoom=function(){return this.each(function(){var $this=$(this),src=$this.data("vcZoom");$this.removeAttr("data-vc-zoom").wrap('
').parent().zoom({duration:500,url:src,onZoomIn:function(){$this.width()>$(this).width()&&$this.trigger("zoom.destroy").attr("data-vc-zoom","").unwrap().vcImageZoom()}})}),this},"function"!=typeof window.vc_image_zoom&&(window.vc_image_zoom=function(model_id){var selector="[data-vc-zoom]";void 0!==model_id&&(selector='[data-model-id="'+model_id+'"] '+selector),$(selector).vcImageZoom()}),$(document).ready(function(){!window.vc_iframe&&vc_image_zoom()})}(jQuery);PK<\ll%assets/lib/waypoints/waypoints.min.jsnu[// Generated by CoffeeScript 1.6.2 /* jQuery Waypoints - v2.0.2 Copyright (c) 2011-2013 Caleb Troughton Dual licensed under the MIT license and GPL license. https://github.com/imakewebthings/jquery-waypoints/blob/master/licenses.txt */ (function(){var t=[].indexOf||function(t){for(var e=0,n=this.length;e=0;s={horizontal:{},vertical:{}};f=1;a={};u="waypoints-context-id";p="resize.waypoints";y="scroll.waypoints";v=1;w="waypoints-waypoint-ids";g="waypoint";m="waypoints";o=function(){function t(t){var e=this;this.$element=t;this.element=t[0];this.didResize=false;this.didScroll=false;this.id="context"+f++;this.oldScroll={x:t.scrollLeft(),y:t.scrollTop()};this.waypoints={horizontal:{},vertical:{}};t.data(u,this.id);a[this.id]=this;t.bind(y,function(){var t;if(!(e.didScroll||c)){e.didScroll=true;t=function(){e.doScroll();return e.didScroll=false};return r.setTimeout(t,n[m].settings.scrollThrottle)}});t.bind(p,function(){var t;if(!e.didResize){e.didResize=true;t=function(){n[m]("refresh");return e.didResize=false};return r.setTimeout(t,n[m].settings.resizeThrottle)}})}t.prototype.doScroll=function(){var t,e=this;t={horizontal:{newScroll:this.$element.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.$element.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};if(c&&(!t.vertical.oldScroll||!t.vertical.newScroll)){n[m]("refresh")}n.each(t,function(t,r){var i,o,l;l=[];o=r.newScroll>r.oldScroll;i=o?r.forward:r.backward;n.each(e.waypoints[t],function(t,e){var n,i;if(r.oldScroll<(n=e.offset)&&n<=r.newScroll){return l.push(e)}else if(r.newScroll<(i=e.offset)&&i<=r.oldScroll){return l.push(e)}});l.sort(function(t,e){return t.offset-e.offset});if(!o){l.reverse()}return n.each(l,function(t,e){if(e.options.continuous||t===l.length-1){return e.trigger([i])}})});return this.oldScroll={x:t.horizontal.newScroll,y:t.vertical.newScroll}};t.prototype.refresh=function(){var t,e,r,i=this;r=n.isWindow(this.element);e=this.$element.offset();this.doScroll();t={horizontal:{contextOffset:r?0:e.left,contextScroll:r?0:this.oldScroll.x,contextDimension:this.$element.width(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:r?0:e.top,contextScroll:r?0:this.oldScroll.y,contextDimension:r?n[m]("viewportHeight"):this.$element.height(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}};return n.each(t,function(t,e){return n.each(i.waypoints[t],function(t,r){var i,o,l,s,f;i=r.options.offset;l=r.offset;o=n.isWindow(r.element)?0:r.$element.offset()[e.offsetProp];if(n.isFunction(i)){i=i.apply(r.element)}else if(typeof i==="string"){i=parseFloat(i);if(r.options.offset.indexOf("%")>-1){i=Math.ceil(e.contextDimension*i/100)}}r.offset=o-e.contextOffset+e.contextScroll-i;if(r.options.onlyOnScroll&&l!=null||!r.enabled){return}if(l!==null&&l<(s=e.oldScroll)&&s<=r.offset){return r.trigger([e.backward])}else if(l!==null&&l>(f=e.oldScroll)&&f>=r.offset){return r.trigger([e.forward])}else if(l===null&&e.oldScroll>=r.offset){return r.trigger([e.forward])}})})};t.prototype.checkEmpty=function(){if(n.isEmptyObject(this.waypoints.horizontal)&&n.isEmptyObject(this.waypoints.vertical)){this.$element.unbind([p,y].join(" "));return delete a[this.id]}};return t}();l=function(){function t(t,e,r){var i,o;r=n.extend({},n.fn[g].defaults,r);if(r.offset==="bottom-in-view"){r.offset=function(){var t;t=n[m]("viewportHeight");if(!n.isWindow(e.element)){t=e.$element.height()}return t-n(this).outerHeight()}}this.$element=t;this.element=t[0];this.axis=r.horizontal?"horizontal":"vertical";this.callback=r.handler;this.context=e;this.enabled=r.enabled;this.id="waypoints"+v++;this.offset=null;this.options=r;e.waypoints[this.axis][this.id]=this;s[this.axis][this.id]=this;i=(o=t.data(w))!=null?o:[];i.push(this.id);t.data(w,i)}t.prototype.trigger=function(t){if(!this.enabled){return}if(this.callback!=null){this.callback.apply(this.element,t)}if(this.options.triggerOnce){return this.destroy()}};t.prototype.disable=function(){return this.enabled=false};t.prototype.enable=function(){this.context.refresh();return this.enabled=true};t.prototype.destroy=function(){delete s[this.axis][this.id];delete this.context.waypoints[this.axis][this.id];return this.context.checkEmpty()};t.getWaypointsByElement=function(t){var e,r;r=n(t).data(w);if(!r){return[]}e=n.extend({},s.horizontal,s.vertical);return n.map(r,function(t){return e[t]})};return t}();d={init:function(t,e){var r;if(e==null){e={}}if((r=e.handler)==null){e.handler=t}this.each(function(){var t,r,i,s;t=n(this);i=(s=e.context)!=null?s:n.fn[g].defaults.context;if(!n.isWindow(i)){i=t.closest(i)}i=n(i);r=a[i.data(u)];if(!r){r=new o(i)}return new l(t,r,e)});n[m]("refresh");return this},disable:function(){return d._invoke(this,"disable")},enable:function(){return d._invoke(this,"enable")},destroy:function(){return d._invoke(this,"destroy")},prev:function(t,e){return d._traverse.call(this,t,e,function(t,e,n){if(e>0){return t.push(n[e-1])}})},next:function(t,e){return d._traverse.call(this,t,e,function(t,e,n){if(et.oldScroll.y})},left:function(t){if(t==null){t=r}return h._filter(t,"horizontal",function(t,e){return e.offset<=t.oldScroll.x})},right:function(t){if(t==null){t=r}return h._filter(t,"horizontal",function(t,e){return e.offset>t.oldScroll.x})},enable:function(){return h._invoke("enable")},disable:function(){return h._invoke("disable")},destroy:function(){return h._invoke("destroy")},extendFn:function(t,e){return d[t]=e},_invoke:function(t){var e;e=n.extend({},s.vertical,s.horizontal);return n.each(e,function(e,n){n[t]();return true})},_filter:function(t,e,r){var i,o;i=a[n(t).data(u)];if(!i){return[]}o=[];n.each(i.waypoints[e],function(t,e){if(r(i,e)){return o.push(e)}});o.sort(function(t,e){return t.offset-e.offset});return n.map(o,function(t){return t.element})}};n[m]=function(){var t,n;n=arguments[0],t=2<=arguments.length?e.call(arguments,1):[];if(h[n]){return h[n].apply(null,t)}else{return h.aggregate.call(null,n)}};n[m].settings={resizeThrottle:100,scrollThrottle:30};return i.load(function(){return n[m]("refresh")})})}).call(this);PK<\z)assets/lib/php.default/php.default.min.jsnu[/* * More info at: http://phpjs.org * * This is version: 3.26 * php.js is copyright 2011 Kevin van Zonneveld. * * Portions copyright Brett Zamir (http://brett-zamir.me), Kevin van Zonneveld * (http://kevin.vanzonneveld.net), Onno Marsman, Theriault, Michael White * (http://getsprink.com), Waldo Malqui Silva, Paulo Freitas, Jack, Jonas * Raoni Soares Silva (http://www.jsfromhell.com), Philip Peterson, Legaev * Andrey, Ates Goral (http://magnetiq.com), Alex, Ratheous, Martijn Wieringa, * Rafał Kukawski (http://blog.kukawski.pl), lmeyrick * (https://sourceforge.net/projects/bcmath-js/), Nate, Philippe Baumann, * Enrique Gonzalez, Webtoolkit.info (http://www.webtoolkit.info/), Carlos R. * L. Rodrigues (http://www.jsfromhell.com), Ash Searle * (http://hexmen.com/blog/), Jani Hartikainen, travc, Ole Vrijenhoek, * Erkekjetter, Michael Grier, Rafał Kukawski (http://kukawski.pl), Johnny * Mast (http://www.phpvrouwen.nl), T.Wild, d3x, * http://stackoverflow.com/questions/57803/how-to-convert-decimal-to-hex-in-javascript, * Rafał Kukawski (http://blog.kukawski.pl/), stag019, pilus, WebDevHobo * (http://webdevhobo.blogspot.com/), marrtins, GeekFG * (http://geekfg.blogspot.com), Andrea Giammarchi * (http://webreflection.blogspot.com), Arpad Ray (mailto:arpad@php.net), * gorthaur, Paul Smith, Tim de Koning (http://www.kingsquare.nl), Joris, Oleg * Eremeev, Steve Hilder, majak, gettimeofday, KELAN, Josh Fraser * (http://onlineaspect.com/2007/06/08/auto-detect-a-time-zone-with-javascript/), * Marc Palau, Kevin van Zonneveld (http://kevin.vanzonneveld.net/), Martin * (http://www.erlenwiese.de/), Breaking Par Consulting Inc * (http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256CFB006C45F7), * Chris, Mirek Slugen, saulius, Alfonso Jimenez * (http://www.alfonsojimenez.com), Diplom@t (http://difane.com/), felix, * Mailfaker (http://www.weedem.fr/), Tyler Akins (http://rumkin.com), Caio * Ariede (http://caioariede.com), Robin, Kankrelune * (http://www.webfaktory.info/), Karol Kowalski, Imgen Tata * (http://www.myipdf.com/), mdsjack (http://www.mdsjack.bo.it), Dreamer, * Felix Geisendoerfer (http://www.debuggable.com/felix), Lars Fischer, AJ, * David, Aman Gupta, Michael White, Public Domain * (http://www.json.org/json2.js), Steven Levithan * (http://blog.stevenlevithan.com), Sakimori, Pellentesque Malesuada, * Thunder.m, Dj (http://phpjs.org/functions/htmlentities:425#comment_134018), * Steve Clay, David James, Francois, class_exists, nobbler, T. Wild, Itsacon * (http://www.itsacon.net/), date, Ole Vrijenhoek (http://www.nervous.nl/), * Fox, Raphael (Ao RUDLER), Marco, noname, Mateusz "loonquawl" Zalega, Frank * Forte, Arno, ger, mktime, john (http://www.jd-tech.net), Nick Kolosov * (http://sammy.ru), marc andreu, Scott Cariss, Douglas Crockford * (http://javascript.crockford.com), madipta, Slawomir Kaniecki, * ReverseSyntax, Nathan, Alex Wilson, kenneth, Bayron Guevara, Adam Wallner * (http://web2.bitbaro.hu/), paulo kuong, jmweb, Lincoln Ramsay, djmix, * Pyerre, Jon Hohle, Thiago Mata (http://thiagomata.blog.com), lmeyrick * (https://sourceforge.net/projects/bcmath-js/this.), Linuxworld, duncan, * Gilbert, Sanjoy Roy, Shingo, sankai, Oskar Larsson Högfeldt * (http://oskar-lh.name/), Denny Wardhana, 0m3r, Everlasto, Subhasis Deb, * josh, jd, Pier Paolo Ramon (http://www.mastersoup.com/), P, merabi, Soren * Hansen, Eugene Bulkin (http://doubleaw.com/), Der Simon * (http://innerdom.sourceforge.net/), echo is bad, Ozh, XoraX * (http://www.xorax.info), EdorFaus, JB, J A R, Marc Jansen, Francesco, LH, * Stoyan Kyosev (http://www.svest.org/), nord_ua, omid * (http://phpjs.org/functions/380:380#comment_137122), Brad Touesnard, MeEtc * (http://yass.meetcweb.com), Peter-Paul Koch * (http://www.quirksmode.org/js/beat.html), Olivier Louvignes * (http://mg-crea.com/), T0bsn, Tim Wiel, Bryan Elliott, Jalal Berrami, * Martin, JT, David Randall, Thomas Beaucourt (http://www.webapp.fr), taith, * vlado houba, Pierre-Luc Paour, Kristof Coomans (SCK-CEN Belgian Nucleair * Research Centre), Martin Pool, Kirk Strobeck, Rick Waldron, Brant Messenger * (http://www.brantmessenger.com/), Devan Penner-Woelk, Saulo Vallory, Wagner * B. Soares, Artur Tchernychev, Valentina De Rosa, Jason Wong * (http://carrot.org/), Christoph, Daniel Esteban, strftime, Mick@el, rezna, * Simon Willison (http://simonwillison.net), Anton Ongson, Gabriel Paderni, * Marco van Oort, penutbutterjelly, Philipp Lenssen, Bjorn Roesbeke * (http://www.bjornroesbeke.be/), Bug?, Eric Nagel, Tomasz Wesolowski, * Evertjan Garretsen, Bobby Drake, Blues (http://tech.bluesmoon.info/), Luke * Godfrey, Pul, uestla, Alan C, Ulrich, Rafal Kukawski, Yves Sucaet, * sowberry, Norman "zEh" Fuchs, hitwork, Zahlii, johnrembo, Nick Callen, * Steven Levithan (stevenlevithan.com), ejsanders, Scott Baker, Brian Tafoya * (http://www.premasolutions.com/), Philippe Jausions * (http://pear.php.net/user/jausions), Aidan Lister * (http://aidanlister.com/), Rob, e-mike, HKM, ChaosNo1, metjay, strcasecmp, * strcmp, Taras Bogach, jpfle, Alexander Ermolaev * (http://snippets.dzone.com/user/AlexanderErmolaev), DxGx, kilops, Orlando, * dptr1988, Le Torbi, James (http://www.james-bell.co.uk/), Pedro Tainha * (http://www.pedrotainha.com), James, Arnout Kazemier * (http://www.3rd-Eden.com), Chris McMacken, gabriel paderni, Yannoo, * FGFEmperor, baris ozdil, Tod Gentille, Greg Frazier, jakes, 3D-GRAF, Allan * Jensen (http://www.winternet.no), Howard Yeend, Benjamin Lupton, davook, * daniel airton wermann (http://wermann.com.br), Atli Þór, Maximusya, Ryan * W Tenney (http://ryan.10e.us), Alexander M Beedie, fearphage * (http://http/my.opera.com/fearphage/), Nathan Sepulveda, Victor, Matteo, * Billy, stensi, Cord, Manish, T.J. Leahy, Riddler * (http://www.frontierwebdev.com/), Rafał Kukawski, FremyCompany, Matt * Bradley, Tim de Koning, Luis Salazar (http://www.freaky-media.com/), Diogo * Resende, Rival, Andrej Pavlovic, Garagoth, Le Torbi * (http://www.letorbi.de/), Dino, Josep Sanz (http://www.ws3.es/), rem, * Russell Walker (http://www.nbill.co.uk/), Jamie Beck * (http://www.terabit.ca/), setcookie, Michael, YUI Library: * http://developer.yahoo.com/yui/docs/YAHOO.util.DateLocale.html, Blues at * http://hacks.bluesmoon.info/strftime/strftime.js, Ben * (http://benblume.co.uk/), DtTvB * (http://dt.in.th/2008-09-16.string-length-in-bytes.html), Andreas, William, * meo, incidence, Cagri Ekin, Amirouche, Amir Habibi * (http://www.residence-mixte.com/), Luke Smith (http://lucassmith.name), * Kheang Hok Chin (http://www.distantia.ca/), Jay Klehr, Lorenzo Pisani, * Tony, Yen-Wei Liu, Greenseed, mk.keck, Leslie Hoare, dude, booeyOH, Ben * Bryan * * Dual licensed under the MIT (MIT-LICENSE.txt) * and GPL (GPL-LICENSE.txt) licenses. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL KEVIN VAN ZONNEVELD BE LIABLE FOR ANY CLAIM, DAMAGES * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. */ // Compression: minified function abs(mixed_number){return Math.abs(mixed_number)||0;} function acos(arg){return Math.acos(arg);} function acosh(arg){return Math.log(arg+Math.sqrt(arg*arg-1));} function addslashes(str){return(str+'').replace(/[\\"']/g,'\\$&').replace(/\u0000/g,'\\0');} function array_change_key_case(array,cs){var case_fn,key,tmp_ar={};if(Object.prototype.toString.call(array)==='[object Array]'){return array;} if(array&&typeof array==='object'&&array.change_key_case){return array.change_key_case(cs);} if(array&&typeof array==='object'){case_fn=(!cs||cs==='CASE_LOWER')?'toLowerCase':'toUpperCase';for(key in array){tmp_ar[key[case_fn]()]=array[key];} return tmp_ar;} return false;} function array_chunk(input,size,preserve_keys){var x,p='',i=0,c=-1,l=input.length||0,n=[];if(size<1){return null;} if(Object.prototype.toString.call(input)==='[object Array]'){if(preserve_keys){while(i0){for(i=0;ihighestIdx?size:highestIdx;}}} for(i=1;i0){return inputArr.shift();}} function array_slice(arr,offst,lgth,preserve_keys){var key='';if(Object.prototype.toString.call(arr)!=='[object Array]'||(preserve_keys&&offst!==0)){var lgt=0,newAssoc={};for(key in arr){lgt+=1;newAssoc[key]=arr[key];} arr=newAssoc;offst=(offst<0)?lgt+offst:offst;lgth=lgth===undefined?lgt:(lgth<0)?lgt+lgth-offst:lgth;var assoc={};var start=false,it=-1,arrlgth=0,no_pk_idx=0;for(key in arr){++it;if(arrlgth>=lgth){break;} if(it==offst){start=true;} if(!start){continue;}++arrlgth;if(this.is_int(key)&&!preserve_keys){assoc[no_pk_idx++]=arr[key];}else{assoc[key]=arr[key];}} return assoc;} if(lgth===undefined){return arr.slice(offst);}else if(lgth>=0){return arr.slice(offst,offst+lgth);}else{return arr.slice(offst,lgth);}} function array_splice(arr,offst,lgth,replacement){var _checkToUpIndices=function(arr,ct,key){if(arr[ct]!==undefined){var tmp=ct;ct+=1;if(ct===key){ct+=1;} ct=_checkToUpIndices(arr,ct,key);arr[ct]=arr[tmp];delete arr[tmp];} return ct;};if(replacement&&typeof replacement!=='object'){replacement=[replacement];} if(lgth===undefined){lgth=offst>=0?arr.length-offst:-offst;}else if(lgth<0){lgth=(offst>=0?arr.length-offst:-offst)+lgth;} if(Object.prototype.toString.call(arr)!=='[object Array]'){var lgt=0,ct=-1,rmvd=[],rmvdObj={},repl_ct=-1,int_ct=-1;var returnArr=true,rmvd_ct=0,rmvd_lgth=0,key='';for(key in arr){lgt+=1;} offst=(offst>=0)?offst:lgt+offst;for(key in arr){ct+=1;if(ctbFloat?1:aFloatb?1:abFloat?1:aFloatb?1:a>16&0xff;o2=bits>>8&0xff;o3=bits&0xff;if(h3==64){tmp_arr[ac++]=String.fromCharCode(o1);}else if(h4==64){tmp_arr[ac++]=String.fromCharCode(o1,o2);}else{tmp_arr[ac++]=String.fromCharCode(o1,o2,o3);}}while(i>18&0x3f;h2=bits>>12&0x3f;h3=bits>>6&0x3f;h4=bits&0x3f;tmp_arr[ac++]=b64.charAt(h1)+b64.charAt(h2)+b64.charAt(h3)+b64.charAt(h4);}while(i0&&m<13&&y>0&&y<32768&&d>0&&d<=(new Date(y,m,0)).getDate();} function chop(str,charlist){return this.rtrim(str,charlist);} function chr(codePt){if(codePt>0xFFFF){codePt-=0x10000;return String.fromCharCode(0xD800+(codePt>>10),0xDC00+(codePt&0x3FF));} return String.fromCharCode(codePt);} function chunk_split(body,chunklen,end){chunklen=parseInt(chunklen,10)||76;end=end||'\r\n';if(chunklen<1){return false;} return body.match(new RegExp(".{0,"+chunklen+"}","g")).join(end);} function class_exists(cls){var i='';cls=this.window[cls];if(typeof cls!=='function'){return false;} for(i in cls.prototype){return true;} for(i in cls){if(i!=='prototype'){return true;}} if(cls.toSource&&cls.toSource().match(/this\./)){return true;} return false;} function compact(){var matrix={},that=this;var process=function(value){var i=0,l=value.length,key_value='';for(i=0;i>>8)^x;} return crc^(-1);} function date(format,timestamp){var that=this,jsdate,f,formatChr=/\\?([a-z])/gi,formatChrCb,_pad=function(n,c){if((n=n+'').length4&&j<21?'th':{1:'st',2:'nd',3:'rd'}[j%10]||'th';},w:function(){return jsdate.getDay();},z:function(){var a=new Date(f.Y(),f.n()-1,f.j()),b=new Date(f.Y(),0,1);return Math.round((a-b)/864e5)+1;},W:function(){var a=new Date(f.Y(),f.n()-1,f.j()-f.N()+3),b=new Date(a.getFullYear(),0,4);return _pad(1+Math.round((a-b)/864e5/7),2);},F:function(){return txt_words[6+f.n()];},m:function(){return _pad(f.n(),2);},M:function(){return f.F().slice(0,3);},n:function(){return jsdate.getMonth()+1;},t:function(){return(new Date(f.Y(),f.n(),0)).getDate();},L:function(){return new Date(f.Y(),1,29).getMonth()===1|0;},o:function(){var n=f.n(),W=f.W(),Y=f.Y();return Y+(n===12&&W<9?-1:n===1&&W>9);},Y:function(){return jsdate.getFullYear();},y:function(){return(f.Y()+"").slice(-2);},a:function(){return jsdate.getHours()>11?"pm":"am";},A:function(){return f.a().toUpperCase();},B:function(){var H=jsdate.getUTCHours()*36e2,i=jsdate.getUTCMinutes()*60,s=jsdate.getUTCSeconds();return _pad(Math.floor((H+i+s+36e2)/86.4)%1e3,3);},g:function(){return f.G()%12||12;},G:function(){return jsdate.getHours();},h:function(){return _pad(f.g(),2);},H:function(){return _pad(f.G(),2);},i:function(){return _pad(jsdate.getMinutes(),2);},s:function(){return _pad(jsdate.getSeconds(),2);},u:function(){return _pad(jsdate.getMilliseconds()*1000,6);},e:function(){throw'Not supported (see source code of date() for timezone on how to add support)';},I:function(){var a=new Date(f.Y(),0),c=Date.UTC(f.Y(),0),b=new Date(f.Y(),6),d=Date.UTC(f.Y(),6);return 0+((a-c)!==(b-d));},O:function(){var tzo=jsdate.getTimezoneOffset(),a=Math.abs(tzo);return(tzo>0?"-":"+")+_pad(Math.floor(a/60)*100+a%60,4);},P:function(){var O=f.O();return(O.substr(0,3)+":"+O.substr(3,2));},T:function(){return'UTC';},Z:function(){return-jsdate.getTimezoneOffset()*60;},c:function(){return'Y-m-d\\Th:i:sP'.replace(formatChr,formatChrCb);},r:function(){return'D, d M Y H:i:s O'.replace(formatChr,formatChrCb);},U:function(){return jsdate.getTime()/1000|0;}};this.date=function(format,timestamp){that=this;jsdate=((typeof timestamp==='undefined')?new Date():(timestamp instanceof Date)?new Date(timestamp):new Date(timestamp*1000));return format.replace(formatChr,formatChrCb);};return this.date(format,timestamp);} function decbin(number){if(number<0){number=0xFFFFFFFF+number+1;} return parseInt(number,10).toString(2);} function dechex(number){if(number<0){number=0xFFFFFFFF+number+1;} return parseInt(number,10).toString(16);} function decoct(number){if(number<0){number=0xFFFFFFFF+number+1;} return parseInt(number,10).toString(8);} function deg2rad(angle){return(angle/180)*Math.PI;} function doubleval(mixed_var){return this.floatval(mixed_var);} function echo(){var arg='',argc=arguments.length,argv=arguments,i=0,holder,win=this.window,d=win.document,ns_xhtml='http://www.w3.org/1999/xhtml',ns_xul='http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul';var stringToDOM=function(str,parent,ns,container){var extraNSs='';if(ns===ns_xul){extraNSs=' xmlns:html="'+ns_xhtml+'"';} var stringContainer='<'+container+' xmlns="'+ns+'"'+extraNSs+'>'+str+'';var dils=win.DOMImplementationLS,dp=win.DOMParser,ax=win.ActiveXObject;if(dils&&dils.createLSInput&&dils.createLSParser){var lsInput=dils.createLSInput();lsInput.stringData=stringContainer;var lsParser=dils.createLSParser(1,null);return lsParser.parse(lsInput).firstChild;}else if(dp){try{var fc=new dp().parseFromString(stringContainer,'text/xml');if(fc&&fc.documentElement&&fc.documentElement.localName!=='parsererror'&&fc.documentElement.namespaceURI!=='http://www.mozilla.org/newlayout/xml/parsererror.xml'){return fc.documentElement.firstChild;}}catch(e){}}else if(ax){var axo=new ax('MSXML2.DOMDocument');axo.loadXML(str);return axo.documentElement;} if(d.createElementNS&&(d.documentElement.namespaceURI||d.documentElement.nodeName.toLowerCase()!=='html'||(d.contentType&&d.contentType!=='text/html'))){holder=d.createElementNS(ns,container);}else{holder=d.createElement(container);} holder.innerHTML=str;while(holder.firstChild){parent.appendChild(holder.firstChild);} return false;};var ieFix=function(node){if(node.nodeType===1){var newNode=d.createElement(node.nodeName);var i,len;if(node.attributes&&node.attributes.length>0){for(i=0,len=node.attributes.length;i0){for(i=0,len=node.childNodes.length;ip){p=pY;} tmp2=(x%y);if(p<-100||p>20){l=Math.round(Math.log(tmp2)/Math.log(10));l2=Math.pow(10,l);return(tmp2/l2).toFixed(l-p)*l2;}else{return parseFloat(tmp2.toFixed(-p));}} function get_class(obj){if(obj&&typeof obj==='object'&&Object.prototype.toString.call(obj)!=='[object Array]'&&obj.constructor&&obj!=this.window){var arr=obj.constructor.toString().match(/function\s*(\w+)/);if(arr&&arr.length==2){return arr[1];}} return false;} function get_defined_vars(){var i='',arr=[],already={};for(i in this.window){try{if(typeof this.window[i]==='object'){for(var j in this.window[i]){if(this.window[j]&&!already[j]){already[j]=1;arr.push(j);}}}else if(!already[i]){already[i]=1;arr.push(i);}}catch(e){if(!already[i]){already[i]=1;arr.push(i);}}} return arr;} function get_headers(url,format){var req=this.window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(!req){throw new Error('XMLHttpRequest not supported');} var tmp,headers,pair,i,j=0;req.open('HEAD',url,false);req.send(null);if(req.readyState<3){return false;} tmp=req.getAllResponseHeaders();tmp=tmp.split('\n');tmp=this.array_filter(tmp,function(value){return value.substring(1)!=='';});headers=format?{}:[];for(i in tmp){if(format){pair=tmp[i].split(':');headers[pair.splice(0,1)]=pair.join(':').substring(1);}else{headers[j++]=tmp[i];}} return headers;} function get_html_translation_table(table,quote_style){var entities={},hash_map={},decimal;var constMappingTable={},constMappingQuoteStyle={};var useTable={},useQuoteStyle={};constMappingTable[0]='HTML_SPECIALCHARS';constMappingTable[1]='HTML_ENTITIES';constMappingQuoteStyle[0]='ENT_NOQUOTES';constMappingQuoteStyle[2]='ENT_COMPAT';constMappingQuoteStyle[3]='ENT_QUOTES';useTable=!isNaN(table)?constMappingTable[table]:table?table.toUpperCase():'HTML_SPECIALCHARS';useQuoteStyle=!isNaN(quote_style)?constMappingQuoteStyle[quote_style]:quote_style?quote_style.toUpperCase():'ENT_COMPAT';if(useTable!=='HTML_SPECIALCHARS'&&useTable!=='HTML_ENTITIES'){throw new Error("Table: "+useTable+' not supported');} entities['38']='&';if(useTable==='HTML_ENTITIES'){entities['160']=' ';entities['161']='¡';entities['162']='¢';entities['163']='£';entities['164']='¤';entities['165']='¥';entities['166']='¦';entities['167']='§';entities['168']='¨';entities['169']='©';entities['170']='ª';entities['171']='«';entities['172']='¬';entities['173']='­';entities['174']='®';entities['175']='¯';entities['176']='°';entities['177']='±';entities['178']='²';entities['179']='³';entities['180']='´';entities['181']='µ';entities['182']='¶';entities['183']='·';entities['184']='¸';entities['185']='¹';entities['186']='º';entities['187']='»';entities['188']='¼';entities['189']='½';entities['190']='¾';entities['191']='¿';entities['192']='À';entities['193']='Á';entities['194']='Â';entities['195']='Ã';entities['196']='Ä';entities['197']='Å';entities['198']='Æ';entities['199']='Ç';entities['200']='È';entities['201']='É';entities['202']='Ê';entities['203']='Ë';entities['204']='Ì';entities['205']='Í';entities['206']='Î';entities['207']='Ï';entities['208']='Ð';entities['209']='Ñ';entities['210']='Ò';entities['211']='Ó';entities['212']='Ô';entities['213']='Õ';entities['214']='Ö';entities['215']='×';entities['216']='Ø';entities['217']='Ù';entities['218']='Ú';entities['219']='Û';entities['220']='Ü';entities['221']='Ý';entities['222']='Þ';entities['223']='ß';entities['224']='à';entities['225']='á';entities['226']='â';entities['227']='ã';entities['228']='ä';entities['229']='å';entities['230']='æ';entities['231']='ç';entities['232']='è';entities['233']='é';entities['234']='ê';entities['235']='ë';entities['236']='ì';entities['237']='í';entities['238']='î';entities['239']='ï';entities['240']='ð';entities['241']='ñ';entities['242']='ò';entities['243']='ó';entities['244']='ô';entities['245']='õ';entities['246']='ö';entities['247']='÷';entities['248']='ø';entities['249']='ù';entities['250']='ú';entities['251']='û';entities['252']='ü';entities['253']='ý';entities['254']='þ';entities['255']='ÿ';} if(useQuoteStyle!=='ENT_NOQUOTES'){entities['34']='"';} if(useQuoteStyle==='ENT_QUOTES'){entities['39']=''';} entities['60']='<';entities['62']='>';for(decimal in entities){if(entities.hasOwnProperty(decimal)){hash_map[String.fromCharCode(decimal)]=entities[decimal];}} return hash_map;} function getdate(timestamp){var _w=['Sun','Mon','Tues','Wednes','Thurs','Fri','Satur'];var _m=['January','February','March','April','May','June','July','August','September','October','November','December'];var d=((typeof(timestamp)=='undefined')?new Date():(typeof(timestamp)=='object')?new Date(timestamp):new Date(timestamp*1000));var w=d.getDay();var m=d.getMonth();var y=d.getFullYear();var r={};r.seconds=d.getSeconds();r.minutes=d.getMinutes();r.hours=d.getHours();r.mday=d.getDate();r.wday=w;r.mon=m+1;r.year=y;r.yday=Math.floor((d-(new Date(y,0,1)))/86400000);r.weekday=_w[w]+'day';r.month=_m[m];r['0']=parseInt(d.getTime()/1000,10);return r;} function getrandmax(){return 2147483647;} function hexdec(hex_string){hex_string=(hex_string+'').replace(/[^a-f0-9]/gi,'');return parseInt(hex_string,16);} function html_entity_decode(string,quote_style){var hash_map={},symbol='',tmp_str='',entity='';tmp_str=string.toString();if(false===(hash_map=this.get_html_translation_table('HTML_ENTITIES',quote_style))){return false;} delete(hash_map['&']);hash_map['&']='&';for(symbol in hash_map){entity=hash_map[symbol];tmp_str=tmp_str.split(entity).join(symbol);} tmp_str=tmp_str.split(''').join("'");return tmp_str;} function htmlentities(string,quote_style,charset,double_encode){var hash_map=this.get_html_translation_table('HTML_ENTITIES',quote_style),symbol='';string=string==null?'':string+'';if(!hash_map){return false;} if(quote_style&"e_style==='ENT_QUOTES'){hash_map["'"]=''';} if(!!double_encode||double_encode==null){for(symbol in hash_map){if(hash_map.hasOwnProperty(symbol)){string=string.split(symbol).join(hash_map[symbol]);}}}else{string=string.replace(/([\s\S]*?)(&(?:#\d+|#x[\da-f]+|[a-zA-Z][\da-z]*);|$)/g,function(ignore,text,entity){for(symbol in hash_map){if(hash_map.hasOwnProperty(symbol)){text=text.split(symbol).join(hash_map[symbol]);}} return text+entity;});} return string;} function htmlspecialchars(string,quote_style,charset,double_encode){var optTemp=0,i=0,noquotes=false;if(typeof quote_style==='undefined'||quote_style===null){quote_style=2;} string=string.toString();if(double_encode!==false){string=string.replace(/&/g,'&');} string=string.replace(//g,'>');var OPTS={'ENT_NOQUOTES':0,'ENT_HTML_QUOTE_SINGLE':1,'ENT_HTML_QUOTE_DOUBLE':2,'ENT_COMPAT':2,'ENT_QUOTES':3,'ENT_IGNORE':4};if(quote_style===0){noquotes=true;} if(typeof quote_style!=='number'){quote_style=[].concat(quote_style);for(i=0;i');var OPTS={'ENT_NOQUOTES':0,'ENT_HTML_QUOTE_SINGLE':1,'ENT_HTML_QUOTE_DOUBLE':2,'ENT_COMPAT':2,'ENT_QUOTES':3,'ENT_IGNORE':4};if(quote_style===0){noquotes=true;} if(typeof quote_style!=='number'){quote_style=[].concat(quote_style);for(i=0;i=IP[5]||IP[2]>=IP[6]||IP[3]>=IP[7]||IP[4]>=IP[8]){return false;} return IP[1]*(IP[0]===1||16777216)+IP[2]*(IP[0]<=2||65536)+IP[3]*(IP[0]<=3||256)+IP[4]*1;} function is_bool(mixed_var){return(typeof mixed_var==='boolean');} function is_double(mixed_var){return this.is_float(mixed_var);} function is_finite(val){var warningType='';if(val===Infinity||val===-Infinity){return false;} if(typeof val=='object'){warningType=(Object.prototype.toString.call(val)==='[object Array]'?'array':'object');}else if(typeof val=='string'&&!val.match(/^[\+\-]?\d/)){warningType='string';} if(warningType){throw new Error('Warning: is_finite() expects parameter 1 to be double, '+warningType+' given');} return true;} function is_float(mixed_var){return+mixed_var===mixed_var&&!!(mixed_var%1);} function is_infinite(val){var warningType='';if(val===Infinity||val===-Infinity){return true;} if(typeof val=='object'){warningType=(Object.prototype.toString.call(val)==='[object Array]'?'array':'object');}else if(typeof val=='string'&&!val.match(/^[\+\-]?\d/)){warningType='string';} if(warningType){throw new Error('Warning: is_infinite() expects parameter 1 to be double, '+warningType+' given');} return false;} function is_int(mixed_var){return mixed_var===~~mixed_var;} function is_integer(mixed_var){return this.is_int(mixed_var);} function is_long(mixed_var){return this.is_float(mixed_var);} function is_nan(val){var warningType='';if(typeof val=='number'&&isNaN(val)){return true;} if(typeof val=='object'){warningType=(Object.prototype.toString.call(val)==='[object Array]'?'array':'object');} else if(typeof val=='string'&&!val.match(/^[\+\-]?\d/)){warningType='string';} if(warningType){throw new Error('Warning: is_nan() expects parameter 1 to be double, '+warningType+' given');} return false;} function is_null(mixed_var){return(mixed_var===null);} function is_numeric(mixed_var){return(typeof(mixed_var)==='number'||typeof(mixed_var)==='string')&&mixed_var!==''&&!isNaN(mixed_var);} function is_real(mixed_var){return this.is_float(mixed_var);} function is_scalar(mixed_var){return(/boolean|number|string/).test(typeof mixed_var);} function is_string(mixed_var){return(typeof(mixed_var)=='string');} function join(glue,pieces){return this.implode(glue,pieces);} function json_decode(str_json){var json=this.window.JSON;if(typeof json==='object'&&typeof json.parse==='function'){try{return json.parse(str_json);}catch(err){if(!(err instanceof SyntaxError)){throw new Error('Unexpected error type in json_decode()');} this.php_js=this.php_js||{};this.php_js.last_error_json=4;return null;}} var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;var j;var text=str_json;cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);});} if((/^[\],:{}\s]*$/).test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return j;} this.php_js=this.php_js||{};this.php_js.last_error_json=4;return null;} function json_encode(mixed_val){var retVal,json=this.window.JSON;try{if(typeof json==='object'&&typeof json.stringify==='function'){retVal=json.stringify(mixed_val);if(retVal===undefined){throw new SyntaxError('json_encode');} return retVal;} var value=mixed_val;var quote=function(string){var escapable=/[\\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;var meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';};var str=function(key,holder){var gap='';var indent=' ';var i=0;var k='';var v='';var length=0;var mind=gap;var partial=[];var value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);} switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';} if((this.PHPJS_Resource&&value instanceof this.PHPJS_Resource)||(window.PHPJS_Resource&&value instanceof window.PHPJS_Resource)){throw new SyntaxError('json_encode');} gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;ibFloat?1:aFloatb?1:abFloat?1:aFloatb?1:a1){return Math.log(1+x);} for(var i=1;i=0||proper_address<=4294967295)){output=Math.floor(proper_address/Math.pow(256,3))+'.'+Math.floor((proper_address%Math.pow(256,3))/Math.pow(256,2))+'.'+Math.floor(((proper_address%Math.pow(256,3))%Math.pow(256,2))/Math.pow(256,1))+'.'+Math.floor((((proper_address%Math.pow(256,3))%Math.pow(256,2))%Math.pow(256,1))/Math.pow(256,0));} return output;} function ltrim(str,charlist){charlist=!charlist?' \\s\u00A0':(charlist+'').replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g,'$1');var re=new RegExp('^['+charlist+']+','g');return(str+'').replace(re,'');} function max(){var ar,retVal,i=0,n=0,argv=arguments,argc=argv.length,_obj2Array=function(obj){if(Object.prototype.toString.call(obj)==='[object Array]'){return obj;} else{var ar=[];for(var i in obj){if(obj.hasOwnProperty(i)){ar.push(obj[i]);}} return ar;}},_compare=function(current,next){var i=0,n=0,tmp=0,nl=0,cl=0;if(current===next){return 0;} else if(typeof current==='object'){if(typeof next==='object'){current=_obj2Array(current);next=_obj2Array(next);cl=current.length;nl=next.length;if(nl>cl){return 1;} else if(nl0?1:-1);} if(next==current){return 0;} return(next>current?1:-1);};if(argc===0){throw new Error('At least one value should be passed to max()');} else if(argc===1){if(typeof argv[0]==='object'){ar=_obj2Array(argv[0]);} else{throw new Error('Wrong parameter count for max()');} if(ar.length===0){throw new Error('Array must contain at least one element for max()');}} else{ar=argv;} retVal=ar[0];for(i=1,n=ar.length;i>>(32-iShiftBits));};var addUnsigned=function(lX,lY){var lX4,lY4,lX8,lY8,lResult;lX8=(lX&0x80000000);lY8=(lY&0x80000000);lX4=(lX&0x40000000);lY4=(lY&0x40000000);lResult=(lX&0x3FFFFFFF)+(lY&0x3FFFFFFF);if(lX4&lY4){return(lResult^0x80000000^lX8^lY8);} if(lX4|lY4){if(lResult&0x40000000){return(lResult^0xC0000000^lX8^lY8);}else{return(lResult^0x40000000^lX8^lY8);}}else{return(lResult^lX8^lY8);}};var _F=function(x,y,z){return(x&y)|((~x)&z);};var _G=function(x,y,z){return(x&z)|(y&(~z));};var _H=function(x,y,z){return(x^y^z);};var _I=function(x,y,z){return(y^(x|(~z)));};var _FF=function(a,b,c,d,x,s,ac){a=addUnsigned(a,addUnsigned(addUnsigned(_F(b,c,d),x),ac));return addUnsigned(rotateLeft(a,s),b);};var _GG=function(a,b,c,d,x,s,ac){a=addUnsigned(a,addUnsigned(addUnsigned(_G(b,c,d),x),ac));return addUnsigned(rotateLeft(a,s),b);};var _HH=function(a,b,c,d,x,s,ac){a=addUnsigned(a,addUnsigned(addUnsigned(_H(b,c,d),x),ac));return addUnsigned(rotateLeft(a,s),b);};var _II=function(a,b,c,d,x,s,ac){a=addUnsigned(a,addUnsigned(addUnsigned(_I(b,c,d),x),ac));return addUnsigned(rotateLeft(a,s),b);};var convertToWordArray=function(str){var lWordCount;var lMessageLength=str.length;var lNumberOfWords_temp1=lMessageLength+8;var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1%64))/64;var lNumberOfWords=(lNumberOfWords_temp2+1)*16;var lWordArray=new Array(lNumberOfWords-1);var lBytePosition=0;var lByteCount=0;while(lByteCount>>29;return lWordArray;};var wordToHex=function(lValue){var wordToHexValue="",wordToHexValue_temp="",lByte,lCount;for(lCount=0;lCount<=3;lCount++){lByte=(lValue>>>(lCount*8))&255;wordToHexValue_temp="0"+lByte.toString(16);wordToHexValue=wordToHexValue+wordToHexValue_temp.substr(wordToHexValue_temp.length-2,2);} return wordToHexValue;};var x=[],k,AA,BB,CC,DD,a,b,c,d,S11=7,S12=12,S13=17,S14=22,S21=5,S22=9,S23=14,S24=20,S31=4,S32=11,S33=16,S34=23,S41=6,S42=10,S43=15,S44=21;str=this.utf8_encode(str);x=convertToWordArray(str);a=0x67452301;b=0xEFCDAB89;c=0x98BADCFE;d=0x10325476;xl=x.length;for(k=0;kcl){return 1;} else if(nl0?1:-1);} if(next==current){return 0;} return(next>current?1:-1);};if(argc===0){throw new Error('At least one value should be passed to min()');} else if(argc===1){if(typeof argv[0]==='object'){ar=_obj2Array(argv[0]);} else{throw new Error('Wrong parameter count for min()');} if(ar.length===0){throw new Error('Array must contain at least one element for min()');}} else{ar=argv;} retVal=ar[0];for(i=1,n=ar.length;i=0?(r[5]<=69?2e3:(r[5]<=100?1900:0)):0);d.setFullYear(r[5],r[3]-1,r[4]);d.setHours(r[0],r[1],r[2]);return(d.getTime()/1e3>>0)-(d.getTime()<0);} function mt_getrandmax(){return 2147483647;} function mt_rand(min,max){var argc=arguments.length;if(argc===0){min=0;max=2147483647;}else if(argc===1){throw new Error('Warning: mt_rand() expects exactly 2 parameters, 1 given');} return Math.floor(Math.random()*(max-min+1))+min;} function natcasesort(inputArr){var valArr=[],k,i,ret,that=this,strictForIn=false,populateArr={};this.php_js=this.php_js||{};this.php_js.ini=this.php_js.ini||{};strictForIn=this.php_js.ini['phpjs.strictForIn']&&this.php_js.ini['phpjs.strictForIn'].local_value&&this.php_js.ini['phpjs.strictForIn'].local_value!=='off';populateArr=strictForIn?inputArr:populateArr;for(k in inputArr){if(inputArr.hasOwnProperty(k)){valArr.push([k,inputArr[k]]);if(strictForIn){delete inputArr[k];}}} valArr.sort(function(a,b){return that.strnatcasecmp(a[1],b[1]);});for(i=0;i':'
';return(str+'').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g,'$1'+breakTag+'$2');} function number_format(number,decimals,dec_point,thousands_sep){number=(number+'').replace(/[^0-9+\-Ee.]/g,'');var n=!isFinite(+number)?0:+number,prec=!isFinite(+decimals)?0:Math.abs(decimals),sep=(typeof thousands_sep==='undefined')?',':thousands_sep,dec=(typeof dec_point==='undefined')?'.':dec_point,s='',toFixedFix=function(n,prec){var k=Math.pow(10,prec);return''+Math.round(n*k)/k;};s=(prec?toFixedFix(n,prec):''+Math.round(n)).split('.');if(s[0].length>3){s[0]=s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g,sep);} if((s[1]||'').length|:\\'+(delimiter||'')+'-]','g'),'\\$&');} function print_r(array,return_val){var output='',pad_char=' ',pad_val=4,d=this.window.document,getFuncName=function(fn){var name=(/\W*function\s+([\w\$]+)\s*\(/).exec(fn);if(!name){return'(Anonymous)';} return name[1];},repeat_char=function(len,pad_char){var str='';for(var i=0;i0){cur_depth++;} var base_pad=repeat_char(pad_val*cur_depth,pad_char);var thick_pad=repeat_char(pad_val*(cur_depth+1),pad_char);var str='';if(typeof obj==='object'&&obj!==null&&obj.constructor&&getFuncName(obj.constructor)!=='PHPJS_Resource'){str+='Array\n'+base_pad+'(\n';for(var key in obj){if(Object.prototype.toString.call(obj[key])==='[object Array]'){str+=thick_pad+'['+key+'] => '+formatArray(obj[key],cur_depth+1,pad_val,pad_char);} else{str+=thick_pad+'['+key+'] => '+obj[key]+'\n';}} str+=base_pad+')\n';} else if(obj===null||obj===undefined){str='';} else{str=obj.toString();} return str;};output=formatArray(array,0,pad_val,pad_char);if(return_val!==true){if(d.body){this.echo(output);} else{try{d=XULDocument;this.echo('
'+output+'
');}catch(e){this.echo(output);}} return true;} return output;} function printf(){var body,elmt,d=this.window.document;var ret='';var HTMLNS='http://www.w3.org/1999/xhtml';body=d.getElementsByTagNameNS?(d.getElementsByTagNameNS(HTMLNS,'body')[0]?d.getElementsByTagNameNS(HTMLNS,'body')[0]:d.documentElement.lastChild):d.getElementsByTagName('body')[0];if(!body){return false;} ret=this.sprintf.apply(this,arguments);elmt=d.createTextNode(ret);body.appendChild(elmt);return ret.length;} function property_exists(cls,prop){cls=(typeof cls==='string')?this.window[cls]:cls;if(typeof cls==='function'&&cls.toSource&&cls.toSource().match(new RegExp('this\\.'+prop+'\\s'))){return true;} return(cls[prop]!==undefined&&typeof cls[prop]!=='function')||(cls.prototype!==undefined&&cls.prototype[prop]!==undefined&&typeof cls.prototype[prop]!=='function')||(cls.constructor&&cls.constructor[prop]!==undefined&&typeof cls.constructor[prop]!=='function');} function quotemeta(str){return(str+'').replace(/([\.\\\+\*\?\[\^\]\$\(\)])/g,'\\$1');} function rad2deg(angle){return angle*57.29577951308232;} function rand(min,max){var argc=arguments.length;if(argc===0){min=0;max=2147483647;}else if(argc===1){throw new Error('Warning: rand() expects exactly 2 parameters, 1 given');} return Math.floor(Math.random()*(max-min+1))+min;} function range(low,high,step){var matrix=[];var inival,endval,plus;var walker=step||1;var chars=false;if(!isNaN(low)&&!isNaN(high)){inival=low;endval=high;}else if(isNaN(low)&&isNaN(high)){chars=true;inival=low.charCodeAt(0);endval=high.charCodeAt(0);}else{inival=(isNaN(low)?0:low);endval=(isNaN(high)?0:high);} plus=((inival>endval)?false:true);if(plus){while(inival<=endval){matrix.push(((chars)?String.fromCharCode(inival):inival));inival+=walker;}}else{while(inival>=endval){matrix.push(((chars)?String.fromCharCode(inival):inival));inival-=walker;}} return matrix;} function rawurldecode(str){return decodeURIComponent(str+'');} function rawurlencode(str){str=(str+'').toString();return encodeURIComponent(str).replace(/!/g,'%21').replace(/'/g,'%27').replace(/\(/g,'%28').replace(/\)/g,'%29').replace(/\*/g,'%2A');} function reset(arr){this.php_js=this.php_js||{};this.php_js.pointers=this.php_js.pointers||[];var indexOf=function(value){for(var i=0,length=this.length;i0)|-(value<0);isHalf=value%1===0.5*sgn;f=Math.floor(value);if(isHalf){switch(mode){case'PHP_ROUND_HALF_DOWN':value=f+(sgn<0);break;case'PHP_ROUND_HALF_EVEN':value=f+(f%2*sgn);break;case'PHP_ROUND_HALF_ODD':value=f+!(f%2);break;default:value=f+(sgn>0);}} return(isHalf?value:Math.round(value))/m;} function rsort(inputArr,sort_flags){var valArr=[],k='',i=0,sorter=false,that=this,strictForIn=false,populateArr=[];switch(sort_flags){case'SORT_STRING':sorter=function(a,b){return that.strnatcmp(b,a);};break;case'SORT_LOCALE_STRING':var loc=this.i18n_loc_get_default();sorter=this.php_js.i18nLocales[loc].sorting;break;case'SORT_NUMERIC':sorter=function(a,b){return(b-a);};break;case'SORT_REGULAR':default:sorter=function(b,a){var aFloat=parseFloat(a),bFloat=parseFloat(b),aNumeric=aFloat+''===a,bNumeric=bFloat+''===b;if(aNumeric&&bNumeric){return aFloat>bFloat?1:aFloatb?1:a>>(32-s));return t4;};var cvt_hex=function(val){var str="";var i;var v;for(i=7;i>=0;i--){v=(val>>>(i*4))&0x0f;str+=v.toString(16);} return str;};var blockstart;var i,j;var W=new Array(80);var H0=0x67452301;var H1=0xEFCDAB89;var H2=0x98BADCFE;var H3=0x10325476;var H4=0xC3D2E1F0;var A,B,C,D,E;var temp;str=this.utf8_encode(str);var str_len=str.length;var word_array=[];for(i=0;i>>29);word_array.push((str_len<<3)&0x0ffffffff);for(blockstart=0;blockstartbFloat?1:aFloatb?1:a=len)?'':Array(1+len-str.length>>>0).join(chr);return leftJustify?str+padding:padding+str;};var justify=function(value,prefix,leftJustify,minWidth,zeroPad,customPadChar){var diff=minWidth-value.length;if(diff>0){if(leftJustify||!zeroPad){value=pad(value,minWidth,customPadChar,leftJustify);}else{value=value.slice(0,prefix.length)+pad('',diff,'0',true)+value.slice(prefix.length);}} return value;};var formatBaseX=function(value,base,prefix,leftJustify,minWidth,precision,zeroPad){var number=value>>>0;prefix=prefix&&number&&{'2':'0b','8':'0','16':'0x'}[base]||'';value=prefix+pad(number.toString(base),precision||0,'0',false);return justify(value,prefix,leftJustify,minWidth,zeroPad);};var formatString=function(value,leftJustify,minWidth,precision,zeroPad,customPadChar){if(precision!=null){value=value.slice(0,precision);} return justify(value,'',leftJustify,minWidth,zeroPad,customPadChar);};var doFormat=function(substring,valueIndex,flags,minWidth,_,precision,type){var number;var prefix;var method;var textTransform;var value;if(substring=='%%'){return'%';} var leftJustify=false,positivePrefix='',zeroPad=false,prefixBaseX=false,customPadChar=' ';var flagsl=flags.length;for(var j=0;flags&&j-1?6:(type=='d')?0:undefined;}else if(precision=='*'){precision=+a[i++];}else if(precision.charAt(0)=='*'){precision=+a[precision.slice(1,-1)];}else{precision=+precision;} value=valueIndex?a[valueIndex.slice(0,-1)]:a[i++];switch(type){case's':return formatString(String(value),leftJustify,minWidth,precision,zeroPad,customPadChar);case'c':return formatString(String.fromCharCode(+value),leftJustify,minWidth,precision,zeroPad);case'b':return formatBaseX(value,2,prefixBaseX,leftJustify,minWidth,precision,zeroPad);case'o':return formatBaseX(value,8,prefixBaseX,leftJustify,minWidth,precision,zeroPad);case'x':return formatBaseX(value,16,prefixBaseX,leftJustify,minWidth,precision,zeroPad);case'X':return formatBaseX(value,16,prefixBaseX,leftJustify,minWidth,precision,zeroPad).toUpperCase();case'u':return formatBaseX(value,10,prefixBaseX,leftJustify,minWidth,precision,zeroPad);case'i':case'd':number=(+value)|0;prefix=number<0?'-':positivePrefix;value=prefix+pad(String(Math.abs(number)),precision,'0',false);return justify(value,prefix,leftJustify,minWidth,zeroPad);case'e':case'E':case'f':case'F':case'g':case'G':number=+value;prefix=number<0?'-':positivePrefix;method=['toExponential','toFixed','toPrecision']['efg'.indexOf(type.toLowerCase())];textTransform=['toString','toUpperCase']['eEfFgG'.indexOf(type)%2];value=prefix+Math.abs(number)[method](precision);return justify(value,prefix,leftJustify,minWidth,zeroPad)[textTransform]();default:return substring;}};return format.replace(regex,doFormat);} function sql_regcase(str){this.setlocale('LC_ALL',0);var i=0,upper='',lower='',pos=0,retStr='';upper=this.php_js.locales[this.php_js.localeCategories.LC_CTYPE].LC_CTYPE.upper;lower=this.php_js.locales[this.php_js.localeCategories.LC_CTYPE].LC_CTYPE.lower;for(i=0;i\|\:])/g,"\\$1");};delimiter=delimiter||',';enclosure=enclosure||'"';escape=escape||'\\';input=input.replace(new RegExp('^\\s*'+pq(enclosure)),'').replace(new RegExp(pq(enclosure)+'\\s*$'),'');input=backwards(input).split(new RegExp(pq(enclosure)+'\\s*'+pq(delimiter)+'\\s*'+pq(enclosure)+'(?!'+pq(escape)+')','g')).reverse();for(var i=0;ireplace.length){replace[replace.length]=replace[0];}}} if(Object.prototype.toString.call(search)!=='[object Array]'){search=[search];} while(search.length>replace.length){replace[replace.length]='';} if(Object.prototype.toString.call(subject)==='[object Array]'){for(k in subject){if(subject.hasOwnProperty(k)){subject[k]=str_ireplace(search,replace,subject[k]);}} return subject;} searchl=search.length;for(i=0;i0){if(pad_type=='STR_PAD_LEFT'){input=str_pad_repeater(pad_string,pad_to_go)+input;}else if(pad_type=='STR_PAD_RIGHT'){input=input+str_pad_repeater(pad_string,pad_to_go);}else if(pad_type=='STR_PAD_BOTH'){half=str_pad_repeater(pad_string,Math.ceil(pad_to_go/2));input=half+input+half;input=input.substr(0,pad_length);}} return input;} function str_repeat(input,multiplier){return new Array(multiplier+1).join(input);} function str_replace(search,replace,subject,count){var i=0,j=0,temp='',repl='',sl=0,fl=0,f=[].concat(search),r=[].concat(replace),s=subject,ra=Object.prototype.toString.call(r)==='[object Array]',sa=Object.prototype.toString.call(s)==='[object Array]';s=[].concat(s);if(count){this.window[count]=0;} for(i=0,sl=s.length;i\|\:])/g,'\\$1');},_getWholeChar=function(str,i){var code=str.charCodeAt(i);if(code<0xD800||code>0xDFFF){return str.charAt(i);} if(0xD800<=code&&code<=0xDBFF){if(str.length<=(i+1)){throw'High surrogate without following low surrogate';} var next=str.charCodeAt(i+1);if(0xDC00>next||next>0xDFFF){throw'High surrogate without following low surrogate';} return str.charAt(i)+str.charAt(i+1);} if(i===0){throw'Low surrogate without preceding high surrogate';} var prev=str.charCodeAt(i-1);if(0xD800>prev||prev>0xDBFF){throw'Low surrogate without preceding high surrogate';} return false;};if(cl){reg='^('+_preg_quote(_getWholeChar(charlist,0));for(i=1;istring2){return 1;}else if(string1==string2){return 0;} return-1;} function strchr(haystack,needle,bool){return this.strstr(haystack,needle,bool);} function strcmp(str1,str2){return((str1==str2)?0:((str1>str2)?1:-1));} function strcspn(str,mask,start,length){start=start?start:0;var count=(length&&((start+length)/g)||[]).join('');var tags=/<\/?([a-z][a-z0-9]*)\b[^>]*>/gi,commentsAndPhpTags=/|<\?(?:php)?[\s\S]*?\?>/gi;return input.replace(commentsAndPhpTags,'').replace(tags,function($0,$1){return allowed.indexOf('<'+$1.toLowerCase()+'>')>-1?$0:'';});} function stripos(f_haystack,f_needle,f_offset){var haystack=(f_haystack+'').toLowerCase();var needle=(f_needle+'').toLowerCase();var index=0;if((index=haystack.indexOf(needle,f_offset))!==-1){return index;} return false;} function stripslashes(str){return(str+'').replace(/\\(.?)/g,function(s,n1){switch(n1){case'\\':return'\\';case'0':return'\u0000';case'':return'';default:return n1;}});} function stristr(haystack,needle,bool){var pos=0;haystack+='';pos=haystack.toLowerCase().indexOf((needle+'').toLowerCase());if(pos==-1){return false;}else{if(bool){return haystack.substr(0,pos);}else{return haystack.slice(pos);}}} function strlen(string){var str=string+'';var i=0,chr='',lgth=0;if(!this.php_js||!this.php_js.ini||!this.php_js.ini['unicode.semantics']||this.php_js.ini['unicode.semantics'].local_value.toLowerCase()!=='on'){return string.length;} var getWholeChar=function(str,i){var code=str.charCodeAt(i);var next='',prev='';if(0xD800<=code&&code<=0xDBFF){if(str.length<=(i+1)){throw'High surrogate without following low surrogate';} next=str.charCodeAt(i+1);if(0xDC00>next||next>0xDFFF){throw'High surrogate without following low surrogate';} return str.charAt(i)+str.charAt(i+1);}else if(0xDC00<=code&&code<=0xDFFF){if(i===0){throw'Low surrogate without preceding high surrogate';} prev=str.charCodeAt(i-1);if(0xD800>prev||prev>0xDBFF){throw'Low surrogate without preceding high surrogate';} return false;} return str.charAt(i);};for(i=0,lgth=0;i=48&&charCode<=57);};var compareRight=function(a,b){var bias=0;var ia=0;var ib=0;var ca;var cb;for(var cnt=0;true;ia++,ib++){ca=a.charAt(ia);cb=b.charAt(ib);if(!isDigitChar(ca)&&!isDigitChar(cb)){return bias;}else if(!isDigitChar(ca)){return-1;}else if(!isDigitChar(cb)){return 1;}else if(cacb){if(bias===0){bias=1;}}else if(ca==='0'&&cb==='0'){return bias;}}};var ia=0,ib=0;var nza=0,nzb=0;var ca,cb;var result;while(true){nza=nzb=0;ca=a.charAt(ia);cb=b.charAt(ib);while(isWhitespaceChar(ca)||ca==='0'){if(ca==='0'){nza++;}else{nza=0;} ca=a.charAt(++ia);} while(isWhitespaceChar(cb)||cb==='0'){if(cb==='0'){nzb++;}else{nzb=0;} cb=b.charAt(++ib);} if(isDigitChar(ca)&&isDigitChar(cb)){if((result=compareRight(a.substring(ia),b.substring(ib)))!==0){return result;}} if(ca==='0'&&cb==='0'){return nza-nzb;} if(cacb){return+1;} ++ia;++ib;}} function strnatcmp(f_string1,f_string2,f_version){var i=0;if(f_version==undefined){f_version=false;} var __strnatcmp_split=function(f_string){var result=[];var buffer='';var chr='';var i=0,f_stringl=0;var text=true;f_stringl=f_string.length;for(i=0;i0){result[result.length]=buffer;buffer='';} text=false;} buffer+=chr;}else if((text==false)&&(chr=='.')&&(i<(f_string.length-1))&&(f_string.substring(i+1,i+2).match(/\d/))){result[result.length]=buffer;buffer='';}else{if(text==false){if(buffer.length>0){result[result.length]=parseInt(buffer,10);buffer='';} text=true;} buffer+=chr;}} if(buffer.length>0){if(text){result[result.length]=buffer;}else{result[result.length]=parseInt(buffer,10);}} return result;};var array1=__strnatcmp_split(f_string1+'');var array2=__strnatcmp_split(f_string2+'');var len=array1.length;var text=true;var result=-1;var r=0;if(len>array2.length){len=array2.length;result=1;} for(i=0;is2)?1:-1));} function strpbrk(haystack,char_list){for(var i=0,len=haystack.length;i=0){return haystack.slice(i);}} return false;} function strpos(haystack,needle,offset){var i=(haystack+'').indexOf(needle,(offset||0));return i===-1?false:i;} function strrchr(haystack,needle){var pos=0;if(typeof needle!=='string'){needle=String.fromCharCode(parseInt(needle,10));} needle=needle.charAt(0);pos=haystack.lastIndexOf(needle);if(pos===-1){return false;} return haystack.substr(pos);} function strrev(string){string=string+'';var grapheme_extend=/(.)([\uDC00-\uDFFF\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065E\u0670\u06D6-\u06DC\u06DE-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0901-\u0903\u093C\u093E-\u094D\u0951-\u0954\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C01-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C82\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D02\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F90-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B6-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u19B0-\u19C0\u19C8\u19C9\u1A17-\u1A1B\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAA\u1C24-\u1C37\u1DC0-\u1DE6\u1DFE\u1DFF\u20D0-\u20F0\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA67C\uA67D\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C4\uA926-\uA92D\uA947-\uA953\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uFB1E\uFE00-\uFE0F\uFE20-\uFE26]+)/g;string=string.replace(grapheme_extend,'$2$1');return string.split('').reverse().join('');} function strripos(haystack,needle,offset){haystack=(haystack+'').toLowerCase();needle=(needle+'').toLowerCase();var i=-1;if(offset){i=(haystack+'').slice(offset).lastIndexOf(needle);if(i!==-1){i+=offset;}}else{i=(haystack+'').lastIndexOf(needle);} return i>=0?i:false;} function strrpos(haystack,needle,offset){var i=-1;if(offset){i=(haystack+'').slice(offset).lastIndexOf(needle);if(i!==-1){i+=offset;}}else{i=(haystack+'').lastIndexOf(needle);} return i>=0?i:false;} function strspn(str1,str2,start,lgth){var found;var stri;var strj;var j=0;var i=0;start=start?(start<0?(str1.length+start):start):0;lgth=lgth?((lgth<0)?(str1.length+lgth-start):lgth):str1.length-start;str1=str1.substr(start,lgth);for(i=0;i0){if(m[0]=='last'){diff-=7;}}else{if(m[0]=='next'){diff+=7;}} now.setDate(now.getDate()+diff);}} break;default:if(/\d+/.test(m[0])){num*=parseInt(m[0],10);switch(m[1].substring(0,3)){case'yea':now.setFullYear(now.getFullYear()+num);break;case'mon':now.setMonth(now.getMonth()+num);break;case'wee':now.setDate(now.getDate()+(num*7));break;case'day':now.setDate(now.getDate()+num);break;case'hou':now.setHours(now.getHours()+num);break;case'min':now.setMinutes(now.getMinutes()+num);break;case'sec':now.setSeconds(now.getSeconds()+num);break;}}else{return false;} break;} return true;};match=strTmp.match(/^(\d{2,4}-\d{2}-\d{2})(?:\s(\d{1,2}:\d{2}(:\d{2})?)?(?:\.(\d+))?)?$/);if(match!=null){if(!match[2]){match[2]='00:00:00';}else if(!match[3]){match[2]+=':00';} s=match[1].split(/-/g);for(i in __is.mon){if(__is.mon[i]==s[1]-1){s[1]=i;}} s[0]=parseInt(s[0],10);s[0]=(s[0]>=0&&s[0]<=69)?'20'+(s[0]<10?'0'+s[0]:s[0]+''):(s[0]>=70&&s[0]<=99)?'19'+s[0]:s[0]+'';return parseInt(this.strtotime(s[2]+' '+s[1]+' '+s[0]+' '+match[2])+(match[4]?match[4]/1000:''),10);} var regex='([+-]?\\d+\\s'+'(years?|months?|weeks?|days?|hours?|min|minutes?|sec|seconds?'+'|sun\\.?|sunday|mon\\.?|monday|tue\\.?|tuesday|wed\\.?|wednesday'+'|thu\\.?|thursday|fri\\.?|friday|sat\\.?|saturday)'+'|(last|next)\\s'+'(years?|months?|weeks?|days?|hours?|min|minutes?|sec|seconds?'+'|sun\\.?|sunday|mon\\.?|monday|tue\\.?|tuesday|wed\\.?|wednesday'+'|thu\\.?|thursday|fri\\.?|friday|sat\\.?|saturday))'+'(\\sago)?';match=strTmp.match(new RegExp(regex,'gi'));if(match==null){return false;} for(i=0;i=es;i--){if(/[\uDC00-\uDFFF]/.test(str.charAt(i))&&/[\uD800-\uDBFF]/.test(str.charAt(i-1))){start--;es--;}}}else{var surrogatePairs=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;while((surrogatePairs.exec(str))!=null){var li=surrogatePairs.lastIndex;if(li-2=end||start<0){return false;} if(len<0){for(i=end-1,el=(end+=len);i>=el;i--){if(/[\uDC00-\uDFFF]/.test(str.charAt(i))&&/[\uD800-\uDBFF]/.test(str.charAt(i-1))){end--;el--;}} if(start>end){return false;} return str.slice(start,end);}else{se=start+len;for(i=start;i=str.length||start<0||start>end?!1:str.slice(start,end);} return undefined;} function substr_compare(main_str,str,offset,length,case_insensitivity){if(!offset&&offset!==0){throw'Missing offset for substr_compare()';} if(offset<0){offset=main_str.length+offset;} if(length&&length>(main_str.length-offset)){return false;} length=length||main_str.length-offset;main_str=main_str.substr(offset,length);str=str.substr(0,length);if(case_insensitivity){main_str=(main_str+'').toLowerCase();str=(str+'').toLowerCase();if(main_str==str){return 0;} return(main_str>str)?1:-1;} return((main_str==str)?0:((main_str>str)?1:-1));} function substr_count(haystack,needle,offset,length){var pos=0,cnt=0;haystack+='';needle+='';if(isNaN(offset)){offset=0;} if(isNaN(length)){length=0;} offset--;while((offset=haystack.indexOf(needle,offset+1))!=-1){if(length>0&&(offset+needle.length)>length){return false;}else{cnt++;}} return cnt;} function substr_replace(str,replace,start,length){if(start<0){start=start+str.length;} length=length!==undefined?length:str.length;if(length<0){length=length+str.length-start;} return str.slice(0,start)+replace.substr(0,length)+replace.slice(length)+str.slice(start+length);} function tan(arg){return Math.tan(arg);} function tanh(arg){return(Math.exp(arg)-Math.exp(-arg))/(Math.exp(arg)+Math.exp(-arg));} function time(){return Math.floor(new Date().getTime()/1000);} function trim(str,charlist){var whitespace,l=0,i=0;str+='';if(!charlist){whitespace=" \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000";}else{charlist+='';whitespace=charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g,'$1');} l=str.length;for(i=0;i=0;i--){if(whitespace.indexOf(str.charAt(i))===-1){str=str.substring(0,i+1);break;}} return whitespace.indexOf(str.charAt(0))===-1?str:'';} function uasort(inputArr,sorter){var valArr=[],tempKeyVal,tempValue,ret,k='',i=0,strictForIn=false,populateArr={};if(typeof sorter==='string'){sorter=this[sorter];}else if(Object.prototype.toString.call(sorter)==='[object Array]'){sorter=this[sorter[0]][sorter[1]];} this.php_js=this.php_js||{};this.php_js.ini=this.php_js.ini||{};strictForIn=this.php_js.ini['phpjs.strictForIn']&&this.php_js.ini['phpjs.strictForIn'].local_value&&this.php_js.ini['phpjs.strictForIn'].local_value!=='off';populateArr=strictForIn?inputArr:populateArr;for(k in inputArr){if(inputArr.hasOwnProperty(k)){valArr.push([k,inputArr[k]]);if(strictForIn){delete inputArr[k];}}} valArr.sort(function(a,b){return sorter(a[1],b[1]);});for(i=0;idata.length){error('Error','Invalid');} buf.push(chr);chr=data.slice(offset+(i-1),offset+i);i+=1;} return[buf.length,buf.join('')];};var read_chrs=function(data,offset,length){var buf;buf=[];for(var i=0;i191&&c1<224){c2=str_data.charCodeAt(i+1);tmp_arr[ac++]=String.fromCharCode(((c1&31)<<6)|(c2&63));i+=2;}else{c2=str_data.charCodeAt(i+1);c3=str_data.charCodeAt(i+2);tmp_arr[ac++]=String.fromCharCode(((c1&15)<<12)|((c2&63)<<6)|(c3&63));i+=3;}} return tmp_arr.join('');} function utf8_encode(argString){if(argString===null||typeof argString==="undefined"){return"";} var string=(argString+'');var utftext="",start,end,stringl=0;start=end=0;stringl=string.length;for(var n=0;n127&&c1<2048){enc=String.fromCharCode((c1>>6)|192)+String.fromCharCode((c1&63)|128);}else{enc=String.fromCharCode((c1>>12)|224)+String.fromCharCode(((c1>>6)&63)|128)+String.fromCharCode((c1&63)|128);} if(enc!==null){if(end>start){utftext+=string.slice(start,end);} utftext+=enc;start=end=n+1;}} if(end>start){utftext+=string.slice(start,stringl);} return utftext;} function var_dump(){var output='',pad_char=' ',pad_val=4,lgth=0,i=0,d=this.window.document;var _getFuncName=function(fn){var name=(/\W*function\s+([\w\$]+)\s*\(/).exec(fn);if(!name){return'(Anonymous)';} return name[1];};var _repeat_char=function(len,pad_char){var str='';for(var i=0;i0){cur_depth++;} var base_pad=_repeat_char(pad_val*(cur_depth-1),pad_char);var thick_pad=_repeat_char(pad_val*(cur_depth+1),pad_char);var str='';var val='';if(typeof obj==='object'&&obj!==null){if(obj.constructor&&_getFuncName(obj.constructor)==='PHPJS_Resource'){return obj.var_dump();} lgth=0;for(someProp in obj){lgth++;} str+='array('+lgth+') {\n';for(var key in obj){var objVal=obj[key];if(typeof objVal==='object'&&objVal!==null&&!(objVal instanceof Date)&&!(objVal instanceof RegExp)&&!objVal.nodeName){str+=thick_pad+'['+key+'] =>\n'+thick_pad+_formatArray(objVal,cur_depth+1,pad_val,pad_char);}else{val=_getInnerVal(objVal,thick_pad);str+=thick_pad+'['+key+'] =>\n'+thick_pad+val+'\n';}} str+=base_pad+'}\n';}else{str=_getInnerVal(obj,thick_pad);} return str;};output=_formatArray(arguments[0],0,pad_val,pad_char);for(i=1;i'+output+'');}catch(e){this.echo(output);}}} function var_export(mixed_expression,bool_return){var retstr='',iret='',cnt=0,x=[],i=0,funcParts=[],idtLevel=arguments[2]||2,innerIndent='',outerIndent='';var getFuncName=function(fn){var name=(/\W*function\s+([\w\$]+)\s*\(/).exec(fn);if(!name){return'(Anonymous)';} return name[1];};var _makeIndent=function(idtLevel){return(new Array(idtLevel+1)).join(' ');};var __getType=function(inp){var i=0;var match,type=typeof inp;if(type==='object'&&inp.constructor&&getFuncName(inp.constructor)==='PHPJS_Resource'){return'resource';} if(type==='function'){return'function';} if(type==='object'&&!inp){return'null';} if(type==="object"){if(!inp.constructor){return'object';} var cons=inp.constructor.toString();match=cons.match(/(\w+)\(/);if(match){cons=match[1].toLowerCase();} var types=["boolean","number","string","array"];for(i=0;i/g,'>'):value;x[cnt++]=innerIndent+i+' => '+(__getType(mixed_expression[i])==='array'?'\n':'')+value;} iret=x.join(',\n');retstr=outerIndent+"array (\n"+iret+'\n'+outerIndent+')';}else if(type==='function'){funcParts=mixed_expression.toString().match(/function .*?\((.*?)\) \{([\s\S]*)\}/);retstr="create_function ('"+funcParts[1]+"', '"+funcParts[2].replace(new RegExp("'",'g'),"\\'")+"')";}else if(type==='resource'){retstr='NULL';}else{retstr=(typeof(mixed_expression)!=='string')?mixed_expression:"'"+mixed_expression.replace(/(["'])/g,"\\$1").replace(/\0/g,"\\0")+"'";} if(bool_return!==true){this.echo(retstr);return null;}else{return retstr;}} function vprintf(format,args){var body,elmt;var ret='',d=this.window.document;var HTMLNS='http://www.w3.org/1999/xhtml';body=d.getElementsByTagNameNS?(d.getElementsByTagNameNS(HTMLNS,'body')[0]?d.getElementsByTagNameNS(HTMLNS,'body')[0]:d.documentElement.lastChild):d.getElementsByTagName('body')[0];if(!body){return false;} ret=this.sprintf.apply(this,[format].concat(args));elmt=d.createTextNode(ret);body.appendChild(elmt);return ret.length;} function vsprintf(format,args){return this.sprintf.apply(this,[format].concat(args));} function wordwrap(str,int_width,str_break,cut){var m=((arguments.length>=2)?arguments[1]:75);var b=((arguments.length>=3)?arguments[2]:"\n");var c=((arguments.length>=4)?arguments[3]:false);var i,j,l,s,r;str+='';if(m<1){return str;} for(i=-1,l=(r=str.split(/\r\n|\n|\r/)).length;++im;r[i]+=s.slice(0,j)+((s=s.slice(j)).length?b:"")){j=c==2||(j=s.slice(0,m+1).match(/\S*(\s)?$/))[1]?m:j.input.length-j[0].length||c==1&&m||j.input.length+(j=s.slice(m).match(/^\S*/)).input.length;}} return r.join("\n");}PK<\Qz z 1assets/lib/vc-tta-autoplay/vc-tta-autoplay.min.jsnu[+function($){"use strict";function startAutoPlay(){$("[data-vc-tta-autoplay]").each(function(){$(this).vcTtaAutoPlay()})}var Plugin,TtaAutoPlay,old;Plugin=function(action,options){var args;return args=Array.prototype.slice.call(arguments,1),this.each(function(){var $this,data;$this=$(this),data=$this.data("vc.tta.autoplay"),data||(data=new TtaAutoPlay($this,$.extend(!0,{},TtaAutoPlay.DEFAULTS,$this.data("vc-tta-autoplay"),options)),$this.data("vc.tta.autoplay",data)),"string"==typeof action?data[action].apply(data,args):data.start(args)})},TtaAutoPlay=function($element,options){this.$element=$element,this.options=options},TtaAutoPlay.DEFAULTS={delay:5e3,pauseOnHover:!0,stopOnClick:!0},TtaAutoPlay.prototype.show=function(){this.$element.find("[data-vc-accordion]:eq(0)").vcAccordion("showNext",{changeHash:!1,scrollTo:!1})},TtaAutoPlay.prototype.hasTimer=function(){return void 0!==this.$element.data("vc.tta.autoplay.timer")},TtaAutoPlay.prototype.setTimer=function(windowInterval){this.$element.data("vc.tta.autoplay.timer",windowInterval)},TtaAutoPlay.prototype.getTimer=function(){return this.$element.data("vc.tta.autoplay.timer")},TtaAutoPlay.prototype.deleteTimer=function(){this.$element.removeData("vc.tta.autoplay.timer")},TtaAutoPlay.prototype.start=function(){function stopHandler(e){e.preventDefault&&e.preventDefault(),that.hasTimer()&&Plugin.call($this,"stop")}function hoverHandler(e){e.preventDefault&&e.preventDefault(),that.hasTimer()&&Plugin.call($this,"mouseleave"===e.type?"resume":"pause")}var $this,that;$this=this.$element,that=this,this.hasTimer()||(this.setTimer(window.setInterval(this.show.bind(this),this.options.delay)),this.options.stopOnClick&&$this.on("click.vc.tta.autoplay.data-api","[data-vc-accordion]",stopHandler),this.options.pauseOnHover&&$this.hover(hoverHandler))},TtaAutoPlay.prototype.resume=function(){this.hasTimer()&&this.setTimer(window.setInterval(this.show.bind(this),this.options.delay))},TtaAutoPlay.prototype.stop=function(){this.pause(),this.deleteTimer(),this.$element.off("click.vc.tta.autoplay.data-api mouseenter mouseleave")},TtaAutoPlay.prototype.pause=function(){var timer;void 0!==(timer=this.getTimer())&&window.clearInterval(timer)},old=$.fn.vcTtaAutoPlay,$.fn.vcTtaAutoPlay=Plugin,$.fn.vcTtaAutoPlay.Constructor=TtaAutoPlay,$.fn.vcTtaAutoPlay.noConflict=function(){return $.fn.vcTtaAutoPlay=old,this},$(document).ready(startAutoPlay)}(window.jQuery);PK<\y* * *assets/lib/vc_chart/jquery.vc_chart.min.jsnu[!function($){function VcChart(element,options){this.el=element,this.$el=$(this.el),this.options=$.extend({color:"#f7f7f7",units:"",label_selector:".vc_pie_chart_value",back_selector:".vc_pie_chart_back",responsive:!0},options),this.init()}VcChart.prototype={constructor:VcChart,_progress_v:0,animated:!1,init:function(){this.color=this.options.color,this.value=this.$el.data("pie-value")/100,this.label_value=this.$el.data("pie-label-value")||this.$el.data("pie-value"),this.$wrapper=$(".vc_pie_wrapper",this.$el),this.$label=$(this.options.label_selector,this.$el),this.$back=$(this.options.back_selector,this.$el),this.$canvas=this.$el.find("canvas"),this.draw(),this.setWayPoint(),!0===this.options.responsive&&this.setResponsive()},setResponsive:function(){var that=this;$(window).resize(function(){!0===that.animated&&that.circle.stop(),that.draw(!0)})},draw:function(redraw){var radius,w=this.$el.addClass("vc_ready").width();w||(w=this.$el.parents(":visible").first().width()-2),w=w/100*80,radius=w/2-5-1,this.$wrapper.css({width:w+"px"}),this.$label.css({width:w,height:w,"line-height":w+"px"}),this.$back.css({width:w,height:w}),this.$canvas.attr({width:w+"px",height:w+"px"}),this.$el.addClass("vc_ready"),this.circle=new ProgressCircle({canvas:this.$canvas.get(0),minRadius:radius,arcWidth:5}),!0===redraw&&!0===this.animated&&(this._progress_v=this.value,this.circle.addEntry({fillColor:this.color,progressListener:$.proxy(this.setProgress,this)}).start())},setProgress:function(){if(this._progress_v>=this.value)return this.circle.stop(),this.$label.text(this.label_value+this.options.units),this._progress_v;this._progress_v+=.005;var label_value=this._progress_v/this.value*this.label_value,val=Math.round(label_value)+this.options.units;return this.$label.text(val),this._progress_v},animate:function(){!0!==this.animated&&(this.animated=!0,this.circle.addEntry({fillColor:this.color,progressListener:$.proxy(this.setProgress,this)}).start(5))},setWayPoint:function(){void 0!==$.fn.waypoint?this.$el.waypoint($.proxy(this.animate,this),{offset:"85%"}):this.animate()}},$.fn.vcChat=function(option,value){return this.each(function(){var $this=$(this),data=$this.data("vc_chart"),options="object"==typeof option?option:{color:$this.data("pie-color"),units:$this.data("pie-units")};void 0===option&&$this.data("vc_chart",data=new VcChart(this,options)),"string"==typeof option&&data[option](value)})},"function"!=typeof window.vc_pieChart&&(window.vc_pieChart=function(){$(".vc_pie_chart:visible").vcChat()}),$(document).ready(function(){!window.vc_iframe&&vc_pieChart()})}(window.jQuery);PK<\;yy/assets/lib/vc_round_chart/vc_round_chart.min.jsnu[!function($){$.fn.vcRoundChart=function(){var waypoint=void 0!==$.fn.waypoint;return this.each(function(){function addchart(){$this.data("animated")||(chart="doughnut"===$this.data("vcType")?new Chart(ctx).Doughnut(data,options):new Chart(ctx).Pie(data,options),$this.data("vcChartId",chart.id),$this.data("chart",chart),$this.data("animated",!0))}var data,gradient,chart,i,j,$this=$(this),ctx=$this.find("canvas")[0].getContext("2d"),stroke_width=$this.data("vcStrokeWidth")?parseInt($this.data("vcStrokeWidth"),10):0,options={showTooltips:$this.data("vcTooltips"),animationEasing:$this.data("vcAnimation"),segmentStrokeColor:$this.data("vcStrokeColor"),segmentShowStroke:0!==stroke_width,segmentStrokeWidth:stroke_width,responsive:!0},color_keys=["color","highlight"];for($this.data("chart")&&($this.data("chart").destroy(),$this.removeData("animated")),data=$this.data("vcValues"),ctx.canvas.width=$this.width(),ctx.canvas.height=$this.width(),i=data.length-1;0<=i;i--)for(j=color_keys.length-1;0<=j;j--)"object"==typeof data[i][color_keys[j]]&&2===data[i][color_keys[j]].length&&(gradient=ctx.createLinearGradient(0,0,0,ctx.canvas.height),gradient.addColorStop(0,data[i][color_keys[j]][0]),gradient.addColorStop(1,data[i][color_keys[j]][1]),data[i][color_keys[j]]=gradient);waypoint?$this.waypoint($.proxy(addchart,$this),{offset:"85%"}):addchart()}),this},"function"!=typeof window.vc_round_charts&&(window.vc_round_charts=function(model_id){var selector=".vc_round-chart";void 0!==model_id&&(selector='[data-model-id="'+model_id+'"] '+selector),$(selector).vcRoundChart()}),$(document).ready(function(){!window.vc_iframe&&vc_round_charts()})}(jQuery);PK<\P,..+assets/lib/vc_accordion/vc-accordion.min.jsnu[+function($){"use strict";function Plugin(action,options){var args;return args=Array.prototype.slice.call(arguments,1),this.each(function(){var $this,data;$this=$(this),data=$this.data("vc.accordion"),data||(data=new Accordion($this,$.extend(!0,{},options)),$this.data("vc.accordion",data)),"string"==typeof action&&data[action].apply(data,args)})}var Accordion,clickHandler,old,hashNavigation;Accordion=function($element,options){this.$element=$element,this.activeClass="vc_active",this.animatingClass="vc_animating",this.useCacheFlag=void 0,this.$target=void 0,this.$targetContent=void 0,this.selector=void 0,this.$container=void 0,this.animationDuration=void 0,this.index=0},Accordion.transitionEvent=function(){var transition,transitions,el;el=document.createElement("vcFakeElement"),transitions={transition:"transitionend",MSTransition:"msTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(transition in transitions)if(void 0!==el.style[transition])return transitions[transition]},Accordion.emulateTransitionEnd=function($el,duration){var callback,called;called=!1,duration||(duration=250),$el.one(Accordion.transitionName,function(){called=!0}),callback=function(){called||$el.trigger(Accordion.transitionName)},setTimeout(callback,duration)},Accordion.DEFAULT_TYPE="collapse",Accordion.transitionName=Accordion.transitionEvent(),Accordion.prototype.controller=function(options){var $this;$this=this.$element;var action=options;"string"!=typeof action&&(action=$this.data("vcAction")||this.getContainer().data("vcAction")),void 0===action&&(action=Accordion.DEFAULT_TYPE),"string"==typeof action&&Plugin.call($this,action,options)},Accordion.prototype.isCacheUsed=function(){var useCache,that;return that=this,useCache=function(){return!1!==that.$element.data("vcUseCache")},void 0===this.useCacheFlag&&(this.useCacheFlag=useCache()),this.useCacheFlag},Accordion.prototype.getSelector=function(){var findSelector,$this;return $this=this.$element,findSelector=function(){var selector;return selector=$this.data("vcTarget"),selector||(selector=$this.attr("href")),selector},this.isCacheUsed()?(void 0===this.selector&&(this.selector=findSelector()),this.selector):findSelector()},Accordion.prototype.findContainer=function(){var $container;return $container=this.$element.closest(this.$element.data("vcContainer")),$container.length||($container=$("body")),$container},Accordion.prototype.getContainer=function(){return this.isCacheUsed()?(void 0===this.$container&&(this.$container=this.findContainer()),this.$container):this.findContainer()},Accordion.prototype.getTarget=function(){var selector,that,getTarget;return that=this,selector=that.getSelector(),getTarget=function(){var element;return element=that.getContainer().find(selector),element.length||(element=that.getContainer().filter(selector)),element},this.isCacheUsed()?(void 0===this.$target&&(this.$target=getTarget()),this.$target):getTarget()},Accordion.prototype.getTargetContent=function(){var $target,$targetContent;return $target=this.getTarget(),this.isCacheUsed()?(void 0===this.$targetContent&&($targetContent=$target,$target.data("vcContent")&&($targetContent=$target.find($target.data("vcContent")),$targetContent.length||($targetContent=$target)),this.$targetContent=$targetContent),this.$targetContent):$target.data("vcContent")&&($targetContent=$target.find($target.data("vcContent")),$targetContent.length)?$targetContent:$target},Accordion.prototype.getTriggers=function(){var i;return i=0,this.getContainer().find("[data-vc-accordion]").each(function(){var accordion,$this;$this=$(this),accordion=$this.data("vc.accordion"),void 0===accordion&&($this.vcAccordion(),accordion=$this.data("vc.accordion")),accordion&&accordion.setIndex&&accordion.setIndex(i++)})},Accordion.prototype.setIndex=function(index){this.index=index},Accordion.prototype.getIndex=function(){return this.index},Accordion.prototype.triggerEvent=function(event,opt){var $event;"string"==typeof event&&($event=$.Event(event),this.$element.trigger($event,opt))},Accordion.prototype.getActiveTriggers=function(){return this.getTriggers().filter(function(){var $this,accordion;return $this=$(this),accordion=$this.data("vc.accordion"),accordion.getTarget().hasClass(accordion.activeClass)})},Accordion.prototype.changeLocationHash=function(){var id,$target;$target=this.getTarget(),$target.length&&(id=$target.attr("id")),id&&(history.pushState?history.pushState(null,null,"#"+id):location.hash="#"+id)},Accordion.prototype.isActive=function(){return this.getTarget().hasClass(this.activeClass)},Accordion.prototype.getAnimationDuration=function(){var findAnimationDuration,that;return that=this,findAnimationDuration=function(){var $targetContent,duration;return void 0===Accordion.transitionName?"0s":($targetContent=that.getTargetContent(),duration=$targetContent.css("transition-duration"),duration=duration.split(",")[0])},this.isCacheUsed()?(void 0===this.animationDuration&&(this.animationDuration=findAnimationDuration()),this.animationDuration):findAnimationDuration()},Accordion.prototype.getAnimationDurationMilliseconds=function(){var duration;return duration=this.getAnimationDuration(),"ms"===duration.substr(-2)?parseInt(duration):"s"===duration.substr(-1)?Math.round(1e3*parseFloat(duration)):void 0},Accordion.prototype.isAnimated=function(){return parseFloat(this.getAnimationDuration())>0},Accordion.prototype.show=function(opt){var $target,that,$targetContent;that=this,$target=that.getTarget(),$targetContent=that.getTargetContent(),that.isActive()||(that.isAnimated()?(that.triggerEvent("beforeShow.vc.accordion"),$target.queue(function(next){$targetContent.one(Accordion.transitionName,function(){$target.removeClass(that.animatingClass),$targetContent.attr("style",""),that.triggerEvent("afterShow.vc.accordion",opt)}),Accordion.emulateTransitionEnd($targetContent,that.getAnimationDurationMilliseconds()+100),next()}).queue(function(next){$targetContent.attr("style",""),$targetContent.css({position:"absolute",visibility:"hidden",display:"block"});var height=$targetContent.height();$targetContent.data("vcHeight",height),$targetContent.attr("style",""),next()}).queue(function(next){$targetContent.height(0),$targetContent.css({"padding-top":0,"padding-bottom":0}),next()}).queue(function(next){$target.addClass(that.animatingClass),$target.addClass(that.activeClass),("object"==typeof opt&&opt.hasOwnProperty("changeHash")&&opt.changeHash||void 0===opt)&&that.changeLocationHash(),that.triggerEvent("show.vc.accordion",opt),next()}).queue(function(next){var height=$targetContent.data("vcHeight");$targetContent.animate({height:height},{duration:that.getAnimationDurationMilliseconds(),complete:function(){$targetContent.data("events")||$targetContent.attr("style","")}}),$targetContent.css({"padding-top":"","padding-bottom":""}),next()})):($target.addClass(that.activeClass),that.triggerEvent("show.vc.accordion",opt)))},Accordion.prototype.hide=function(opt){var $target,that,$targetContent;that=this,$target=that.getTarget(),$targetContent=that.getTargetContent(),that.isActive()&&(that.isAnimated()?(that.triggerEvent("beforeHide.vc.accordion"),$target.queue(function(next){$targetContent.one(Accordion.transitionName,function(){$target.removeClass(that.animatingClass),$targetContent.attr("style",""),that.triggerEvent("afterHide.vc.accordion",opt)}),Accordion.emulateTransitionEnd($targetContent,that.getAnimationDurationMilliseconds()+100),next()}).queue(function(next){$target.addClass(that.animatingClass),$target.removeClass(that.activeClass),that.triggerEvent("hide.vc.accordion",opt),next()}).queue(function(next){var height=$targetContent.height();$targetContent.height(height),next()}).queue(function(next){$targetContent.animate({height:0},that.getAnimationDurationMilliseconds()),$targetContent.css({"padding-top":0,"padding-bottom":0}),next()})):($target.removeClass(that.activeClass),that.triggerEvent("hide.vc.accordion",opt)))},Accordion.prototype.toggle=function(opt){var $this;$this=this.$element,this.isActive()?Plugin.call($this,"hide",opt):Plugin.call($this,"show",opt)},Accordion.prototype.dropdown=function(opt){var $this;$this=this.$element,this.isActive()?Plugin.call($this,"hide",opt):(Plugin.call($this,"show",opt),$(document).on("click.vc.accordion.data-api.dropdown",function(e){Plugin.call($this,"hide",opt),$(document).off(e)}))},Accordion.prototype.collapse=function(opt){var $this,$triggers;$this=this.$element,$triggers=this.getActiveTriggers().filter(function(){return $this[0]!==this}),$triggers.length&&Plugin.call($triggers,"hide",opt),Plugin.call($this,"show",opt)},Accordion.prototype.collapseAll=function(opt){var $this,$triggers;$this=this.$element,$triggers=this.getActiveTriggers().filter(function(){return $this[0]!==this}),$triggers.length&&Plugin.call($triggers,"hide",opt),Plugin.call($this,"toggle",opt)},Accordion.prototype.showNext=function(opt){var $triggers,$activeTriggers,activeIndex;if($triggers=this.getTriggers(),$activeTriggers=this.getActiveTriggers(),$triggers.length){if($activeTriggers.length){var lastActiveAccordion;lastActiveAccordion=$activeTriggers.eq($activeTriggers.length-1).vcAccordion().data("vc.accordion"),lastActiveAccordion&&lastActiveAccordion.getIndex&&(activeIndex=lastActiveAccordion.getIndex())}-1this.$items.length-1||0>pos))return this.sliding?this.$element.one("slid",function(){that.to(pos)}):activeIndex==pos?this.pause().cycle():this.slide(pos>activeIndex?"next":"prev",$(this.$items[pos]))},Carousel.prototype.pause=function(e){return e||(this.paused=!0),this.$element.find(".vc_right.vc_carousel-control, .vc_left.vc_carousel-control").length&&$.support.transition.end&&(this.$element.trigger($.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},Carousel.prototype.next=function(){if(!this.sliding)return this.slide("next")},Carousel.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},Carousel.prototype.slide=function(type,next){var $active=this.$element.find(".vc_item.vc_active"),$next=next||$active[type](),isCycling=this.interval,direction="next"===type?"vc_left":"vc_right",fallback="next"===type?"first":"last",that=this;if(!$next.length){if(!this.options.wrap)return void this.returnSwipedSlide();$next=this.$element.find(".vc_item")[fallback]()}this.sliding=!0,isCycling&&this.pause();var e=$.Event("slide.vc.carousel",{relatedTarget:$next[0],direction:direction});if(!$next.hasClass("vc_active")){if(this.$indicators.length&&(this.$indicators.find(".vc_active").removeClass("vc_active"),this.$indicators.find(".vc_partial").removeClass("vc_partial"),this.$element.one("slid",function(){var index=that.getActiveIndex(),$nextIndicator=$(that.$indicators.children().slice(index,that.getActiveIndex()+that.options.perView));$nextIndicator&&$nextIndicator.addClass("vc_active"),that.options.partial&&$nextIndicator&&(index+1this.items_count?this.current_index=0:0>this.current_index&&(this.current_index=this.items_count-1),this.options.autoHeight?this.current_pos_value=-1*this._step*this.current_index:this.current_pos_value=-1*$next.position()[this.animation_position],this.options.partial&&this.current_index>=this.items_count-1&&(this.current_pos_value+=this._step*(1-this.partial_part)),$.support.transition&&this.$element.hasClass("vc_slide")){if(this.$element.trigger(e),e.isDefaultPrevented())return;this.$slideline_inner.addClass("vc_transition").css(this.animation_position,this.current_pos_value+that.pos_units),this.options.autoHeight||this.recalculateSlidelineHeight($next.height(),!0),this.$slideline_inner.one($.support.transition.end,function(){$next.addClass("vc_active"),$active.removeClass("vc_active"),that.$slideline_inner.removeClass([type,"vc_transition"].join(" ")),that.sliding=!1,that.removeSwipeAnimationSpeed(),setTimeout(function(){that.$element.trigger("slid")},0)}).emulateTransitionEnd(this.transition_speed)}else{if(this.$element.trigger(e),e.isDefaultPrevented())return;$active.removeClass("vc_active"),$next.addClass("vc_active"),this.sliding=!1,this.$slideline_inner.css(this.animation_position,this.current_pos_value+that.pos_units)}return isCycling&&this.cycle(),this}},Carousel.prototype.setSwipeAnimationSpeed=function(){this.$slideline_inner.addClass("vc_swipe-transition")},Carousel.prototype.removeSwipeAnimationSpeed=function(){this.$slideline_inner.removeClass("vc_swipe-transition")},Carousel.prototype.velocity=function(time,x){return{x:Math.abs(x/time)||0}},Carousel.prototype.recalculateSlidelineHeight=function(height,animate){!0===animate?this.$slideline.animate({height:height}):this.$slideline.height(height)},Carousel.prototype.resizeAction=function(){var max_height=0,new_slideline_height=0;"horizontal"===this.options.mode&&(this.el_effect_size=this.$element.width()*(this.options.partial?this.partial_part:1),this.$slideline.width(this.items_count*this.el_effect_size)),this.options.autoHeight?(this.$items.height("auto"),this.$items.each(function(){var item_height=$(this).height();item_height>max_height&&(max_height=item_height)}),this.$items.height(max_height)):this.recalculateSlidelineHeight(this.$active.height()),"vertical"===this.options.mode&&(this._step=this.$active.height(),new_slideline_height=this.$active.height()*this.options.perView*(this.options.partial?2-this.partial_part:1),this.recalculateSlidelineHeight(new_slideline_height,!1),this.$slideline_inner.css({top:-1*this.$active.position().top}),this.el_effect_size=this._step)},Carousel.prototype.returnSwipedSlide=function(){var params={};params[this.animation_position]=this.current_pos_value+this.pos_units,this.$slideline_inner.animate(params)},Carousel.prototype._build=function(){var el=this.$element.get(0),_touch_start_position=!1,_touch_start_time=0,_pos_before_touch=0,_diff=0,_moved=!1,that=this,mode=this.options.mode;if(this.getActiveIndex(),this.el_width=0,this.items_count=this.$items.length,this.$slideline=this.$element.find(".vc_carousel-slideline"),this.$slideline_inner=this.$slideline.find("> div"),this.slideline_inner=this.$slideline_inner.get(0),this.partial_part=.8,this._slide_width=0,this.swipe_velocity=.7,this.current_pos_value=0,this.current_index=0,this.el_effect_size=0,this.transition_speed=600,this.$left_control=this.$element.find(".vc_left.vc_carousel-control"),this.$right_control=this.$element.find(".vc_right.vc_carousel-control"),this.options.partial&&(this.options.autoHeight=!0),1that.swipe_velocity&&0>part||part<=-.7?(that.setSwipeAnimationSpeed(),that.next()):velocity.x>that.swipe_velocity||.7<=part?(that.setSwipeAnimationSpeed(),that.prev()):that.returnSwipedSlide(),_moved=!1)},!1),this.$element.addClass("vc_build"),this};var old=$.fn.carousel;$.fn.carousel=function(option,value){return this.each(function(){var $this=$(this),data=$this.data("vc.carousel"),options=$.extend({},Carousel.DEFAULTS,$this.data(),"object"==typeof option&&option),action="string"==typeof option?option:options.slide;data||$this.data("vc.carousel",data=new Carousel(this,options)),"number"==typeof option?data.to(option):action?data[action](value):options.interval&&data.pause().cycle()})},$.fn.carousel.Constructor=Carousel,$.fn.carousel.noConflict=function(){return $.fn.carousel=old,this},$(document).off("click.vc.carousel.data-api").on("click.vc.carousel.data-api","[data-slide], [data-slide-to]",function(e){var href,$this=$(this),$target=$($this.attr("data-target")||(href=$this.attr("href"))&&href.replace(/.*(?=#[^\s]+$)/,"")),options=$.extend({},$target.data(),$this.data()),slideIndex=$this.attr("data-slide-to");slideIndex&&(options.interval=!1),$target.carousel(options),(slideIndex=$this.attr("data-slide-to"))&&$target.data("vc.carousel").to(slideIndex),e.preventDefault()}),$(window).on("load",function(){$('[data-ride="vc_carousel"]').each(function(){var $carousel=$(this);$carousel.carousel($carousel.data())})})}(window.jQuery);PK<\=assets/lib/vc_carousel/fonts/glyphicons-halflings-regular.ttfnu[�pFFTMh+� �GDEF OS/2il�8`cmap�/V��.cvt (��gasp���glyf���[Xhead8=�b,6hhea �xbd$hmtx�pb��loca���@ep�maxp.�g( nameԖ��gH|post�cQwj�ywebfK)Q�s@�=������������ �Z ��2�UKWN@ ��x���  , �(, �pX@ +� / _ �"&' '�� ��)�2�9�C�E�I�Y�`�i�y��������"�)�5�8�A�E�I�Y�i�y��������� *� / _ �"&' '���� �0�4�@�E�G�P�`�b�p�������� �$�0�7�@�C�H�P�`�p��������������f���ߴ�h����     ���������utmgf`_XWUOIC=76� �5 *+��  / / _ _ � �""&&' ' ''���� ��"� �),�0�26�4�99�@�C?�E�EC�G�ID�P�YG�`�`Q�b�iR�p�yZ����d����n��v��y��}� �"��$�)��0�5��7�8��@�A��C�E��H�I��P�Y��`�i��p�y������������������������������������������������������%�%��'�'�(���(h .�/<��2��<��2�/<��2��<��23!%3#(@���� ��(�ddLL!'#'7!5!'737!L�����ȷ�������ȷ�������ȷ�������LL !!!!!!L�p���p�,���p�,��pd��7!32>53#"'.'#7347#7367632#4.#"!!! �� 09C3JL3�ak��w$B �dq�d�%Ku��p<�3LJ9D?{d����JtB+0W5�ju�.�xd/5d�Z��gj7X0,Z>d.6��L�!!L�|������,�A!2654&#".#"��x��x.,,�n��BUq,�zx�awי kEPrd�L !%!!��PX�������d��P��L��g��X��,d�p�������� 764/&" '%'Mc �$^�f����M�y\ '� a�nf����`p�1�� %!!5!!�,��,� �� ddd&&��L� &7>54&&7>5�@JOW�OFS � @JOW$�OAX���r67)Q7q � �Orn)`*^���� "'#"  6& �,m��w���������������m,N���Ȏ�����dX�D>.54>�0{xuX6Cy��>>��yC8Zwwy�EH-Sv@9y��UU��y9@vS-I��G��  !3!7�������|ߒ��� �?�����p�'��G��  !3!'7#'#77�������|ߒ���VJ��MN��I��� �?�����p�+���ӎ���o��%!55"&=462#��P�%?���?%���d�3�|��|�3�d �L #'+/3!#3%!!#3#3%#3#3%#3#!!#3%#3#3%#3��P�dd���X�dd�|dd�dd�|dd�dd���X�Ddd�dd�|dd�ddL��Lddd�p�ddddddddd�p,dddddddLL/?#!"&5463!2#!"&5463!2#!"&5463!2#!"&5463!2��p�X�p����p�X�p��p��p����p��p� LL/?O_o�+"&=46;2+"&=46;2+"&=46;2+"&=46;2+"&=46;2+"&=46;2+"&=46;2+"&=46;2+"&=46;2,�����������������������������������[�������[�������L/?O_+"&=46;2#!"&=463!254&+";26%#!"&=463!2+"&=46;2#!"&=463!2,����D��|����D��|����D�������������[����"�*%''�2�����"4�����jjFF % ' 7  r�����������j���������������' "'#"  6& %3##5#5353�,m��w�������������dd�dd����m,N���Ȏ��������dd�d���� "'#"  6& !5�,m��x������������F����m+M���ȍ����������+4&+";2675".547 654&�ddd��[���՛[ҧg|�b�|���p��>�طv՛[[��v�(>�7�x����x�d�� %#3#3#3#3�����������������P ��������GQ%32?6?67'76?654/&/7&''&/&#"'72"&54�&("/&./�80P��P,<�-0&("/&2,�;.P ��P-<�-1�~~�~��� Q,=�,1&("-&3*�:/Q��Q/:�/.&0!)&1,�;.Q v~XY~~YXd���'+/37!2#!"&=463!5463!25!!#!"&5;#3#3#3#�  ��  ;),);d�����;)�D);ddd�dd�dd�ddL 2  2 d);;)ddd���)<<)��D��D��D�� #!!!#���������Y����pX�d��!#!"&5463!!X� ��  ������]  ~ �p,��   $  63!3�D�������_����V��b���d�������D�����V�d���� #!333! #��(���������2���p���,�P�,��L� !!3!3#3L������,���z����p�,�� ��dd��2".4>  63 33��ޠ__���ޠ__�����T��Ȗ�����_���ޠ__���ޠ\�����T���,,��   $  6###�D�������_����V���Ȗ��������D�����V���,,�� !3#!"&5!3!73� � �� ���a�2,2����D�%  �� ����   $  654�D�������_����V�����������D��������# &632!&#"2>���������n�����v՛[[���՛[X���b�Q���z[���՛[[����!7&#"#4>32732653#"'��p����[��vƝ����p����[��vƝ� �P��v՛[z��p�p�P��v՛[z�� d�� #'!!!#53!5!#53!5!#53!5!#53)!dLd�|��DddX� ���ddX� ���ddX� ���ddX� ���P�����ddd��ddd��ddd��dddLL3#3.>>�dd�({���tZ<�x|rjdL� �QE (( EQ� <0 !O��!1A4.";2654> ;26%+"&546;2+"&546;2�c���ޣc 2 ���� 2 �� � � X � � ,tޣcc��t��  ,�rr��� ��4 � �4 � �X�! ''7'77,,����G��G��G��G �p� �ȍG��G��G��G�p�!%7'654,,���EojCV �p� �95����6n���b� %7654/%%!%7'654���S{w��,�����EojCV�����@����%�����95����7n�� �� !%-;?CGKO!535#!3%!33!5#5!)!%35#!3###!##5#535#5!3%!#53!3#3#%!5d�dd� dL��d�,��|,���,�|dd�dd��d���X�dd�,������dd dd� ddX���dd,��d�������d���,��ddd��d� ���ddd�d��d���,�ddddddd �� ##;#3#3#3!#!53#73#%#5ddd�dd����dd,������dd�dd�������������dd [[[[[[�� 463!64'&"2�� �E ڴSS�� �� ��TT��  463! ' 364'&"2�� �E ��� 2��Dd�TT�� �� �D� 2����TTd�� !!!7�d�d��|���d�d���� '.#!"!%#5!#3!7#!"&?>3!2�^ �> ^(P;�����dXdw& �� & � =Z  ��|_�D��������  � 5��"!5&'./#!5".?!#�"(�]�q *m)>$\�R+5���.tB*. ��0 BB6,��-WB Ɍ��d�� (1!2#!5>54.'32654&32654&+d�x�!" E4+v�O� ); $,�Ll���Y�}^����7]7( 3AvFT�MY3(; 2��{MRa��aTZ��o�!5>76&'.'5m!:"� 0G� Ms� (G �9#'% ��4<99C/Q8$9���%3#4.+!57#"#33'3#7~�2.!"�d�pd�"!/1���K}}KK}}���' ��2dd2R ',��১ ��!����%3#4.+!57#"#3!55!'7��2/!"�d�pd�"!.2�2 ���১���' �v2dd2� ',��K}}KK}}�L/?54&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!26���X������ ,��L�dd��dd��dd��dd�L/?54&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!26��D����L��D����L�dd��dd��dd��dd�L/?5463!2#!"&5463!2#!"&5463!2#!"&5463!2#!"&�X���p��� ����L���dd��dd��dd��dd�L/?5463!2#!"&5463!2#!"&5463!2#!"&5463!2#!"&L��L��L��L���dd��dd��dd��dd�L/?O_o546;2+"&%5463!2#!"&546;2+"&%5463!2#!"&546;2+"&%5463!2#!"&546;2+"&%5463!2#!"&dd, ����dd, ����dd, ����dd, ���dddd��dddd��dddd��dddd���L#*:J#354&+";2654&#!"3!265#53554&#!"3!2654&#!"3!26�dd,dd�� ���ɦz��,,��XL���dd��dd�KdK}�dd��ddL#*:J54&+";26%3#54&#!"3!26535#554&#!"3!2654&#!"3!26�ddXdd�� ���ȧ����,,��X�dd����dd�KdK}�dd��dd���#!"&5463!2 �,�,,�,,��,��v,,�,,�p,,�L#!"&5463!2!7'"&462���Xd��*J%���NpNNp � �J����>��2pNNpN����2.'&54>264&"X{�yII�99 "c]s+?y�yk��֖��~���r�BB "ko�K�{|ׁ�E�֖�jk���2".4>"��ޠ__���ޠ__�X����_���ޠ__���ޠ�]V����u�%.54>.'&6?*IOWM?%N~�OrÀDmssE.  \7[[G�vwsu�EY�d;^�w^�����yJ(I�43n�QRl�h!&7/#!"&5463!"3!26=7'Tq\qi���ԥ���n���);;)�);�0��r�k�qUq�z�����,���;)� );;)}T2�q�k�L.#!"&5463!#"3!265' ">L���ԥ����U�);;)�);Wh��HCVC9 gg_�5����,��P X;)� );;)�D>�3CmC&4 �L##!"&5463!2!"3!26=''L���ԥ���,54.#"32264>:3235�D����������Q�-"#1D1i�� '�����������D�� )2X23L(p  =�dd��   $353#!5#�D����������Q���dd�d����������D�dd�d�dd,��1##5.'#53>75367#53.'#53#5���YȌ���*EkI�6vk�ו4��fI�Kn��oK��f�!���}���sD��;��pc��! !�����XX�������c��!! X��XX���,,�;�@�J�!!!J�������X��XXh�� !!��?�C(,X��XX����L %>7X_���#F���X�-$DuM�խg�;�� ! !��p��ڎ&����ځ�p�&���ڎ&����ځ��&"#�� !!''g��p�'��:���َ'ڂ��'��W�p��ٍ'��#2".4>6&+";26#3��՛[[���՛[[��:�:#6#���[���՛[[���՛��.���d��&-37;#<&/.#"&/&#"#3!3!53%7#)"6?!)!�o" =' ��!'= #od���d�+� ����"���pX��p� �'0�  �.&� d�,���d� )W9`0/����p����257.>7>7.#>7>'&"76� 8./ie���h,Jhq�x{\Sc��Fak[)!#�==��Y0'C7y�5<�b�;22>7.'"&5477.'�FOsv���vsOFFOsv���vsOF�E�wRY,H 7:91���.f|C-[TFk1ii%LX( (WT`G//G`TW( (( (WT`G//G`TW( �p(3\;hI%E:JY|��|UIW� `=^8�j|Ci`$����.8A #7./7>3277>7&'77.547?.'��Ɣ%R�ri' FOsv�H=<%�%Ze�I&-/"0/a+'C�. �.%k�.f|Қk1i/:��P�egy8(( (WT`G/���( 4kbf�&2&?@0�6�@����nUIW����j|C/WR��� #!26'.%5#! #/%�~8�~��������ddG  ! �� D�dd��-�d��,d��) '%/#&=47&=467462 k��d^�^d��kX|X���1) ���[@ NN @[� )1ES>XX>x�  !5!35 57'!! 5#'73�����X�,���1����I,�����z� ���X������z��������ŵ�{�L!2#!#"&546d�);;)����d);;L;)��);��,;)X);dL�-!!!!".=!32>'4=���,���,'Me���eM',U'5%;) �,��,�p�*R~jqP33Pqj~R*��q \ #(,.����h�%7 �������`��C���aF��%' �B�������C���a��:dv�!!# #!!����}�++��+,������X��p��,���p�X��232++"&=!"&=#"&5463!7!"&'&763!7>^6�*��*20�� -d�&�*�? 2222�*���L !53463!2!!��P�;),);�D��P�dd);;)����L 3463!2!!���;),);�,���P, �pX);;)�d�D�.�� 3# #3.��**����,X,������/�� 5! !5�����,X,/��)*������ !>3!2!2#!"&=46#37#3�$�%����);;)�);;Idd�dd��'-�$d;)d);;)d);dddd��d�L '3%4632#"&%%##"+"&'=454>3546?.L����]&/ S8 �2"�R��l������ Q� �22 �!��'777'7'7'7'�-�N鳳�N�-��-�N괴�N�-���N�,��-�N鳳�N�-��,�N��d��*.#";;276=4&#!6=4&!#'#?33�20`�d={�.%�='��='2��ֈd�d2�D��(��%�pKd9X+d,Qv�,Q���}��dw������X�L".!#"&/&54;6;2#!#3'!5##3�20`�d={�.%�='��=�����2��ֈd�d2(��%�Kd9��+d,Qv�,Q�X�+�}wd����dU=A%632!2+#!"&5467!>;2654&#!*.'&54?'#3lj  m U.UkmTk����:d%���7   �V����i� pyL�N��'�  % H� YS(  �S��X��e�V8<#!"&'#"&46!'&54?632*#!32!7%#3�m!����jTnlU.U m  [�   �$��%j�����P� '�� �(SN�Ly q ��  d)��Y����XaL6:4&'%54&"'&3!26!77><546!5L(��N�Ly%p� ' ��� �S�22(S���V�jTnkU��T  n���BSV�   ��������� �65!%>54&#!"?265&5<.'&'!1X��S)� ��% �p &yM�N,��(22�S��P�����V���n  U��TlnTX�ڂ��  �VS��2 $54>!! [����������_��u��,��n�����������zݠ_���&*��2 $54> 5!5!5Uzݠ_��������_�����.���_��z������zݠ_���������2 $54>333[yݠ_��������_�ݵ������_��z������zݠ_����,���2 $54># #[yݠ_��������_���,,��_��z������zݠ_�����p�,����2 $54>&277>7.'.'"'&65.'6.'&76746'&67>7&72267.'6'?6.'.'>72>[yݠ_��������_�ݒ+>=>1" T>9.*-fw"#. F = .2) ( (%  )#? 7 .R  ,$   �_��z������zݠ_^  ' "q!w F  /JG  r$>   #/ & % I+ *  ' ) $# h1'  $ `��#'7;!2#!"&=46#3!2#!"&=46!!!2#!"&=46!!d�);;)�);;����);;)�);;� ���);;)�);;��,�;)d);;)d);dd�;)d);;)d);dd�;)d);;)d);dddL� !5!L�2�����dd�� ������ 7'7!7''7'!77!7'7I�ȁ�p�/�Ȏȁ����p�ȎX��p�Ȏَȁ�p��p�Ȏȁ�с��Ȏ:��p�Ȏ�� 8BL  $  654%2#"&467&54632#"'"&546762#"&54$2#"&4�D�������_����V���    73H3)�.  �".  �������D���� . !,!T! . �$33$ 1.   .P6�X3%'&'.546326327>54&#"'&#"6�Z�GCW#ń�bg���#WCG�Z� @C>`9J:vr3H@]aR6}�FGlZ.�Ł�Ń.ZlGF�}� >FXG`R��ObEVA>Zo\9��w�27'7>54/&#"32764/&''7'&'�i���_.#7B�B]_@��BBԍB]_@BB� i��{�_.7B�i���`.5#j+]B�BB��@_]B���BBB�B� i��{�_-87B]^���74>2#!"&!!264&"�753#.654&�@"�� MNW(kVMcO/9X7\�CNO,?iBHK��;I,����@Gdf��H#"&'>7>'#53&'.>7632#4.#"3#>3632b2)O'*�2'V7   0 $ݦ /-a��ʙDP$%T) ��):#b �"L,�B �  7�Gd17;V^(X�w4K,9  %(d2�;6 "�� !### ###,*����*���,��|����|���"3 33!#5###3!##535#3!53��������Xddd�dd�,cdc�d���d,��,�� dd�d��p�ddd��d���"3 33!##535#53!53!#5##735#��������Xcdc�d���dd,dddedd,��,��dddd�pd��p� dd��L� !####53##5##3,*����d�d�d��dd,��| d� �� d�d�L� !####5##3#53#,*���Jd��dded�d,��|�� d�d�� d� �� !####53!5!!5!!5!,*������d��,d�p�d� �,��|��� �� �� ��� !###!5!!5!!5!#53,*����� �d�p�d��,d��,��|��� �� �� �LL!2#!"&546!"3!2654&�,�����ԥ��5� );;)�);;L���ԥ���,���;)� );;)�);LL")"&5463!2!"3!2654&%��ԣ���,���A� );;)�);;�GM��,�����ԥ��;)� );;)�);d� �LL"463!2#!"&%4&#!"3!26!��,�����ԥ��;)� );;)�);d� ��,�����ԥ��A�);;)� );;���LL"#!"&5463!24&#!"3!26!L���ԥ���,���;)� );;)�);������Ԣ���,������);;)� );;���L!2#!5!2654&#!5!!5�������p�);;)� ��p��,L���ԥ��;)�);�����,����%276'&!676/#"3!�  ���  ���L .� v�  ���X�J L%!"&5463!5./"3!2?5!!5 � );;)��]]����,/5d��,��;)�);����ԥ���,�����$'''!#!"&546;7'#"3!26=�����a���z;)� );;)�vJd����,�������V���{�);;)�);zN���ԥ���b��   $  6$2"&4�D�������_����V���rr�r�������D�����Vr�rr�L�!! !2!46#3��������6 ���dd ��p� ��  �� d2L�!! !2!46#3�,'�C�>K ���dd���,�� �p �� d2L ''!2!46#3�T��F��K ���dd�T��F���k �� d2L� ''!!2!46#3�a�aŕԕ���� ���ddOa�b�ԕ���� �� d2L� 7!7!2!46#3�ԕ��Ea�b� ���dd��Ԕ���a�a� �� d2���� ! ��%���xw�`����w���8�dL�+!#"&546;!3+3L��D���d�dd�����p���,�>�!#"&546;!3'#3 '7B�����d���xddX�%�{xa��p���,����x=��2�$�{x`�#!#"&546;!3'#3''7'77�����d�g�ddӪ���������p���,���g���������������!#"&546;!3!#53## #�� ���d��pdd,��,,���p���,���,�������,��!#"&546;!3/#533 33Z�n���d���dd,���������p���,��n����|,������L 54&#!"3!265!!���L����p���d��&���f�� !5 5)533#53! !;#735��,���p�pd�dd,�p��,�ddd�d�����������D�**�����d��/%4&;26+"&5'7373�$��% ��v2d�d22d22d2RuE��5!�s�d�p��A���dd��,dd��,d�L3%46?5!2!4635!2!5"&5!#!5".L2�pK� K�p"2�K�K�"jx88 &�v�& 88 ��88 &��v& 88 LL !%.'!!%354&#!"3!26!!%%!)%!!'!7�d��d��'i��;)��);;),);�p,��X��p��,���'�Wd��d���dd�bb��D�);;)� );;�#���b�b��dd���!3?6&/&&'&'7>/.��>�fgї{��4w�|~ev�-�� +���fg�=!�/�vg|~�v1��L"@5.#"?>=6 6#!"&=46754>2�d|�~\�ud?, ��>���pm��m&RpR&��A1)!((! �!"��"!)��3��3/2  d�L7!'57##5##5##5#!5��}ddd�d�ddd���Ȗ�d��������pd��ddd�L 32!4632!464&+"Xd);��;�d);��;��;)d);L;)��);��;)�D�);���);;)�p���L'+#!"&5463!2!!3#!#535!#353#1#��|�D|��|�|���|�����,��,��ddd � |��|�|���DX��dd,dd� d,��,���L'+#!"&5463!2!!#5#3533#!#353#1#��|�D|��|�|���|���dddddd���ddd � |��|�|���D��� ���� d,��,���L##!"&5463!2!!!5#353!5#35��|�D|��|�|���|���,��d,�� � |��|�|���DX� d,d� d,d���L#!"&5463!2!! 3-��|�D|��|�|���|�� ��,d,�� � |��|�|���D����L'#!"&5463!2!!!3264&+!#";��|�D|��|�|���|�d�Dd�)69&���&96)� � |��|�|���DX� ��pT�VV�T���L%)#!"&5463!2!!3#!#5353#335#��|�D|��|�|���|�����,��,d�d�dd � |��|�|���DX��dd,dd� �d�pd���L#'#!"&5463!2!!5#!3#3#5335#��|�D|��|�|���|��Dd,,d�d�qdd�dd � |��|�|���D�d� ��p�d�����d���L#'+!2#!"&546!!#5!##53%#53#%3#!#53��|��|�D|����|����,cdc�d�d��dd�ddL�|� |��|�|���D�d��dd�d� ddd��   $  6!!!'57!�D�������_����V����,��dd,�������D�����VG�dd�d��  $  $  6#5#3##!#53�D�������_����V��d���d,ddd�������D�����VGddddd��pd�����A!32654&#".#";!3 33 �x��x.,,�n��BUqO��d�������,�zx�awי kEPr,�p��,,�����A >54&#".#";## #X�^y�x.,,�n��BUqO��,,���m�dy�awי kEPr�p,,��dLm%!33 33!!'�����������Ԫ������K^K�,,M�����ԛ--y7�)%32654'>54&'.#"&#"327!�.6Ji 2;{Y�^t� Ji9/iJ8,K^-2iJ f=Z�Yq�tiJ5XJi��-d��%!2!5#!463!546;235##!"&= ,);� �� ;),;)�);�����;)�);�;)�pdd�);d);;)dd�D�);;)�L�#'+/37;?CGKOSW54&+5#!5##"3!2653#73#73#73#73#3#73#73#73#73#3#73#73#73#73#L�d� d���dd�dd�dd�dd�dd��dd�dd�dd�dd�dd��dd�dd�dd�dd�dd��dddd�d���ddddddddddddddddddddddddddddd�� "/' 7'!'&4762�*$������/��, #*���*#��������|��$*��;��O%>'.'&#"327>767>'&'&#"67632#"&'&>767>32EC8fOESkZ(G�D0#vF?8!@)'(�#Z .C"�|Ey&$��4I7Z 0$&\4=k6_v[��w<�C�]W�$!7G�D�N9@1*+,�#b/W""�tCu$'$��4B?#>@$$\475�be[��d�L!)1%4&+.+"#"3!26#53"&4624&"2�;)�37S*�)R:. �);;)�);�dd��Ȑ��>X>>X�X);E5+);;;)��);;d�Ȑ�Ȑ��X>>X>L�#32#!"&546;5463!2!54&+"�d);;)�|);;)dvR,Rv� ,� ;)��);;)X);�RvvRȖJf�'/32"&/.546;7>7'&6;2"'267&R���::v?zS^Sz?��l1 8F8 �( .))�GM~ %M���+1==1�L� 3 4&#!"�������E~o D�H.7>7>'>7>76''&'.7�  &:4? FFB:8( OV $9DkC@&��'GOS3 *gJ.� ;4( .MV .nhB8- %>=B�'P�d!I,  =CnC�Sm,U�!�ٕfm���7'"/&47&676�� �{���+oX!N`���� ~�\F/��n+We�6\e�A(��_<�����������:�������:�����(����d�����F���HF�d��������������d�������������j����d��d��d������������d�d���������d��5�d������!���������������u������������������,�d������������������h���"�������������d���d����F��:����.�������������a��������dP9�'d�dddd��������������������dy��J�o****Vppppppppppppppp���BJb���Nn�&�fz��^��Pj���<r���0z� & F | � 8 ^ � � � . x � �  v � . �2�.f���>���8N\����0D\��� b��P������>x�&��$f��(P���� B��L� d��DrX��x�N�  4 l � � �!$!R!�!�!�"0"^"�"�##@#j#�#�#�$$6$`$�$�%%<%f%�%�&2&�&�''D'x'�((:(l(�(�)6)|)�)�*.*d*�*�++�+�,2,|,�,�--�-���@.� j (| � L� 8� x6 6� � � $ $4 $X �| �0�www.glyphicons.comCopyright � 2013 by Jan Kovarik. All rights reserved.GLYPHICONS HalflingsRegular1.001;UKWN;GLYPHICONSHalflings-RegularGLYPHICONS Halflings RegularVersion 1.001;PS 001.001;hotconv 1.0.70;makeotf.lib2.5.58329GLYPHICONSHalflings-RegularJan KovarikJan Kovarikwww.glyphicons.comwww.glyphicons.comwww.glyphicons.comWebfont 1.0Mon Jul 1 05:26:00 2013��2�      � !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~����������������������������������������������������������������������������������������glyph1glyph2uni00A0uni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni202Funi205FEurouni2601uni2709uni270FuniE000uniE001uniE002uniE003uniE005uniE006uniE007uniE008uniE009uniE010uniE011uniE012uniE013uniE014uniE015uniE016uniE017uniE018uniE019uniE020uniE021uniE022uniE023uniE024uniE025uniE026uniE027uniE028uniE029uniE030uniE031uniE032uniE034uniE035uniE036uniE037uniE038uniE039uniE040uniE041uniE042uniE043uniE045uniE047uniE048uniE049uniE050uniE051uniE052uniE053uniE054uniE055uniE056uniE057uniE058uniE059uniE060uniE062uniE063uniE064uniE065uniE066uniE067uniE068uniE069uniE070uniE071uniE072uniE073uniE074uniE075uniE076uniE077uniE078uniE079uniE080uniE081uniE082uniE083uniE084uniE085uniE086uniE087uniE088uniE089uniE090uniE091uniE092uniE093uniE094uniE095uniE096uniE097uniE101uniE102uniE103uniE105uniE106uniE107uniE108uniE110uniE111uniE112uniE113uniE114uniE115uniE116uniE117uniE118uniE119uniE120uniE121uniE122uniE124uniE125uniE126uniE127uniE128uniE129uniE130uniE131uniE132uniE133uniE134uniE135uniE137uniE138uniE140uniE141uniE143uniE144uniE145uniE148uniE149uniE150uniE151uniE152uniE153uniE154uniE155uniE156uniE157uniE158uniE159uniE160uniE161uniE162uniE163uniE164uniE165uniE166uniE167uniE168uniE169uniE170uniE171uniE172uniE173uniE174uniE175uniE176uniE177uniE178uniE179uniE180uniE181uniE182uniE183uniE184uniE185uniE186uniE187uniE188uniE189uniE190uniE191uniE192uniE193uniE194uniE195uniE197uniE198uniE199uniE200u1F4BCu1F4C5u1F4CCu1F4CEu1F4F7u1F512u1F514u1F516u1F525u1F527Q�K(PK<\wĒvv>assets/lib/vc_carousel/fonts/glyphicons-halflings-regular.woffnu[wOFF@@sHFFTMXh+� GDEFt OS/2�F`il�cmap�~.�/V�cvt \(�gasp`��glyfh3�[X��head8,468=�hhea8`$ �xhmtx8���ploca9������@maxp;@ .�name;`�|Ԗ��post<�Ry�cQwwebf@8K)Q��=���������x�c`d``�b `b`�[@��1 � x�c`fid��������t���! B3.a0b���� ���������?k��/ 2�Sx�ŒHJA� �x�͓?LSQ�ϣ-PB���t�{� 0��0K*�N��\h�A4 j����`X1YM�t�Ѹ�����NN�h����n]�\L|ɯ��n��;}�+��9J���&D�p5�#��h0��q�xM ,:�b�l�����d[��g$"qII��Ƞ�eX 2!E����˒F�VS��v���a-���hI�uQ��P.��{v��$!V��Wr�yDƸ���ʜ,h�1M��V�֬�4��:�E��9]�%�sy��^������Ǜ7"�Mk���6e[l���j3e���4�f�|3_��a��+撹`�M�L�qs֜1'M���1�5��^���O�z�Qu�r�>�{_�ӽ(�R����/��]$�I�ӫ4��M@[�A3��{p�n���C(q�Oќq�9H'א�YB��LI7�a��{� 3��3��=์�� z�L0�����)2�|��LJ��=G���� d��2��M�:_��Yk�y������ivVv� ����7i�W�칟f��m��u������ߥG���fu��쮮�C���u~D����Oiw�E��4��2�K` pھ? ���B������*xO���H�����|��kt&X�����gԃ*7�{�5�c��h ��Q�w��o�� ��H(���xڵ| `Tչ�=w��Y2���m&���L�f23@H�a�QpD��@qm� �`�� �HQ�`_��^Զj�U�����V���k+d.���;�L���{���9�;���wη�˰L%Ð[�2�cD&�a�Gy�|�9���#�r,\2�q�X��GE�q����Cqb%����_���*��¤���712�Vd1��;�PR�+����9����MZ��M/���҄�\�\����c���kF�����E��ZH ï-{��P\���a&����X���� ��_���?�I�!�LĢ�G��DX��Q1H W�u���b�K,���U��wS+�3���<�i����� ��a�\dmJ�0��„;ڊωZr�7"W����}s7�t��d��Bwxn}*��T��7�ǁ��O|S�:n#{\�`��OI�?�_�xƥD\��Ar�V"�=G�OV8�:?���ﰍ�V����V?k]���; -֥c���d�_�oڱ���1��  �J��/Me���|�֑"m���6�oJ�f��mN�'��Ue��g�?�_�_b������j,�# .�'ݘ���Va�����N?��I���\�����_й�>�����k\���dǹ�o�L@��o�"{��;? a�ZR�d��3X���_a����D��d=�;j��t��2��s#'L��t<2e� �)m7Y����)W5sϤ�a��V&�U���$��d�^�\��GA���UE���<��|�c���N��3��x�6b(�) G#���,a�q[IX������U�U��X���������'h ��D��'�e���ģ����P��o3��B��Y+�����5pC�G�]}gsbԚ�����m\3j��U��pϏ��4�u��5��st֬��ܻf������@Z����q�v����T����⊹����ڽچǴu䷏���w:],k��K;O����J��@7 7�g.�P������6{��M��_?�c��>������~���_�n#9|�>6 ��`�ID=^�6�%�Y�hh�g{C`˖-�����u�������8}���mf�pd�R�τ��L5C~Q�_�`���,�u���I�gخ �w<��m���u������������K��&`[�E��?� g.���7�X�4 v�O�<���)Q����K�/x%�E�z%�&y��ܻ��+��E�׹Ͻ�mW(ԍ}���������l��Hn�@��_-L�����~�+��=H[�ם���ዲW��k�'� c���\��Kq� ����� 0�ۺ������if�V�˗�v� :��KR�8#Y�fy\���W$A� �Z���b�?n#q�lV���f��D\�U$\U�Be��X[� 7:W�?��f���Vs�dKU��Vaa�U#FT�H���s� �� �����ᑊ�aL�6��NAy`�ٍ S���7���jչBn�f�f5wF�o��h�z��כ�(���x��\�{1e����e���Ü�%�$x�2�8���>юk����ޠ��32�3m!���u�'��|��%t�� #�Wʿ��)$������}����ɑ7����ɑ��h��b�+*�$ ��P�;�Ϻ���A2��b�T>�_��UV���]G�tYI4 ` �>�A�<d�O�>V��5����f#�_x� 7�ɜXV;���d槚����*��O�}�@�����[�?}E?�~� ���ؕ��m���#-��2���eY�(\LV�1�+��`�r��.P�$U�dD-����R������]b ���Y�D�qE���~���F�>{�l��Ȯ�%�nCYЎ��8� �n �,�s�E�� >��1Ҷ��S���T�VJXS�a�]��p�k7Ca��� �~0(��$؃�&�1y��E{|[�C�]܁k��'������ʶM��6{�V��[���� ����p(�*�l��#��������B��j�R-�Bz�]�2�c�F���܃�>P=���cb(/V� �����z���^�vc�Cw�u�xh���K��Hۘۖ����1,�Б�<�X��c:�/���� $H��%� l�`�u��~a��f�!�]%�� h@�G���~x�h�ȼ�_~iGᢒ6l�����n�v�s| �� `1��=�]`"�ЌK� eN,�P$X� (q @��|�� hv`��Lʨx�8� �]�a �~�_Sh�i`%�T\�;�Q��ccړ�-��R�k����n,�/"ww`5��T��b�`HgpdSz�❊Ej����h��G��w�f�'��A�0�������9iSU<�b���|{gw.�w�X*e����y�d�Ѫ7�T&s��P�\4�eO�;�1�F�9���f���B ���M;������=�ޣ��QFg�Q�>Fra>�0aV���i�(9��V���C�� �=��s�!]k� ѡ���$��Tڙb?�\w���Υ: xr��YP˸�.B@�DNV�`�<�졒���T����c�&��dg�U�SI-2� �Zdͦ�~�� �.�`rqud.Nv��u7�G�*{\U�m_7Y�&<���S<���l�>:����-`}a���Q�%��Mwuw���Epf��f��dʹy�X��/����A_r7������/)G�0����u�Ig�q�$� 7Л2( {�K���o��� �)����s_r�/���������a����W,������0�Zk��]_R�~A��Nu�E��NuU��Nu�������ގ^x������+���y����I�F� �@M-�}�/˻}&8z��^I���Q���!��pyW��z�f83�Z���>���Q��,|���  w�J�|n�B}�ܾ΂ӧ�a��G�Q*@��z���u�?��|bj���&�uA����/Wo�*zH�� �D���u��K����^����Kt�^�����c���R�t{�tx��0���pi�Y�����}�{2�J�< �t�nuw�@MԟP��QI!D\ z�j���.�w9�fW!(S� &������-�'��e�,�.�qB����w�z���Ɉ��.Ɨ�/��]!QqS%'‡�q0�\�DMc��y��kƏ���a����}`Ú7�,}���w<ο����o_���Fc����L���u��/=��,}���Y���CB����c�4�_����y=7�v*��dx��P��3��$�۴��"l(�h 4�)���S�LjL^�Ĕ�?�w���o#z"&k4^��Y��V���Һ��;s��T-o����y����';�<*�o��-�1m��Eٱ9������ ��K� ^ݣ��XG�$ ~� ���?������>�6Y^��4��ȅ�Zm�7����R���JVhw��V �#C�j�P���{f��^�-e�~���%LD�Wts�l�ݭ�A��ʭ�Xϕ���y�}`��l�s�-�N���Q�G 3�n������gq�Z֜��~2�Կ�Z�بe��5.#!L>�/ZC=�����/��1���t)γ�����f�}'���\�1�|D���a��}ؘ+�K10]�݅�#�q�mT�����A����~���S��Sp]yJ�٨�����s7B_��RH/����%G\ �� Y��+iɟ���4�`��A�\� a���R�g`(LcD�5�F�������a1����,�t �JeR�F�N����}��N����/Wzi�`�S��?g����W�`��Ӭ2�?$���yI.@��w|� ����%1$h��$��&�e)�tF�zi�T=&/PBg���y� �����>�}��$���0����(���,�+�ʉ#�� D=���3�o�P����vd�#.��������%i~����Sd�_���_��8�8�/��O��@-L���E�%# ���Ǝ�H$S��g+ +�?�?K��XA�I�%,u������kǵ�{��i*����~�����jO���p]��� �#lsX��"~.Y��r2� ����fn��֦Mom�c_��d�:6mfz����,MH�޽�g�a�&����p�a�#���.���&@�� 9V������X $j�0�2�� Zy׫�D���K�CF)^�`o ��y+��\��3~~3�9��/C�B���L_ m���w7�{f�ڤ��Z6h�n"!�]�1��T��{kӮ���GP�c�������kw�o� �_� ���ߝp�������t�)�'q{�n�M8ޗB)���D�޵h�� �j���6b���z����z�c����W�r��9�Q�"g�Ʋ���P���< >Q��:��eoCg8�*��Wk��M���+w:��qjel�������{WM�&|��$�Ç�����=�h�8jе3�.�xq���6W�*�̜?��z���s*1Z��^k��]W{����^8���5~�A���yC�o����`~�C_�K;�ef(F�@�ig0N ��E�NCIX� ���ȉjf q�j�������!SW_�� �(so�6>�T]>�UM ��/����n�.��t�Z� �a s�t��k�ںz�؜�_i�Y�pQ�V[0l(��3��Ė�n��M�}˱?�Yr:S=�dz1�o�^���:�D��zl����C1�~��T �@��^��N���9���#/���} Ǖ�e�����e�1��W�A�B ��H$:���R>��b(���j� �4&='���������6O�Cۙ*r�{��(��txldi��f�g��C�U�|�����zFJv���F�4�s-?��C�+Cf�77�S��V��c�� �!�X�H�B2�H�W~�K1���~� �����lK��<�r���o�o��)�,�_e�O��u�����W���������LL��5�ï�F)�y�C�����7��~0 �P�UlsUm66B�507H� T.��/���#���=��To��=ȇ��$l(M���?yӤP�n�B�@mU�� �,,�+�����_�bj,6uŒ���W�]Wh6�K���H�#�"4{�����[�����L���Q���d��>dG�_��,��˜�_��Ln�����l�ﵧ�=�aG}�*��Τ�V��y4�ơ�d�y?��w�����Sd ��O�~�����H۬j-�I1�b폀;JClh�:Eu[-��$t �T�g�=%I0OB\0����/�����i6��,�@��o�������� )�f-�� �|;�u6���(�Տ>��Ux�o ���)Gl��ڀf��I �����z Tz4�7;��iNj�z�Sx޵`漋sd_U$�(䴚yUO��4��1T�\R4+��0�=?#>F�J%�S��2��)�m�(c��}P��� �~\A炂^��5I�ɓ�J��o����8S��N�.�W�f%�WzH�p�{\�Х_������Ll���$�+R�Uz�M �yG�we�&�3!����%3�ʃ���f�~���������"�J@?�~��8Q�8��h 1�{��n|p����n�*�=��]�`��Y�Oͩ K�� �d����%e���ꩢH}�X����(�z+Yb5;,ˬ�Y$2k鲙K7��6���L�ux��7�^�;�v-I̼�y�L�fc��g ���i]��6Y{�ڛ��;��5�5d�T���^BXN�,y��gt��.^��7��6�0�}|��������$dE�:G�\D�0z����R����7d��R�ilņ���\~+��l]�o7_��$6�f�U��5H`�v�= ��Գ|~ȑ�4����1�����ۥ��o}�l394�I�ʭ={ ��yq�Y��I���I��� ��w�A3F��EW��pI�J� �'�9<�P� �T)i�B�klk��N1a�����?����Po<E��^z����n�,�͙���S�m7�J�i$3f?��׻�YQQ�~�^lؠ�A�(�]4q���*��:G� ��a������`��TI���Z�FB.� �2�]�7?������Ӓ��!��&Òz�]�r�������?����y���F^�i;J=����p�����C�����!�Y��q���f� ݉�s� c�X�f-[\�\���`O^���_�����w']��c�r������b�]���As�>A�d@��:��t���ơ.���fgg�[Y(\��ֈ��������N?��9q�d����0G*H��p��~^E�u�P1G����.]����B'xX� u5=���%ݰfv��.��l�b`.e�n��P�|l�c���J��Y�T�wB���D�u2�f����P��$�b�$:Ȓ.�!�A͐At`x��'ZߗV������lR=ǹ7D�+6��� �`��~�7/� d ¢U�r?g��[�:�ue{��C���.��`7T,�V����` <{^�S6��� ��4i1"�m�2���%��39�ξ�gqL�$�lfY,_!+�J�c �.��˫��� �q` �,�JoE})臢�LX��/��l~� :�����@�hr�*/�M��B����rH*��|N�+� w�sH�g �%�R!�,���{]��X��\C���G+飩��ϳT���;`:�x�.�ޏ�i�C�z�zśl>zF�7����`��Y�6j{AR�k�� �2G�Bߊ�^ �Vu�QoKR�����U������p��/�Q7�͙��z1��[��Ko�G�<\/�������̥ ���+e5P�R�%$�ƭ߇ĬQ�H&2U�5�-����+8�oy��v�S~�#� �G����P�X�`rh& �te,g(!��Z�A�� �H�ןl��x� #�?66v�+R�ظ�".���bo���p��;#q������F��#o��Q�\�?�W|��78 M6^?O���=�/�$��F����Y�����vx"5\���m��wf��ͮKqߗ��/�:ǡ��lz�V�E��'�5�c�a�Ӽj �x��z1XJ!��P0r��,���?�\Ms Y��/��M��ǰ�:e= �ٍ��3�1���k���6�0Z5%4@~3�-$ ��aq[*�{��m2rՃو�����^��U9mi��$l���z�n��.J^��^!�n {�;��S\_ ����N^E��k��k���^�|,�W{�S��d�ދ�?J�@b���_�m� 4���হE�c��Я��q(q��6l�!�jZ�5�,�K���o��po�O� %b((* g2Q +),���{L�.�m��|��f�+�O�l^��n�_����a2yHd� Ybg[]'˓#�)�&�����%�� n��ŋ�?��.��1���t �>qeYzY�����XO�VO�C��E�ջh�>ݠ��g����a��‰99I���sS����ځ�Ȃ���ѻ�#��uBJo�������So����_Y���0�59�´�a�8ޚ��V���J�w>:��\�g����J,ϝs�:���\4��O���#��^"':|��~阕;��b�'#p���f���ٚ�^&ps.P� i����90u�:����{��&ܹB��z����|B�cW.D���ܥ�}|��4 ߅#G��Q�c,��D��I�;t, '�wl��=޹=6?eA�B/���a����94��Ǵ���z��!��pL+�%� �;�\�I���\��(����� C���߮�W�����|�ȥ�Į�"{���COy:Eq��� ���;����;�ܭ�s�H�ށ�ڋ(��s��1uKOUw�h�[���� ����q��d��8�VJʄm���}���{�֮& `�s���ίf�T-�U`�|ږA�f���ӖC�m���s��:��[���=��:p���_�F��n>@S;}��{�s��~"���� ǭ[����Yr��B�j�Β� vd6q�q���j�2�;W[��NfKݔ֧���+��n�=��yư�)5�wb�]��qη�&�_:�G�i�;R�34��沾�E�pF���A0XE�>�!�z����‡�Jp!@o*tT�kїg�Ӎ;��U5=Z��D1�kO���!�i��cKI6��+�.��|� |{E��qa�7�h""n���h����K]�;�cJ��޸R`�ۡ6� ��W��h���J��ꔉ�2]{՚�q�DRv����ǡַ~^tw<���M��B�eb�f)���Ј Y­�v�PKPk%�-C��(Y;�>&�j���Lֿ�D�:��#!ETd)c�[�@OM@�TE��.�$٧S�hSIhqz?��*� ��]�4��S�/��>'S�o�…0~9� �U�<��Bu��6�쌝��F�\��Gk Lb��� �D�����������kKK��\?v��WmY���V���� ~�^��G�t,���:��uT[���֛׭����>�2��˙����_n�m�� � XGe2\�OBȄӳN�$���(2�n(J�;���g�L5��F���w��D/�0ˬ�ύH��e�'8�ez�C��y�W ����J�lR�B^�˥� ��ᲰJ{�sӝTG���B�]\b2u}c��O�����f����C�`�#� w�2�t)n��cꎋ��Q� ��.^�|{ Ϩ����V�is���z�Ā:���9�u�a�]����* �V�bt�;͡�{ �= �7ҿ^�g_�B4g�Ը�w���� �޾.=�F����U��p���������a9��@�9kC�A�g꿎�2�k���%x��w����x�_0@ݦ ���G1�j�RC��Ȝ���?��6��?իMOV��f>� "���~R��}��� ;�_�q�)��m��r��Q5�(�N���O����Ԇ�İ�raCpX�jC�D�7s���f��k̍�2^�x>����� 9 ��Ͼ�ըi��r���o/�� ����@]���@]w���������'F0A�(}��f�–�A���)�+t9���������(d��v�L�R�z:R��PG(����Ru|:��xK&砇���B+�! W6劖��ٝ����3.��&��y~��2���m�����Q�I:�X��;��\�;u��3KB��˟^�M�)YD����q��Ǖ����Sާ^%]�����.�)��V��e�z�o[Y���l���gSy,�Q[�W�eE�Skz4������=M�2̪ (DWP j{�=�ǁ��?@��?��̛H��I�w�`נA��`%�]8_=�8D�eP�HzX�#�!M:D�=ILXl�֮��hۼ;�f�� ��U��' CS�HԷxBAi٢����Y����cO�7Kvτ�>��2z��"gvt��f�92_d�{otVv}� LaT��e�:Qm��"����s(��j3�\J�ViNC�趢����=��1�����q���g?���W�a ���;�;I: r>�Y�����U��N-'�����/���~k�@�v�h(�&g3�dH!�`M2�$�6�u��B�s���FR��7�m�~|�S;k`����ko�R{��{���P�F���;L-�hc ��``�'�A���ճIP�0y�F�D��I棴"~� g��Wz|DČ�0�F u�M3c���q3�h��ul�PedU��A�؊纍�Q��:q Y�v��A��"�^���\�`\,p��j��& �Z��k;ӫF�ˣ�]?�� %Y�@4y�����ra�[^��!�"wz�rE�56��GVTH,���t���{|{u�*�?��ϊ����� r�X� 6d��:i�? R[���Œ3�UӇG̖Ⱥ����nS��TC}s}}���ry�c�����N���B uڴ�R=����B���zʠ���yIP2�y%Ph x�?��Ixz+9�+�\Y�-���Nom��RV�mM���2�yU�i 7˰�4���褫�-H�� �}�Ŕ�|�%=>�p9=���6|�����hm��5�ip����8�.[����C,C�5��6w�h,�TIn��-y�%�&�w���$W�u�$���@Ð��!��������r���Tr���w����~=�%:Wnc,�h�O4��㬼h��I+����=�8ӊ��>�k����� �BM���>����.�֚�`;��q��J[��=e�C(���6�˳V �t�H[����H�q6��B,��"�g�����J��Λ"�f�E����z� ����5�MݟRƇ]�2��g&��]R7j��CdƲ���VT|w{^��e����G���0� !��L}�9( ܱK��Z�!}�6�v���6+��k���L��\7�:}�n_nhg��t:q�M�2�����x�c`d```dpdҘ11���+�<����o�����V����e�r9�@����x�c`d``��� ���o��2�]� ���0x�c������� ���L= ��q�100܄��@> ���� 9��,�����3���|@,Q��� ò@�U+��� ��4 Ќ9P=�>�͂�/�=0}LHjL���H+b��6T/Ll �_�E� (�e�@bF��;�l ͌��Ƃ�W>�H|%��an= ����������B�0a�C��(�>�X"�ϬPqV8>1�,N0�yL(n�I$qT�6K��?�t����P���?�D/� � t ��x�c``Ђ�0����9�/�R�N�^�I��/0�b�a�c�c:Ƭ���%���e�V�8��_llYl=l؞���۰��b?���À��c'��g �. �8�I\k�>p�qWp/�~�#�S�s�W���ψo?�� ����������\!�O�������P�P���{�\�I�S���H��t���"rB���QQ;� �kbjb=b_�U���g���`��А��%�C���'I.I'� �{�X�|��IsI�H��~##!�"S$!�I���\��1yy?�u b & 9 K�(|STQ RlSܧ�M�@)Ni��ee�,�)�{�ߨȨ��$�LS��ʡj���:GZ��uu� �= V9�4>i�i�hn�������եuB�I�A{���N��&��b�M�kc�yi��@.xڭ��N�@�O �F�$��p�Ʀ� �ʸ��h] B�Jl���>�7.\��>� ��aD�,��ff��=�̝[���/��h��K���a ��u��^q�xRE�'p�eO"�=*�BB{S#�+�Ƣ>�x���8N>U����U�+,�. C�v{��S�ھY�Z؄�z�� 0�����$VH�5P�9�\w�� �� �|�!_�j\k\��/�����PB�<��8��@/u��6s��q͈8%�LK֒�1O/3/?�������o+0F�N�=|��d�k*I���;ڠ2@U껃 k��hѵIO��3*N���&�rd��r���/5>��d�˯�aݎ��gTP��4eVYa�" z��zZ��2.���:{��,z:�?~�m�{x�m�Ւ�UE�^IH�ww���ҍ'C��NI ,����[pww��!x �k���]]�g�3U_Mk\k����V����_���ߚܚ�c"�X�%X��X��La�e9�o�� ��J��*��j����Z��:��z��l�Fl�&l�fl�l�Vl�6� J*j��ؖ�؞ؑ�ؙ�Lc�]�3̮����������þ�������¡������ñ�������ɜ�tf0�S9�Y��l�0�3�Ǚ��gs�2��8� ���X��\¥\��\��\��\õ\���������­����������ý���<��<��<£<��<��<��<ó<�������˼«���,� ��-����=��>�#>�>�3>� ��+����;��~�'~�~�7~���8}���32�b���������-����[��t+�v���ܩ�-�[ O��̛3�����7���}D�G�}D�G�����}/�{y����؉�؉����؋�؋��^a��W�+�� {���^a�c�c�c�c�c�c�c�c�c��S�)픾��Sz��|������+�W��|Oe��=���^e��W۩��vj;���Nm����i|Wc����k�5�{���^�^�^�^�^�^�^�^�^�^�^�^�^�^�^�^�^�^oЋ����;���������:������:�����d�3�;���:������9z�����9z����]������9:���ߔ��qʱ�{�~���7��~���7��~���7�=G��qtG��qtG��qtG��qtG��qtG��qtG��qtG��qtG��۳�t��o?q$�崡������ 7��J1�r0���`� �-|Q�K(PK<\Kل=assets/lib/vc_carousel/fonts/glyphicons-halflings-regular.svgnu[ PK<\bb=assets/lib/vc_carousel/fonts/glyphicons-halflings-regular.eotnu[�6�5�LP��(GLYPHICONS HalflingsRegularxVersion 1.001;PS 001.001;hotconv 1.0.70;makeotf.lib2.5.583298GLYPHICONS Halflings RegularBSGPw�5s5y-������՟(tۊK��D��'P �M� �B�j���beJ2cc��LF1+�WEeuJ��e�~m��%���W��*�IzI€�sL�� x ��4�xїPS��-Uu�T ���E��F���?ͬ ԯ�4� ʨg��q �e�$�{��-+�1u����{���S��"!E�B&/ ���L���E��K��7f��Ү�|�'�=����j��p��E�A_B�@��*�?~��� �9�&�I���v���@e��r���>Mo<�LX����%���a>˒ ��jp?P�;�_����iƶ� <��}LbX�Ue1�L �!�;��� �� D �^%� � PP��A�@���5����Ka�lӴğ�a!������|Zh���FFI�0�E�F"đ������'Mո�9�@�)� 1A�����ȶ���р���<� ���,�@��A� pA��Cϲ�\�.�mȤ�Ix�����sS "�r�r}�nN�����~lQ��o�`>�t����鰅��׶������5���� X` ­g9K��� �g�]�s �zT0%j��kT���g̙0"�YVg��@��)��>aFc!tz����=V��k���@op^v�?�J��=f���0[7��@��}�t��\����}��v\|f{�y�?=�1"f����x���Hxx�i�8�k�PY�8��~Ú����7@�(:3v�X�X+( ������F j��19���'(m�}�� ��e� ��C��Œ�=��&� ��e y��E��B�(�2���E?xv5�ki{P"�I�G�kXLP�ŀE�>G��[�|q!�c�+o0� a��~�\��;��!�!�+��uX1�H�"�����������U94%��`����)��y�1�*����/��:>\g�@�x�����Z��.]��A����ҁ�K��/ �{[8�]�b�.q~���2�D�oR�zK��oGl���{E���� 9�� �E �ZR�}3QO��Е6��C�).�R���%Oy����r �#��Q��V?l��G�I��V� T.�R���t �ދ����mݯ�mb�v�vtOn#<�u�9��p3:���)�%��Tz�����c�� BW�c ������ cFvEZ�O�Ik��M�Y�uj%[�(0i��>)�aQy}�vb2��'*�b�G�� ���~ �5�s�'�����å�vx8)#7J �� ���@IƠ� �`�S(E�˖B��!$<�sm���{э� �����!`x뚢"ZaB3����x��W��[׃���jƃh�%ptK�[�d���C$UC@\)�A~q������/�@zn�2�e?9�ڟ�N�ظQ�91��Ba����a�0�#�ژ.3�������������+z%�Ԇ���Eڔs�A �U�|�h��@��إs5S8*v0D�����U�Ym���I���s���:��Dt��Xr�/���0[L N� ����I���Ċ$a����pp���MNʢ7��tD�I'al�Y"4��X �r��[�{_�MW� X1�<��c��)�L|���S�Q��͖�V���F��F��tu��4d��r-Mv�M�u�S���8�91c��� Ò`� AI��#\�*p�X�׼�)���4%>���bm�]�5��5�N=G���#�r���96#R��� Yi��� �+ f'F5 8@�x�4���K���.��- 2��:�Q �4܏�5 �2�XC�7`M-��j� >;~�L��5�n�H��HF4�K߹�Y�p��r�ws�4�݌F�۝��F�:�0Ӣ�L[f|������J�����֠:h�$�I��ry(*�u&~K�e��`� ��73)�W�$ %ض����p�@C�\�r|S�"��E"���0i�rO�Dh�md#$4E��@J��"����T�(��L�9ٴ�N�CxM����� �}D�-�BI��rx��)\)�gU�J�i����u�O�1T>�|��>J��D��bs�-�@�E�@�]�8�������B���ږ�� �X�_3�U � �dD�ǁ�_� ����� �t����K�4n,�D����"6��@���뇂� ��F�m�`Y��6�'3¨��2l�pM�`<�hW�"��P�@���� (J(�^�3��O�y�Lq����](D��R�rc�{e����\3P!}"��ǼVt�)w���4?��u~�D����U2]�0�OVF�6-���M��)���eY�l.H��Rψ_�A��J� ʻY�咓oIF��Zt:�٬��·�����h"B������&���"�nyA��-���x#�~6�շ��hX�����{�9A�"�5io�rj�{�H8�)��IZ^м�ij@.@�ΓF.���R�K�A�D �d���Q�,� ���a[q�g�@� �D_���#E�u�)�R1��B]F �u�V�����G{��������x �]ε(@m� l���f�����P�:�H���s�,i�����Q>2�"d[ (�� �� /�uҏ�bS�L˳�.�"�:�A�U@�p��ֽR�E���{��B��H���ƥ�!I���a� -w"�)w%���᜙�����rw��ͳ�r�6��!�1�Y��˘LT�p��x���r��8]�>҈��S"�#^�m�ꤾ��B\ ��i�&U�=��Q�1ğ,?�t&r,@l�5Aی�J��6\���w��x7I�\`n�sKpʴ�݀׼ �2 L���'�M3�����Ki[v&V�tF�TH� rx���TUY�Ee�}���$W�=�X/�}%�K�D��*��:�D=K�_�����`�D�#�[��J�Q�l�$ ��z�s/����q��J����I+�X��,�$ �g�f`��%�Q�6�"@t��N"9()y�.B��� L��*�6�o^4�4Y��e-ҫ��z_�|���~�nM7��ڌ�Tg� �`�΋d�kbr�ؐ������f�v��/$}%)�-ė��R� �& H|&�X�$ ;c�+s-�A�Ј>>;_�?-�1hG*��@��Urȳ�ˊ73�6h)������ O���.�M2�>jj=B¦�1�M��XB`L�Ѱ >x��� d���bN �X�K��n,ཫW{퓙��;�ߴ�p[�j)^��`z��WI֮�����p�h�4?Ϳ��eS�ڃ ��4+v{�1��X�PBX��� q��EsG���p?g���i{Ә�M�t����ꛖ��� �c��8;$<�\3Q���Z� ldv��f܆"���c��ž����\"Z��T)U��Z�l��UA'h�E�,ԁ�.A=��t���F�DRl�s� �)ș�`/";� .��2��]b�P�cB��ro�*[�� ��B� K|e��40��M �2B��f1���1y��������R<"�F�I�'�V���P���N�ɣ��� PF8`�j"jm������ gxD�A �ڝH�u*W�X_����9q�[��Li�u N�9v@pkvmR��sS��(��@ص ۙ����bqL�$� �Ũ!��g�XY�d�� ?ȩ��D|'���C�#ru�*(n�o�5������"x�c!B���i��2��쫳�������D\C��E�=���z��J��k��)��gY�]�e���0��#��`�P"�{�������Q]bڝPb��jB�!�Zlv;�"禥N��[",�0yԺ�#u- � ��G����!�����.���n�b���FX �&��t�!2�]6H�GH<��hC��K4N��"��7� �|2�~�����'h���A$� VTv����Y���� =<�I�##��!L$�����[%��'R���F�!.Ŝ��|��m9�('�%� t�P+�l�w8D�1����g� � Wޏ�Y1��lb� ���(���5V�zk���1m�����ֻ-��� �I�����6� A9x���?;gHɬ�{) �G�)�� ��Np�Ȁ� O9•S���%<�E)���Ly�|w�x.����3#"V���ʵKI�Z �a��h��[P�Ȃ=�̘Aa���%�[(�P�'R�D�8c� PMn+jc��̛�3sh�[�t��8(C�3<#`e��h�up#��5�Aa υ�)&DO����֐��/ޘZ�)��=)���D'n_�߼�BG��Y�\lZ����@�0!�ӕ!C��DFi�`("ؽ5�����9ZGG4�?��Wあ�M��'i�?9���l*���FV�H}��P�׊JM�Η[|�bdML(Lԕ�(��И_�\.��2 ��B��� ��I?w��Tw�����2g�`��:���kQ��}$�U����z���>�/H P@f}���2(A ���� ߚ�%��ꑓ,q3)�Ί����jh�����hw�V�v��VQ���\!` tX5���^��B/�')�0�t3�~� �����$� ����4��wV 2�(�5�[�� ���R�u ſ��[s~-b|�P�Q{�?˺JT�1��[�5k���> ZN��w&�|�r�>��d��;Ũ8��^V ����0úZ"d&[,�nY"}|)��n6����(4S������u|[‚�L6���t�c DD��K���i� K��t�2*� �2���eZ� ͗7�4 Q�M��iq��HT�y�Y��(9�T�����a-kpx�d [ N�y�~O�q�^�lqQ�0Z� ���d��a-�1�s� �#�����#̨g �|]��6��$dnj�?~tM� �� 褺����ܵ��6cƳ5e������XU�8GE����v�?ch�V�K'��C�$�ΧS�A��`�n��Jw�Z��'��'ztO��G�lĈ��[D��Q�+�q �B� 9Ô�<�?l\幠�$�ssb'���<��W�1�Œ�0DL�6�+Ak���=���m ��_G��v�5p�,�s�n���.����QaR�PD+<�3�lM�5_BԆA��N��p��H ���<�.�������|[P Z��m��X%-6�t��g�@@��z�&���mL���3���'t]����]�i��ulz�$��|�H �n3�0�v?�yU�t{Ċ�)¶U�0��~O[}�"���)���� ٓ�'j��k��MCX�<-������/p����G�? l� �9 4�F��~���u�u�h+�+�cH����녙Q�&�t֢�x�q�t+�_Q$T^؇��`u�O��d�Qp]����� �!H舰�Ŷ�SJT��J�y��g�xh!�8Gb*�<���T �h}���"�N4bx�#$� |�͑�a���P�l�I ��:W`��L�U� MK�������bTs(S�������p�~�U1�p�.7��� N���٨��D�ޛ�h�AXa��� @+Ά�-'���� �6O]�TU<1�����q���w�$������=ҼL������3�fi�+���M�p�6�œ6�����{L���E�;0��~pN���lZ��$��N����ж����b���i�)��y��^M�\��D���� dּ��Pe�#6��AX4�̆�[��;�Ek�7�l-��bG��V��0������r�)*r����:�Gw6�U�I>j����#q��R��H{�U곎�!BR"����3x"3���ޗm0>=�&����B@�J�� ��k��̪ts0p~ T�a�h�B����!�s[ 1yκ �VJ3!z��� TP��LI:�‹ ���q��s/�C��O��-����!���L�21��y���؂�F�� 䤣['��'��V��Dz��d�Ϗӆ���p���.��Ek��ʤI$����|�e����\��T���'��H>;Y ���:+UC�7����c�u�@ʸ�.��x�~�J�+I�"F�H��8��N���k���"�up���Moz��G䰦r{;���Dz ���Uw�R�pRr`��{l���s>˲$@��)��.x-�t����a"�N� �^��~&@᧧��<�K�������,���R����Pږ���鯌Ԭk ���9��PS4�ͳ b�n��Zq��d�#-���C ��xz�W6>�/���-�Q���N����k�s��wl^��Ў���FV����Y���������'C?���xB�o܉�Q M�?�~��Uj�a�Sӯ���s5� �{Y�2�aF܈:J�s�Ҵ@W��i[�'O���vW�B�6�}{I�5������k�r�(�4�u-�0�7H�X� %$�هAd�?[��h\<�n� ��_ʩX�V�3/�2sE��u9������>�^O��5��QkF��&%Y0c[���kO�����&��c�f�hi�1����3_���3�}wajiA$t������ۀ�z��'$�0�,N����R�HJ(�%�B�ܼ�v5�|�̱Xx,��L��@H�^���G#������q;�_��uJ��g�*�W��� ��f#�;0//Z����U�~�n6�+��$zv}.�0.=� �&�p �����ῼ|��f&s܇�b��9��.�A��=�`���D�������`*�y�R���p���.2�謅�?��0t���hZ3˷e5�,�i��޾0�Qe���;����,b������� �т���)Q@�.և�@��(ښz.�1E�>������ J|W[+U"�"A ��*��w�]yS�AH>�>ȟ�˩ѠF,�#�/즊�w� ��k~Y��H��l�eu�H�x}+ p8'[���U��ܥ��V��#��6�����0(Δr���XS��6YB���m% M��ӃY�67��x�-nh�'*�,R�*���� ;��|�6 %U�Cr�c��2��*y�E�Ǟ+��xk��*��Z��^0N�A�o���*ZY�5u���C?0 0 2�����P�� G��X2z6P3��Դ�1�S��`� �|&|ӀiE�����A��)���k��0N����j�D�܉� �@��������}�~�w��U�,rqt�¤S>^0$rI)V�rqú���y���7���E��n U�wi��!u%b�������^��I�O���ǐ��Ǒ��cI���Ѿd��C����N];"T���B�)�8$�V� �Fk?���2�HO�>��Ќ� ����c&���ȗ�%�Z�:�h� ���>��p%��H�$zd��fn(="���������^��Ӊ�Y�+D�<�*;�{�+Zy l���B0���ȁ!��� ޝ��Od�"R����g�a��H���� IҶig����u�*�x�x���\�����j&>��c�5�〸��͔?�Ml��n�,㳅z�8��jpZ{c,� S9<�, ЬS·�����Ҕ�gP37B�xW_�\�M���b��� ���:-��!���� ]1�D�EԦ��<�`讏�F�v����L y|�e�2&}���ڛ����R����{I�~�|��1N���5߮Nh��(f 1Hl��V8@E�)+�eeR ���h�Z �[��V�PgR��fU� �i��E(4"�c�l�"E�B�����`�2��| Æ@�#�*qS��&� �@�7�[|��<� ��j-�H���t*/��I����6q��8Z`��b[���Y'P�H� �W�'4D딴5��F�c�P��j�פ���d��"ũRXrgI�7π�r���7ϔ0�F�� �"�p2h���ADy�p���P�� �\'��T ��&����sv9.+.���L�pi�ߤv��Hbȩ��E�T��fe�閹�DY��� �+��ΰ�H۹ ���#K4xB�2�(D�?�}iS|�fVWx���������e������J�Εp+g��ز���x��C�A�e��xT��Hq�ggл�^#�i�ov�W���G��k��� �2��F�٨)�1�?��t���� Ü��p��t�?�د�"� IV~W�g�7b�t* ̯��C�R�r �D�~�*��G�P�%Fo�1�(H��%Y���Z���H�^X V�r�(� d��G���;�4$�t*��e�b����m\E�l��&���{J����A� ���j��.�#�<2j}�ҕJ:B�ZK?7�6��DD�&�B_a/�#��Q����M`���N�`�P�o���$_ �q�V�9�K1��=��9)�~7>��Go�TX��� Tc�*����!��a���?�X��X�C O�4�"�!��j��i���աE;�3���XM a�HԞ] Ľ�͵E��湔L�D�&�� "^�}��)�a*�+����Vt@�jg9a�����C�}�� %X*+�A��& ��>�U��R�)�c�|M+�-��#@�\����+Ӕ�W�l1��ԑ5�S��Ρ�:ȓ/�dd2�@#FU�2�ɺ"��47]�83���dl���X��f�24��g��(%����[ }5��"��5��'u� K�� R*#�x�ۙX#G!�t�bH���w���v��Ѱ���t��B�T��t���>����F�] p^2�����ep@X�w9a�n�X��)@F��@� �h>J&mAع!�u=���}T�QW��3A�M@�C����\���"���F�����d+�����O�Q��B�����q&��ռ�W����:5�sz%)� y�R#� ����|Rƾr%�fr�_ ��yE�-��p&�_�7D���4��w@�"ݰ0�U�Yb�!�(�epQ�~"�V vQ�߷�q\y�6�GYR�_ �U�������ݐ���oP؁cZ&� �4�Rf{`��Ph��;N� ��H(�T����7^��ΕZ� ��n�[��������x�.��_3��O���D��� E�F"D��(�33��tu��ᒯu�t��`Rh��a�Z�(DJ�$l�0���A ��H2�"�^H"�y1���e�@-�oo��jΛ��]��~!�H���l]S�3���3V�YX�� �C�g�~� AG�I6�����ם�3B�Zc���ĉ����#Lv�-C�P,V�@���+�ԘáQL�s �$�E�ϖa,A�#R� ����fW�d�R�60��C��� �i �df����T:H����'� g�"P�4� I9��U^�@�%2E.���h��E�:��h�|� ��հ����!O:��:f��Ŏ�� ��hs��> 2�E���}����vn�rQ�V��l�֎�F���e�J���K���(d�l����u0����@U�^���_~��B�r��.��*h�E{�XI�������x9>��g�c�����}���~�>nN�̥Z��d�d�a��+3D�6wp;�a�O��E�~*�Mͪ�\��������G�G]>lyN��a�D�JI%B,G�,���K��͸3�t��2��4�l�G@���{������k����d?��$.�CD���0�����7d:[�����>}�� �)_蒾3˒]� ��[��ӝ7��� ��#;�>�PO��f �c���&�aul��h=�w�!�X�œ@w�/�z�]��Yaw�[�t�f���$��E��\�.��-�vW�!����^�J����26�U����in����h����%���+W�;���n"1]�C�?`���,i(�����-����+G�օ1�L����;��3QͿs'9�@��ѭ�N>�]aӡ�&�6 �G 2��`QIB�N��R w�c� 4R��>�ʚ�M�v��.�u�'3��ʉ :�o"��Zg?�%��h������~�Hg���٬$%���&]��'gFOa�̓q4nx<�>"J�r��Ϣu��G^��}������A�����5c��B��Z�X�b���'�nQi0�3�anL'�u�e[�1�Q/u�0G���� ab�-�_j�!7Ƿ�2Gng���u"�#��GRc������+�+�I���2�;�W���]n)�D��&���3=�!ض�7�yș> �ߊ��:�W/-�Q6qW,WEn� VL�_N�|YkكZ�z��T�n,P<8x���9��A�II���-b(<�i��.I�;���mI�^���/0�}ۂ{P�E7.���3{�H��[^`Qu5q�|�2��?�\�**!��� �S�%YiQC��U| �&gy�V��\ a[u��Щ5��W ݖ��������@�����=���=�t9(Z�* <�U��D���j)� \j� �C��B/�ts�|U�v��zUL�EB�"�� z`{8) ���Z�q(�E��"uE��eE���[�f��p)��K�L�R���M�A�+lG۔$�%�լ��5��,��� Z�@*Y����ͦ��P�f��1F�t2�Imm�����~��M��w` xJ�# ����ErH2t��F�.��VPEl�*O�ɪ;�ai<��(*�"RF�'��~�UO*W�e��pچ6K|��Рv2�{��.6�jNq�� �:I���yg��L�.��������:�\���,���`0 x���`)S ���@zwQE�n�^/!�?� �ƅ�Q��er ������ ��* ;����&�"T�H�ϥ�hP ��CQĎ4ON=�����zc�"~t�E&X!u%�r���E��A�02t�s�F)6E8�����c=���j0 ��j� 6���׊#�X:�HhD�)��!����V0�C@7 ����S��c�4��#�[@�ac|�'��@m��07�Pp6����`A�X-��� 0m�c(E���:��*��w��8Xu��T�Aʤ���<�~ E18v��n��?$�X(\n�^� ��3�Zp��<\4�D�u ��e����q(�8mn)6�p�Ps0 �����Հ+R(�I(�P�`'�;s�0�T9|T9|L9dL9TD9>@8� Y $Ɔ��@``�0@�0@V,@"(@$C|H��� �� ����c �@b�)c�� � � ���1+�b��A�'A��`�����@:�y�٘�`�n���~ X�`�c�nXI`pf�ݰv@MY�d�p U�����6/�2 ��GA �D/qb�����j�m�L�=�L]L��;/R@�q@����5C1����d�b ه�f�gvؼ�� ,90�����/�~}�O�o�淊��#;�#�ڜs��g����a]��{0ـ��� 4/�x K�P^r��t�ՠc�H�@�Rb�%ԁ���=#�H@yB��π�l`.�T� %�E.����}�ب�@�*Di�ɘ�$�1w��yv�ݳV�8��07��F�H�.����Ɵ8��J�@`�'���`\LT���ApBs�)r�!� �( �i�`PK<\^,^,assets/lib/vc_carousel/LICENSEnu[ Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. PK<\K #8(8(.assets/lib/vc_carousel/css/vc_carousel.min.cssnu[.vc_carousel .clearfix:after,.vc_images_carousel .clearfix:after{clear:both}.vc_images_carousel .vc_carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.vc_images_carousel .vc_carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border-radius:10px;cursor:pointer;border:1px solid grey;background-color:grey}.vc_images_carousel .vc_carousel-indicators .vc_active{margin:1px;width:10px;height:10px;background-color:transparent;border:1px solid grey}.vc_images_carousel .vc_carousel-indicators .vc_partial{opacity:.5}.vc_images_carousel{position:relative}.vc_images_carousel .vc_carousel-inner{position:relative;overflow:hidden;width:100%}.vc_images_carousel .vc_carousel-inner .vc_carousel-slideline{position:relative;overflow:hidden}.vc_images_carousel .vc_carousel-inner .vc_carousel-slideline .vc_carousel-slideline-inner{left:0;position:relative;width:100%}.vc_images_carousel .vc_carousel-inner .vc_carousel-slideline .vc_carousel-slideline-inner.vc_transition{transition:.5s ease left}.vc_images_carousel .vc_carousel-inner .vc_carousel-slideline .vc_carousel-slideline-inner.vc_transition.vc_swipe-transition{transition-duration:.2s}.vc_images_carousel .vc_carousel-inner .vc_carousel-slideline .vc_carousel-slideline-inner>.vc_item{float:left;visibility:hidden}.vc_images_carousel .vc_carousel-inner .vc_carousel-slideline .vc_carousel-slideline-inner>.vc_item>a>img,.vc_images_carousel .vc_carousel-inner .vc_carousel-slideline .vc_carousel-slideline-inner>.vc_item>img{display:block;max-width:100%;height:auto;line-height:1}.vc_images_carousel.vc_per-view-more .vc_carousel-slideline .vc_carousel-slideline-inner>.vc_item>.vc_inner{margin:0 10px}.vc_images_carousel.vc_carousel_vertical .vc_carousel-slideline{overflow:hidden}.vc_images_carousel.vc_carousel_vertical .vc_carousel-slideline .vc_carousel-slideline-inner{width:100%}.vc_images_carousel.vc_carousel_vertical .vc_carousel-slideline .vc_carousel-slideline-inner.vc_transition{transition-property:top}.vc_images_carousel.vc_carousel_vertical .vc_carousel-slideline .vc_carousel-slideline-inner .vc_item{float:none}.vc_images_carousel.vc_carousel_vertical .vc_carousel-indicators{position:absolute;top:2%;right:3%;left:auto;width:10px}.vc_images_carousel.vc_carousel_vertical .vc_carousel-indicators li{display:block;margin:0 auto 3px;width:6px;height:6px}.vc_images_carousel.vc_carousel_vertical .vc_carousel-indicators li.vc_active{width:8px;height:8px;margin:0 auto 1px}.vc_images_carousel.vc_build .vc_carousel-slideline .vc_carousel-slideline-inner>.vc_item{visibility:visible}.vc_images_carousel .vc_carousel-control{position:absolute;padding:0;top:50%;left:0;bottom:0;margin-top:-15px;width:60px;height:30px;opacity:.5;filter:alpha(opacity=50);font-size:30px;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);-webkit-tap-highlight-color:transparent}.vc_images_carousel .vc_carousel-control:focus,.vc_images_carousel .vc_carousel-control:hover{text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.vc_images_carousel .vc_carousel-control.vc_right{left:auto;right:0}.vc_images_carousel .vc_carousel-control .glyphicon-chevron-left,.vc_images_carousel .vc_carousel-control .glyphicon-chevron-right,.vc_images_carousel .vc_carousel-control .icon-next,.vc_images_carousel .vc_carousel-control .icon-prev{position:absolute;top:50%;left:50%;z-index:5;display:inline-block}.vc_images_carousel .vc_carousel-control .icon-next,.vc_images_carousel .vc_carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.vc_images_carousel .vc_carousel-control .icon-prev:before{content:'\2039';position:relative;top:-10px}.vc_images_carousel .vc_carousel-control .icon-next:before{content:'\203a';position:relative;top:-10px}.vc_images_carousel .vc_carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.vc_images_carousel .vc_carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.vc_images_carousel .vc_carousel-control .icon-next,.vc_images_carousel .vc_carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px;display:block;padding:0}.vc_images_carousel .vc_carousel-caption{left:20%;right:20%;padding-bottom:30px}.vc_images_carousel .vc_carousel-indicators{bottom:20px}}.vc_images_carousel .clearfix:after,.vc_images_carousel .clearfix:before{content:" ";display:table}.vc_images_carousel .pull-right{float:right!important}.vc_images_carousel .pull-left{float:left!important}.vc_images_carousel .hide{display:none!important}.vc_images_carousel .show{display:block!important}.vc_images_carousel .invisible{visibility:hidden}.vc_images_carousel .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.vc_images_carousel ol.vc_carousel-indicators{margin:0 0 0 -30%}.vc_images_carousel .vc_carousel_vertical ol.vc_carousel-indicators{margin:1px 0 0;bottom:auto}.vc_images_carousel .vc_carousel-inner .vc_carousel-slideline .vc_carousel-slideline-inner>.item>a{display:block}.vc_images_carousel .vc_carousel-inner .vc_carousel-slideline .vc_carousel-slideline-inner>.item>a>img{margin:auto}.vc_carousel .vc_carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.vc_carousel .vc_carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border-radius:10px;cursor:pointer;border:1px solid grey;background-color:grey}.vc_carousel .vc_carousel-indicators .vc_active{margin:1px;width:10px;height:10px;background-color:transparent;border:1px solid grey}.vc_carousel .vc_carousel-indicators .vc_partial{opacity:.5}.vc_carousel{position:relative}.vc_carousel .vc_carousel-inner{position:relative;overflow:hidden;width:100%}.vc_carousel .vc_carousel-inner .vc_carousel-slideline{position:relative;overflow:hidden}.vc_carousel .vc_carousel-inner .vc_carousel-slideline .vc_carousel-slideline-inner{left:0;position:relative;width:100%}.vc_carousel .vc_carousel-inner .vc_carousel-slideline .vc_carousel-slideline-inner.vc_transition{transition:.5s ease left}.vc_carousel .vc_carousel-inner .vc_carousel-slideline .vc_carousel-slideline-inner.vc_transition.vc_swipe-transition{transition-duration:.2s}.vc_carousel .vc_carousel-inner .vc_carousel-slideline .vc_carousel-slideline-inner>.vc_item{float:left;visibility:hidden}.vc_carousel .vc_carousel-inner .vc_carousel-slideline .vc_carousel-slideline-inner>.vc_item>a>img,.vc_carousel .vc_carousel-inner .vc_carousel-slideline .vc_carousel-slideline-inner>.vc_item>img{display:block;max-width:100%;height:auto;line-height:1}.vc_carousel.vc_per-view-more .vc_carousel-slideline .vc_carousel-slideline-inner>.vc_item>.vc_inner{margin:0 10px}.vc_carousel.vc_carousel_vertical .vc_carousel-slideline{overflow:hidden}.vc_carousel.vc_carousel_vertical .vc_carousel-slideline .vc_carousel-slideline-inner{width:100%}.vc_carousel.vc_carousel_vertical .vc_carousel-slideline .vc_carousel-slideline-inner.vc_transition{transition-property:top}.vc_carousel.vc_carousel_vertical .vc_carousel-slideline .vc_carousel-slideline-inner .vc_item{float:none}.vc_carousel.vc_carousel_vertical .vc_carousel-indicators{position:absolute;top:2%;right:3%;left:auto;width:10px}.vc_carousel.vc_carousel_vertical .vc_carousel-indicators li{display:block;margin:0 auto 3px;width:6px;height:6px}.vc_carousel.vc_carousel_vertical .vc_carousel-indicators li.vc_active{width:8px;height:8px;margin:0 auto 1px}.vc_carousel.vc_build .vc_carousel-slideline .vc_carousel-slideline-inner>.vc_item{visibility:visible}.vc_carousel .vc_carousel-control{position:absolute;padding:0;top:50%;left:0;bottom:0;margin-top:-15px;width:60px;height:30px;opacity:.5;filter:alpha(opacity=50);font-size:30px;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);-webkit-tap-highlight-color:transparent}.vc_carousel .vc_carousel-control:focus,.vc_carousel .vc_carousel-control:hover{text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.vc_carousel .vc_carousel-control.vc_right{left:auto;right:0}.vc_carousel .vc_carousel-control .glyphicon-chevron-left,.vc_carousel .vc_carousel-control .glyphicon-chevron-right,.vc_carousel .vc_carousel-control .icon-next,.vc_carousel .vc_carousel-control .icon-prev{position:absolute;top:50%;left:50%;z-index:5;display:inline-block}.vc_carousel .vc_carousel-control .icon-next,.vc_carousel .vc_carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.vc_carousel .vc_carousel-control .icon-prev:before{content:'\2039';position:relative;top:-10px}.vc_carousel .vc_carousel-control .icon-next:before{content:'\203a';position:relative;top:-10px}.vc_carousel .vc_carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.vc_carousel .vc_carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.vc_carousel .vc_carousel-control .icon-next,.vc_carousel .vc_carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px;display:block;padding:0}.vc_carousel .vc_carousel-caption{left:20%;right:20%;padding-bottom:30px}.vc_carousel .vc_carousel-indicators{bottom:20px}}.vc_carousel .clearfix:after,.vc_carousel .clearfix:before{content:" ";display:table}.vc_carousel .pull-right{float:right!important}.vc_carousel .pull-left{float:left!important}.vc_carousel .hide{display:none!important}.vc_carousel .show{display:block!important}.vc_carousel .invisible{visibility:hidden}.vc_carousel .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.vc_carousel ol.vc_carousel-indicators{margin:0 0 0 -30%}.vc_carousel .vc_carousel_vertical ol.vc_carousel-indicators{margin:1px 0 0;bottom:auto}.vc_carousel .vc_carousel-inner .vc_carousel-slideline .vc_carousel-slideline-inner>.item>a{display:block}.vc_carousel .vc_carousel-inner .vc_carousel-slideline .vc_carousel-slideline-inner>.item>a>img{margin:auto}PK<\|\loo-assets/lib/vc_line_chart/vc_line_chart.min.jsnu[!function($){$.fn.vcLineChart=function(){var waypoint=void 0!==$.fn.waypoint;return this.each(function(){function addchart(){$this.data("animated")||(chart="bar"===$this.data("vcType")?new Chart(ctx).Bar(data,options):new Chart(ctx).Line(data,options),$this.data("vcChartId",chart.id),$this.data("chart",chart),$this.data("animated",!0))}var data,gradient,chart,i,j,$this=$(this),ctx=$this.find("canvas")[0].getContext("2d"),options={showTooltips:$this.data("vcTooltips"),animationEasing:$this.data("vcAnimation"),datasetFill:!0,scaleLabel:function(object){return" "+object.value},responsive:!0},color_keys=["fillColor","strokeColor","highlightFill","highlightFill","pointHighlightFill","pointHighlightStroke"];for($this.data("chart")&&($this.data("chart").destroy(),$this.removeData("animated")),data=$this.data("vcValues"),ctx.canvas.width=$this.width(),ctx.canvas.height=$this.width(),i=data.datasets.length-1;0<=i;i--)for(j=color_keys.length-1;0<=j;j--)"object"==typeof data.datasets[i][color_keys[j]]&&2===data.datasets[i][color_keys[j]].length&&(gradient=ctx.createLinearGradient(0,0,0,ctx.canvas.height),gradient.addColorStop(0,data.datasets[i][color_keys[j]][0]),gradient.addColorStop(1,data.datasets[i][color_keys[j]][1]),data.datasets[i][color_keys[j]]=gradient);waypoint?$this.waypoint($.proxy(addchart,$this),{offset:"85%"}):addchart()}),this},"function"!=typeof window.vc_line_charts&&(window.vc_line_charts=function(model_id){var selector=".vc_line-chart";void 0!==model_id&&(selector='[data-model-id="'+model_id+'"] '+selector),$(selector).vcLineChart()}),$(document).ready(function(){!window.vc_iframe&&vc_line_charts()})}(jQuery);PK<\IP%%6assets/lib/bower/imagesloaded/imagesloaded.pkgd.min.jsnu[/*! * imagesLoaded PACKAGED v3.1.8 * JavaScript is all like "You images are done yet or what?" * MIT License */ (function(){function e(){}function t(e,t){for(var n=e.length;n--;)if(e[n].listener===t)return n;return-1}function n(e){return function(){return this[e].apply(this,arguments)}}var i=e.prototype,r=this,o=r.EventEmitter;i.getListeners=function(e){var t,n,i=this._getEvents();if("object"==typeof e){t={};for(n in i)i.hasOwnProperty(n)&&e.test(n)&&(t[n]=i[n])}else t=i[e]||(i[e]=[]);return t},i.flattenListeners=function(e){var t,n=[];for(t=0;e.length>t;t+=1)n.push(e[t].listener);return n},i.getListenersAsObject=function(e){var t,n=this.getListeners(e);return n instanceof Array&&(t={},t[e]=n),t||n},i.addListener=function(e,n){var i,r=this.getListenersAsObject(e),o="object"==typeof n;for(i in r)r.hasOwnProperty(i)&&-1===t(r[i],n)&&r[i].push(o?n:{listener:n,once:!1});return this},i.on=n("addListener"),i.addOnceListener=function(e,t){return this.addListener(e,{listener:t,once:!0})},i.once=n("addOnceListener"),i.defineEvent=function(e){return this.getListeners(e),this},i.defineEvents=function(e){for(var t=0;e.length>t;t+=1)this.defineEvent(e[t]);return this},i.removeListener=function(e,n){var i,r,o=this.getListenersAsObject(e);for(r in o)o.hasOwnProperty(r)&&(i=t(o[r],n),-1!==i&&o[r].splice(i,1));return this},i.off=n("removeListener"),i.addListeners=function(e,t){return this.manipulateListeners(!1,e,t)},i.removeListeners=function(e,t){return this.manipulateListeners(!0,e,t)},i.manipulateListeners=function(e,t,n){var i,r,o=e?this.removeListener:this.addListener,s=e?this.removeListeners:this.addListeners;if("object"!=typeof t||t instanceof RegExp)for(i=n.length;i--;)o.call(this,t,n[i]);else for(i in t)t.hasOwnProperty(i)&&(r=t[i])&&("function"==typeof r?o.call(this,i,r):s.call(this,i,r));return this},i.removeEvent=function(e){var t,n=typeof e,i=this._getEvents();if("string"===n)delete i[e];else if("object"===n)for(t in i)i.hasOwnProperty(t)&&e.test(t)&&delete i[t];else delete this._events;return this},i.removeAllListeners=n("removeEvent"),i.emitEvent=function(e,t){var n,i,r,o,s=this.getListenersAsObject(e);for(r in s)if(s.hasOwnProperty(r))for(i=s[r].length;i--;)n=s[r][i],n.once===!0&&this.removeListener(e,n.listener),o=n.listener.apply(this,t||[]),o===this._getOnceReturnValue()&&this.removeListener(e,n.listener);return this},i.trigger=n("emitEvent"),i.emit=function(e){var t=Array.prototype.slice.call(arguments,1);return this.emitEvent(e,t)},i.setOnceReturnValue=function(e){return this._onceReturnValue=e,this},i._getOnceReturnValue=function(){return this.hasOwnProperty("_onceReturnValue")?this._onceReturnValue:!0},i._getEvents=function(){return this._events||(this._events={})},e.noConflict=function(){return r.EventEmitter=o,e},"function"==typeof define&&define.amd?define("eventEmitter/EventEmitter",[],function(){return e}):"object"==typeof module&&module.exports?module.exports=e:this.EventEmitter=e}).call(this),function(e){function t(t){var n=e.event;return n.target=n.target||n.srcElement||t,n}var n=document.documentElement,i=function(){};n.addEventListener?i=function(e,t,n){e.addEventListener(t,n,!1)}:n.attachEvent&&(i=function(e,n,i){e[n+i]=i.handleEvent?function(){var n=t(e);i.handleEvent.call(i,n)}:function(){var n=t(e);i.call(e,n)},e.attachEvent("on"+n,e[n+i])});var r=function(){};n.removeEventListener?r=function(e,t,n){e.removeEventListener(t,n,!1)}:n.detachEvent&&(r=function(e,t,n){e.detachEvent("on"+t,e[t+n]);try{delete e[t+n]}catch(i){e[t+n]=void 0}});var o={bind:i,unbind:r};"function"==typeof define&&define.amd?define("eventie/eventie",o):e.eventie=o}(this),function(e,t){"function"==typeof define&&define.amd?define(["eventEmitter/EventEmitter","eventie/eventie"],function(n,i){return t(e,n,i)}):"object"==typeof exports?module.exports=t(e,require("wolfy87-eventemitter"),require("eventie")):e.imagesLoaded=t(e,e.EventEmitter,e.eventie)}(window,function(e,t,n){function i(e,t){for(var n in t)e[n]=t[n];return e}function r(e){return"[object Array]"===d.call(e)}function o(e){var t=[];if(r(e))t=e;else if("number"==typeof e.length)for(var n=0,i=e.length;i>n;n++)t.push(e[n]);else t.push(e);return t}function s(e,t,n){if(!(this instanceof s))return new s(e,t);"string"==typeof e&&(e=document.querySelectorAll(e)),this.elements=o(e),this.options=i({},this.options),"function"==typeof t?n=t:i(this.options,t),n&&this.on("always",n),this.getImages(),a&&(this.jqDeferred=new a.Deferred);var r=this;setTimeout(function(){r.check()})}function f(e){this.img=e}function c(e){this.src=e,v[e]=this}var a=e.jQuery,u=e.console,h=u!==void 0,d=Object.prototype.toString;s.prototype=new t,s.prototype.options={},s.prototype.getImages=function(){this.images=[];for(var e=0,t=this.elements.length;t>e;e++){var n=this.elements[e];"IMG"===n.nodeName&&this.addImage(n);var i=n.nodeType;if(i&&(1===i||9===i||11===i))for(var r=n.querySelectorAll("img"),o=0,s=r.length;s>o;o++){var f=r[o];this.addImage(f)}}},s.prototype.addImage=function(e){var t=new f(e);this.images.push(t)},s.prototype.check=function(){function e(e,r){return t.options.debug&&h&&u.log("confirm",e,r),t.progress(e),n++,n===i&&t.complete(),!0}var t=this,n=0,i=this.images.length;if(this.hasAnyBroken=!1,!i)return this.complete(),void 0;for(var r=0;i>r;r++){var o=this.images[r];o.on("confirm",e),o.check()}},s.prototype.progress=function(e){this.hasAnyBroken=this.hasAnyBroken||!e.isLoaded;var t=this;setTimeout(function(){t.emit("progress",t,e),t.jqDeferred&&t.jqDeferred.notify&&t.jqDeferred.notify(t,e)})},s.prototype.complete=function(){var e=this.hasAnyBroken?"fail":"done";this.isComplete=!0;var t=this;setTimeout(function(){if(t.emit(e,t),t.emit("always",t),t.jqDeferred){var n=t.hasAnyBroken?"reject":"resolve";t.jqDeferred[n](t)}})},a&&(a.fn.imagesLoaded=function(e,t){var n=new s(this,e,t);return n.jqDeferred.promise(a(this))}),f.prototype=new t,f.prototype.check=function(){var e=v[this.img.src]||new c(this.img.src);if(e.isConfirmed)return this.confirm(e.isLoaded,"cached was confirmed"),void 0;if(this.img.complete&&void 0!==this.img.naturalWidth)return this.confirm(0!==this.img.naturalWidth,"naturalWidth"),void 0;var t=this;e.on("confirm",function(e,n){return t.confirm(e.isLoaded,n),!0}),e.check()},f.prototype.confirm=function(e,t){this.isLoaded=e,this.emit("confirm",this,t)};var v={};return c.prototype=new t,c.prototype.check=function(){if(!this.isChecked){var e=new Image;n.bind(e,"load",this),n.bind(e,"error",this),e.src=this.src,this.isChecked=!0}},c.prototype.handleEvent=function(e){var t="on"+e.type;this[t]&&this[t](e)},c.prototype.onload=function(e){this.confirm(!0,"onload"),this.unbindProxyEvents(e)},c.prototype.onerror=function(e){this.confirm(!1,"onerror"),this.unbindProxyEvents(e)},c.prototype.confirm=function(e,t){this.isConfirmed=!0,this.isLoaded=e,this.emit("confirm",this,t)},c.prototype.unbindProxyEvents=function(e){n.unbind(e.target,"load",this),n.unbind(e.target,"error",this)},s});PK<\/<<%assets/lib/bower/masonry/README.mdownnu[# Masonry _Cascading grid layout library_ Masonry works by placing elements in optimal position based on available vertical space, sort of like a mason fitting stones in a wall. You’ve probably seen it in use all over the Internet. For complete docs and demos, see [masonry.desandro.com](http://masonry.desandro.com) or [masonryjs.com](http://masonryjs.com) if you're lazy, ## Install A packaged source file includes everything you need to use Masonry. + [masonry.pkgd.min.js](dist/masonry.pkgd.min.js) + [masonry.pkgd.js](dist/masonry.pkgd.js) ### Bower If you are cool with the command line, install Masonry as a [Bower](http://bower.io) package: ``` bash bower install masonry ``` ## Initialize ### In JavaScript ``` js var container = document.querySelector('#container'); var msnry = new Masonry( container, { // options... itemSelector: '.item', columnWidth: 200 }); ``` ### In HTML Add a class of `js-masonry` to your element. Options can be set in JSON in `data-masonry-options`. ``` html
...
``` ## License Masonry is released under the [MIT license](http://desandro.mit-license.org). Have at it. * * * Copyright :copyright: 2014 David DeSandro PK<\bb1assets/lib/bower/masonry/dist/masonry.pkgd.min.jsnu[/*! * Masonry PACKAGED v3.1.5 * Cascading grid layout library * http://masonry.desandro.com * MIT License * by David DeSandro */ !function(a){function b(){}function c(a){function c(b){b.prototype.option||(b.prototype.option=function(b){a.isPlainObject(b)&&(this.options=a.extend(!0,this.options,b))})}function e(b,c){a.fn[b]=function(e){if("string"==typeof e){for(var g=d.call(arguments,1),h=0,i=this.length;i>h;h++){var j=this[h],k=a.data(j,b);if(k)if(a.isFunction(k[e])&&"_"!==e.charAt(0)){var l=k[e].apply(k,g);if(void 0!==l)return l}else f("no such method '"+e+"' for "+b+" instance");else f("cannot call methods on "+b+" prior to initialization; attempted to call '"+e+"'")}return this}return this.each(function(){var d=a.data(this,b);d?(d.option(e),d._init()):(d=new c(this,e),a.data(this,b,d))})}}if(a){var f="undefined"==typeof console?b:function(a){console.error(a)};return a.bridget=function(a,b){c(b),e(a,b)},a.bridget}}var d=Array.prototype.slice;"function"==typeof define&&define.amd?define("jquery-bridget/jquery.bridget",["jquery"],c):c(a.jQuery)}(window),function(a){function b(b){var c=a.event;return c.target=c.target||c.srcElement||b,c}var c=document.documentElement,d=function(){};c.addEventListener?d=function(a,b,c){a.addEventListener(b,c,!1)}:c.attachEvent&&(d=function(a,c,d){a[c+d]=d.handleEvent?function(){var c=b(a);d.handleEvent.call(d,c)}:function(){var c=b(a);d.call(a,c)},a.attachEvent("on"+c,a[c+d])});var e=function(){};c.removeEventListener?e=function(a,b,c){a.removeEventListener(b,c,!1)}:c.detachEvent&&(e=function(a,b,c){a.detachEvent("on"+b,a[b+c]);try{delete a[b+c]}catch(d){a[b+c]=void 0}});var f={bind:d,unbind:e};"function"==typeof define&&define.amd?define("eventie/eventie",f):"object"==typeof exports?module.exports=f:a.eventie=f}(this),function(a){function b(a){"function"==typeof a&&(b.isReady?a():f.push(a))}function c(a){var c="readystatechange"===a.type&&"complete"!==e.readyState;if(!b.isReady&&!c){b.isReady=!0;for(var d=0,g=f.length;g>d;d++){var h=f[d];h()}}}function d(d){return d.bind(e,"DOMContentLoaded",c),d.bind(e,"readystatechange",c),d.bind(a,"load",c),b}var e=a.document,f=[];b.isReady=!1,"function"==typeof define&&define.amd?(b.isReady="function"==typeof requirejs,define("doc-ready/doc-ready",["eventie/eventie"],d)):a.docReady=d(a.eventie)}(this),function(){function a(){}function b(a,b){for(var c=a.length;c--;)if(a[c].listener===b)return c;return-1}function c(a){return function(){return this[a].apply(this,arguments)}}var d=a.prototype,e=this,f=e.EventEmitter;d.getListeners=function(a){var b,c,d=this._getEvents();if(a instanceof RegExp){b={};for(c in d)d.hasOwnProperty(c)&&a.test(c)&&(b[c]=d[c])}else b=d[a]||(d[a]=[]);return b},d.flattenListeners=function(a){var b,c=[];for(b=0;be;e++)if(b=c[e]+a,"string"==typeof d[b])return b}}var c="Webkit Moz ms Ms O".split(" "),d=document.documentElement.style;"function"==typeof define&&define.amd?define("get-style-property/get-style-property",[],function(){return b}):"object"==typeof exports?module.exports=b:a.getStyleProperty=b}(window),function(a){function b(a){var b=parseFloat(a),c=-1===a.indexOf("%")&&!isNaN(b);return c&&b}function c(){for(var a={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},b=0,c=g.length;c>b;b++){var d=g[b];a[d]=0}return a}function d(a){function d(a){if("string"==typeof a&&(a=document.querySelector(a)),a&&"object"==typeof a&&a.nodeType){var d=f(a);if("none"===d.display)return c();var e={};e.width=a.offsetWidth,e.height=a.offsetHeight;for(var k=e.isBorderBox=!(!j||!d[j]||"border-box"!==d[j]),l=0,m=g.length;m>l;l++){var n=g[l],o=d[n];o=h(a,o);var p=parseFloat(o);e[n]=isNaN(p)?0:p}var q=e.paddingLeft+e.paddingRight,r=e.paddingTop+e.paddingBottom,s=e.marginLeft+e.marginRight,t=e.marginTop+e.marginBottom,u=e.borderLeftWidth+e.borderRightWidth,v=e.borderTopWidth+e.borderBottomWidth,w=k&&i,x=b(d.width);x!==!1&&(e.width=x+(w?0:q+u));var y=b(d.height);return y!==!1&&(e.height=y+(w?0:r+v)),e.innerWidth=e.width-(q+u),e.innerHeight=e.height-(r+v),e.outerWidth=e.width+s,e.outerHeight=e.height+t,e}}function h(a,b){if(e||-1===b.indexOf("%"))return b;var c=a.style,d=c.left,f=a.runtimeStyle,g=f&&f.left;return g&&(f.left=a.currentStyle.left),c.left=b,b=c.pixelLeft,c.left=d,g&&(f.left=g),b}var i,j=a("boxSizing");return function(){if(j){var a=document.createElement("div");a.style.width="200px",a.style.padding="1px 2px 3px 4px",a.style.borderStyle="solid",a.style.borderWidth="1px 2px 3px 4px",a.style[j]="border-box";var c=document.body||document.documentElement;c.appendChild(a);var d=f(a);i=200===b(d.width),c.removeChild(a)}}(),d}var e=a.getComputedStyle,f=e?function(a){return e(a,null)}:function(a){return a.currentStyle},g=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"];"function"==typeof define&&define.amd?define("get-size/get-size",["get-style-property/get-style-property"],d):"object"==typeof exports?module.exports=d(require("get-style-property")):a.getSize=d(a.getStyleProperty)}(window),function(a,b){function c(a,b){return a[h](b)}function d(a){if(!a.parentNode){var b=document.createDocumentFragment();b.appendChild(a)}}function e(a,b){d(a);for(var c=a.parentNode.querySelectorAll(b),e=0,f=c.length;f>e;e++)if(c[e]===a)return!0;return!1}function f(a,b){return d(a),c(a,b)}var g,h=function(){if(b.matchesSelector)return"matchesSelector";for(var a=["webkit","moz","ms","o"],c=0,d=a.length;d>c;c++){var e=a[c],f=e+"MatchesSelector";if(b[f])return f}}();if(h){var i=document.createElement("div"),j=c(i,"div");g=j?c:f}else g=e;"function"==typeof define&&define.amd?define("matches-selector/matches-selector",[],function(){return g}):window.matchesSelector=g}(this,Element.prototype),function(a){function b(a,b){for(var c in b)a[c]=b[c];return a}function c(a){for(var b in a)return!1;return b=null,!0}function d(a){return a.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()})}function e(a,e,f){function h(a,b){a&&(this.element=a,this.layout=b,this.position={x:0,y:0},this._create())}var i=f("transition"),j=f("transform"),k=i&&j,l=!!f("perspective"),m={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"otransitionend",transition:"transitionend"}[i],n=["transform","transition","transitionDuration","transitionProperty"],o=function(){for(var a={},b=0,c=n.length;c>b;b++){var d=n[b],e=f(d);e&&e!==d&&(a[d]=e)}return a}();b(h.prototype,a.prototype),h.prototype._create=function(){this._transn={ingProperties:{},clean:{},onEnd:{}},this.css({position:"absolute"})},h.prototype.handleEvent=function(a){var b="on"+a.type;this[b]&&this[b](a)},h.prototype.getSize=function(){this.size=e(this.element)},h.prototype.css=function(a){var b=this.element.style;for(var c in a){var d=o[c]||c;b[d]=a[c]}},h.prototype.getPosition=function(){var a=g(this.element),b=this.layout.options,c=b.isOriginLeft,d=b.isOriginTop,e=parseInt(a[c?"left":"right"],10),f=parseInt(a[d?"top":"bottom"],10);e=isNaN(e)?0:e,f=isNaN(f)?0:f;var h=this.layout.size;e-=c?h.paddingLeft:h.paddingRight,f-=d?h.paddingTop:h.paddingBottom,this.position.x=e,this.position.y=f},h.prototype.layoutPosition=function(){var a=this.layout.size,b=this.layout.options,c={};b.isOriginLeft?(c.left=this.position.x+a.paddingLeft+"px",c.right=""):(c.right=this.position.x+a.paddingRight+"px",c.left=""),b.isOriginTop?(c.top=this.position.y+a.paddingTop+"px",c.bottom=""):(c.bottom=this.position.y+a.paddingBottom+"px",c.top=""),this.css(c),this.emitEvent("layout",[this])};var p=l?function(a,b){return"translate3d("+a+"px, "+b+"px, 0)"}:function(a,b){return"translate("+a+"px, "+b+"px)"};h.prototype._transitionTo=function(a,b){this.getPosition();var c=this.position.x,d=this.position.y,e=parseInt(a,10),f=parseInt(b,10),g=e===this.position.x&&f===this.position.y;if(this.setPosition(a,b),g&&!this.isTransitioning)return void this.layoutPosition();var h=a-c,i=b-d,j={},k=this.layout.options;h=k.isOriginLeft?h:-h,i=k.isOriginTop?i:-i,j.transform=p(h,i),this.transition({to:j,onTransitionEnd:{transform:this.layoutPosition},isCleaning:!0})},h.prototype.goTo=function(a,b){this.setPosition(a,b),this.layoutPosition()},h.prototype.moveTo=k?h.prototype._transitionTo:h.prototype.goTo,h.prototype.setPosition=function(a,b){this.position.x=parseInt(a,10),this.position.y=parseInt(b,10)},h.prototype._nonTransition=function(a){this.css(a.to),a.isCleaning&&this._removeStyles(a.to);for(var b in a.onTransitionEnd)a.onTransitionEnd[b].call(this)},h.prototype._transition=function(a){if(!parseFloat(this.layout.options.transitionDuration))return void this._nonTransition(a);var b=this._transn;for(var c in a.onTransitionEnd)b.onEnd[c]=a.onTransitionEnd[c];for(c in a.to)b.ingProperties[c]=!0,a.isCleaning&&(b.clean[c]=!0);if(a.from){this.css(a.from);var d=this.element.offsetHeight;d=null}this.enableTransition(a.to),this.css(a.to),this.isTransitioning=!0};var q=j&&d(j)+",opacity";h.prototype.enableTransition=function(){this.isTransitioning||(this.css({transitionProperty:q,transitionDuration:this.layout.options.transitionDuration}),this.element.addEventListener(m,this,!1))},h.prototype.transition=h.prototype[i?"_transition":"_nonTransition"],h.prototype.onwebkitTransitionEnd=function(a){this.ontransitionend(a)},h.prototype.onotransitionend=function(a){this.ontransitionend(a)};var r={"-webkit-transform":"transform","-moz-transform":"transform","-o-transform":"transform"};h.prototype.ontransitionend=function(a){if(a.target===this.element){var b=this._transn,d=r[a.propertyName]||a.propertyName;if(delete b.ingProperties[d],c(b.ingProperties)&&this.disableTransition(),d in b.clean&&(this.element.style[a.propertyName]="",delete b.clean[d]),d in b.onEnd){var e=b.onEnd[d];e.call(this),delete b.onEnd[d]}this.emitEvent("transitionEnd",[this])}},h.prototype.disableTransition=function(){this.removeTransitionStyles(),this.element.removeEventListener(m,this,!1),this.isTransitioning=!1},h.prototype._removeStyles=function(a){var b={};for(var c in a)b[c]="";this.css(b)};var s={transitionProperty:"",transitionDuration:""};return h.prototype.removeTransitionStyles=function(){this.css(s)},h.prototype.removeElem=function(){this.element.parentNode.removeChild(this.element),this.emitEvent("remove",[this])},h.prototype.remove=function(){if(!i||!parseFloat(this.layout.options.transitionDuration))return void this.removeElem();var a=this;this.on("transitionEnd",function(){return a.removeElem(),!0}),this.hide()},h.prototype.reveal=function(){delete this.isHidden,this.css({display:""});var a=this.layout.options;this.transition({from:a.hiddenStyle,to:a.visibleStyle,isCleaning:!0})},h.prototype.hide=function(){this.isHidden=!0,this.css({display:""});var a=this.layout.options;this.transition({from:a.visibleStyle,to:a.hiddenStyle,isCleaning:!0,onTransitionEnd:{opacity:function(){this.isHidden&&this.css({display:"none"})}}})},h.prototype.destroy=function(){this.css({position:"",left:"",right:"",top:"",bottom:"",transition:"",transform:""})},h}var f=a.getComputedStyle,g=f?function(a){return f(a,null)}:function(a){return a.currentStyle};"function"==typeof define&&define.amd?define("outlayer/item",["eventEmitter/EventEmitter","get-size/get-size","get-style-property/get-style-property"],e):(a.Outlayer={},a.Outlayer.Item=e(a.EventEmitter,a.getSize,a.getStyleProperty))}(window),function(a){function b(a,b){for(var c in b)a[c]=b[c];return a}function c(a){return"[object Array]"===l.call(a)}function d(a){var b=[];if(c(a))b=a;else if(a&&"number"==typeof a.length)for(var d=0,e=a.length;e>d;d++)b.push(a[d]);else b.push(a);return b}function e(a,b){var c=n(b,a);-1!==c&&b.splice(c,1)}function f(a){return a.replace(/(.)([A-Z])/g,function(a,b,c){return b+"-"+c}).toLowerCase()}function g(c,g,l,n,o,p){function q(a,c){if("string"==typeof a&&(a=h.querySelector(a)),!a||!m(a))return void(i&&i.error("Bad "+this.constructor.namespace+" element: "+a));this.element=a,this.options=b({},this.constructor.defaults),this.option(c);var d=++r;this.element.outlayerGUID=d,s[d]=this,this._create(),this.options.isInitLayout&&this.layout()}var r=0,s={};return q.namespace="outlayer",q.Item=p,q.defaults={containerStyle:{position:"relative"},isInitLayout:!0,isOriginLeft:!0,isOriginTop:!0,isResizeBound:!0,isResizingContainer:!0,transitionDuration:"0.4s",hiddenStyle:{opacity:0,transform:"scale(0.001)"},visibleStyle:{opacity:1,transform:"scale(1)"}},b(q.prototype,l.prototype),q.prototype.option=function(a){b(this.options,a)},q.prototype._create=function(){this.reloadItems(),this.stamps=[],this.stamp(this.options.stamp),b(this.element.style,this.options.containerStyle),this.options.isResizeBound&&this.bindResize()},q.prototype.reloadItems=function(){this.items=this._itemize(this.element.children)},q.prototype._itemize=function(a){for(var b=this._filterFindItemElements(a),c=this.constructor.Item,d=[],e=0,f=b.length;f>e;e++){var g=b[e],h=new c(g,this);d.push(h)}return d},q.prototype._filterFindItemElements=function(a){a=d(a);for(var b=this.options.itemSelector,c=[],e=0,f=a.length;f>e;e++){var g=a[e];if(m(g))if(b){o(g,b)&&c.push(g);for(var h=g.querySelectorAll(b),i=0,j=h.length;j>i;i++)c.push(h[i])}else c.push(g)}return c},q.prototype.getItemElements=function(){for(var a=[],b=0,c=this.items.length;c>b;b++)a.push(this.items[b].element);return a},q.prototype.layout=function(){this._resetLayout(),this._manageStamps();var a=void 0!==this.options.isLayoutInstant?this.options.isLayoutInstant:!this._isLayoutInited;this.layoutItems(this.items,a),this._isLayoutInited=!0},q.prototype._init=q.prototype.layout,q.prototype._resetLayout=function(){this.getSize()},q.prototype.getSize=function(){this.size=n(this.element)},q.prototype._getMeasurement=function(a,b){var c,d=this.options[a];d?("string"==typeof d?c=this.element.querySelector(d):m(d)&&(c=d),this[a]=c?n(c)[b]:d):this[a]=0},q.prototype.layoutItems=function(a,b){a=this._getItemsForLayout(a),this._layoutItems(a,b),this._postLayout()},q.prototype._getItemsForLayout=function(a){for(var b=[],c=0,d=a.length;d>c;c++){var e=a[c];e.isIgnored||b.push(e)}return b},q.prototype._layoutItems=function(a,b){function c(){d.emitEvent("layoutComplete",[d,a])}var d=this;if(!a||!a.length)return void c();this._itemsOn(a,"layout",c);for(var e=[],f=0,g=a.length;g>f;f++){var h=a[f],i=this._getItemLayoutPosition(h);i.item=h,i.isInstant=b||h.isLayoutInstant,e.push(i)}this._processLayoutQueue(e)},q.prototype._getItemLayoutPosition=function(){return{x:0,y:0}},q.prototype._processLayoutQueue=function(a){for(var b=0,c=a.length;c>b;b++){var d=a[b];this._positionItem(d.item,d.x,d.y,d.isInstant)}},q.prototype._positionItem=function(a,b,c,d){d?a.goTo(b,c):a.moveTo(b,c)},q.prototype._postLayout=function(){this.resizeContainer()},q.prototype.resizeContainer=function(){if(this.options.isResizingContainer){var a=this._getContainerSize();a&&(this._setContainerMeasure(a.width,!0),this._setContainerMeasure(a.height,!1))}},q.prototype._getContainerSize=k,q.prototype._setContainerMeasure=function(a,b){if(void 0!==a){var c=this.size;c.isBorderBox&&(a+=b?c.paddingLeft+c.paddingRight+c.borderLeftWidth+c.borderRightWidth:c.paddingBottom+c.paddingTop+c.borderTopWidth+c.borderBottomWidth),a=Math.max(a,0),this.element.style[b?"width":"height"]=a+"px"}},q.prototype._itemsOn=function(a,b,c){function d(){return e++,e===f&&c.call(g),!0}for(var e=0,f=a.length,g=this,h=0,i=a.length;i>h;h++){var j=a[h];j.on(b,d)}},q.prototype.ignore=function(a){var b=this.getItem(a);b&&(b.isIgnored=!0)},q.prototype.unignore=function(a){var b=this.getItem(a);b&&delete b.isIgnored},q.prototype.stamp=function(a){if(a=this._find(a)){this.stamps=this.stamps.concat(a);for(var b=0,c=a.length;c>b;b++){var d=a[b];this.ignore(d)}}},q.prototype.unstamp=function(a){if(a=this._find(a))for(var b=0,c=a.length;c>b;b++){var d=a[b];e(d,this.stamps),this.unignore(d)}},q.prototype._find=function(a){return a?("string"==typeof a&&(a=this.element.querySelectorAll(a)),a=d(a)):void 0},q.prototype._manageStamps=function(){if(this.stamps&&this.stamps.length){this._getBoundingRect();for(var a=0,b=this.stamps.length;b>a;a++){var c=this.stamps[a];this._manageStamp(c)}}},q.prototype._getBoundingRect=function(){var a=this.element.getBoundingClientRect(),b=this.size;this._boundingRect={left:a.left+b.paddingLeft+b.borderLeftWidth,top:a.top+b.paddingTop+b.borderTopWidth,right:a.right-(b.paddingRight+b.borderRightWidth),bottom:a.bottom-(b.paddingBottom+b.borderBottomWidth)}},q.prototype._manageStamp=k,q.prototype._getElementOffset=function(a){var b=a.getBoundingClientRect(),c=this._boundingRect,d=n(a),e={left:b.left-c.left-d.marginLeft,top:b.top-c.top-d.marginTop,right:c.right-b.right-d.marginRight,bottom:c.bottom-b.bottom-d.marginBottom};return e},q.prototype.handleEvent=function(a){var b="on"+a.type;this[b]&&this[b](a)},q.prototype.bindResize=function(){this.isResizeBound||(c.bind(a,"resize",this),this.isResizeBound=!0)},q.prototype.unbindResize=function(){this.isResizeBound&&c.unbind(a,"resize",this),this.isResizeBound=!1},q.prototype.onresize=function(){function a(){b.resize(),delete b.resizeTimeout}this.resizeTimeout&&clearTimeout(this.resizeTimeout);var b=this;this.resizeTimeout=setTimeout(a,100)},q.prototype.resize=function(){this.isResizeBound&&this.needsResizeLayout()&&this.layout()},q.prototype.needsResizeLayout=function(){var a=n(this.element),b=this.size&&a;return b&&a.innerWidth!==this.size.innerWidth},q.prototype.addItems=function(a){var b=this._itemize(a);return b.length&&(this.items=this.items.concat(b)),b},q.prototype.appended=function(a){var b=this.addItems(a);b.length&&(this.layoutItems(b,!0),this.reveal(b))},q.prototype.prepended=function(a){var b=this._itemize(a);if(b.length){var c=this.items.slice(0);this.items=b.concat(c),this._resetLayout(),this._manageStamps(),this.layoutItems(b,!0),this.reveal(b),this.layoutItems(c)}},q.prototype.reveal=function(a){var b=a&&a.length;if(b)for(var c=0;b>c;c++){var d=a[c];d.reveal()}},q.prototype.hide=function(a){var b=a&&a.length;if(b)for(var c=0;b>c;c++){var d=a[c];d.hide()}},q.prototype.getItem=function(a){for(var b=0,c=this.items.length;c>b;b++){var d=this.items[b];if(d.element===a)return d}},q.prototype.getItems=function(a){if(a&&a.length){for(var b=[],c=0,d=a.length;d>c;c++){var e=a[c],f=this.getItem(e);f&&b.push(f)}return b}},q.prototype.remove=function(a){a=d(a);var b=this.getItems(a);if(b&&b.length){this._itemsOn(b,"remove",function(){this.emitEvent("removeComplete",[this,b])});for(var c=0,f=b.length;f>c;c++){var g=b[c];g.remove(),e(g,this.items)}}},q.prototype.destroy=function(){var a=this.element.style;a.height="",a.position="",a.width="";for(var b=0,c=this.items.length;c>b;b++){var d=this.items[b];d.destroy()}this.unbindResize(),delete this.element.outlayerGUID,j&&j.removeData(this.element,this.constructor.namespace)},q.data=function(a){var b=a&&a.outlayerGUID;return b&&s[b]},q.create=function(a,c){function d(){q.apply(this,arguments)}return Object.create?d.prototype=Object.create(q.prototype):b(d.prototype,q.prototype),d.prototype.constructor=d,d.defaults=b({},q.defaults),b(d.defaults,c),d.prototype.settings={},d.namespace=a,d.data=q.data,d.Item=function(){p.apply(this,arguments)},d.Item.prototype=new p,g(function(){for(var b=f(a),c=h.querySelectorAll(".js-"+b),e="data-"+b+"-options",g=0,k=c.length;k>g;g++){var l,m=c[g],n=m.getAttribute(e);try{l=n&&JSON.parse(n)}catch(o){i&&i.error("Error parsing "+e+" on "+m.nodeName.toLowerCase()+(m.id?"#"+m.id:"")+": "+o);continue}var p=new d(m,l);j&&j.data(m,a,p)}}),j&&j.bridget&&j.bridget(a,d),d},q.Item=p,q}var h=a.document,i=a.console,j=a.jQuery,k=function(){},l=Object.prototype.toString,m="object"==typeof HTMLElement?function(a){return a instanceof HTMLElement}:function(a){return a&&"object"==typeof a&&1===a.nodeType&&"string"==typeof a.nodeName},n=Array.prototype.indexOf?function(a,b){return a.indexOf(b)}:function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1};"function"==typeof define&&define.amd?define("outlayer/outlayer",["eventie/eventie","doc-ready/doc-ready","eventEmitter/EventEmitter","get-size/get-size","matches-selector/matches-selector","./item"],g):a.Outlayer=g(a.eventie,a.docReady,a.EventEmitter,a.getSize,a.matchesSelector,a.Outlayer.Item)}(window),function(a){function b(a,b){var d=a.create("masonry");return d.prototype._resetLayout=function(){this.getSize(),this._getMeasurement("columnWidth","outerWidth"),this._getMeasurement("gutter","outerWidth"),this.measureColumns();var a=this.cols;for(this.colYs=[];a--;)this.colYs.push(0);this.maxY=0},d.prototype.measureColumns=function(){if(this.getContainerWidth(),!this.columnWidth){var a=this.items[0],c=a&&a.element;this.columnWidth=c&&b(c).outerWidth||this.containerWidth}this.columnWidth+=this.gutter,this.cols=Math.floor((this.containerWidth+this.gutter)/this.columnWidth),this.cols=Math.max(this.cols,1)},d.prototype.getContainerWidth=function(){var a=this.options.isFitWidth?this.element.parentNode:this.element,c=b(a);this.containerWidth=c&&c.innerWidth},d.prototype._getItemLayoutPosition=function(a){a.getSize();var b=a.size.outerWidth%this.columnWidth,d=b&&1>b?"round":"ceil",e=Math[d](a.size.outerWidth/this.columnWidth);e=Math.min(e,this.cols);for(var f=this._getColGroup(e),g=Math.min.apply(Math,f),h=c(f,g),i={x:this.columnWidth*h,y:g},j=g+a.size.outerHeight,k=this.cols+1-f.length,l=0;k>l;l++)this.colYs[h+l]=j;return i},d.prototype._getColGroup=function(a){if(2>a)return this.colYs;for(var b=[],c=this.cols+1-a,d=0;c>d;d++){var e=this.colYs.slice(d,d+a);b[d]=Math.max.apply(Math,e)}return b},d.prototype._manageStamp=function(a){var c=b(a),d=this._getElementOffset(a),e=this.options.isOriginLeft?d.left:d.right,f=e+c.outerWidth,g=Math.floor(e/this.columnWidth);g=Math.max(0,g);var h=Math.floor(f/this.columnWidth);h-=f%this.columnWidth?0:1,h=Math.min(this.cols-1,h);for(var i=(this.options.isOriginTop?d.top:d.bottom)+c.outerHeight,j=g;h>=j;j++)this.colYs[j]=Math.max(i,this.colYs[j])},d.prototype._getContainerSize=function(){this.maxY=Math.max.apply(Math,this.colYs);var a={height:this.maxY};return this.options.isFitWidth&&(a.width=this._getContainerFitWidth()),a},d.prototype._getContainerFitWidth=function(){for(var a=0,b=this.cols;--b&&0===this.colYs[b];)a++;return(this.cols-a)*this.columnWidth-this.gutter},d.prototype.needsResizeLayout=function(){var a=this.containerWidth;return this.getContainerWidth(),a!==this.containerWidth},d}var c=Array.prototype.indexOf?function(a,b){return a.indexOf(b)}:function(a,b){for(var c=0,d=a.length;d>c;c++){var e=a[c];if(e===b)return c}return-1};"function"==typeof define&&define.amd?define(["outlayer/outlayer","get-size/get-size"],b):a.Masonry=b(a.Outlayer,a.getSize)}(window);PK<\1˜3assets/lib/bower/font-awesome/fonts/FontAwesome.otfnu[OTTO  CFF 9s7EPAR(l0OS/22z^`cmapǢThead6hhea P$hmtxJ+t maxpP `name>$# h postx  FontAwesomeC   U6U6 22  ",04<>EGMT\_ehmqy}#)4>HT_lp{ '4=GRYfoy &,39COVcoz"/5;FPUZes}&+16<EOW_hmqv| )04=DPX\aju(,26GYhy %16;>EMUckox    $ 5 G V g l p v    & * - 0 3 6 9 < ? B F O _ c u     & 5 B Q a f m t y    ! % ) - 1 5 9 = A H L P T X \ ` d h l p t x |       % , 3 7 ; ? C G K O V Z ^ b f j n r v z ~   !%)-159=AEJNRVZ^bfjnrvz~ "&*.26:>BFJNRVZ^bfjnrvz~ "&*.29@GNU\cjqx  '.5<CJQX_fmt{ '.5<kvglassmusicsearchenvelopeheartstarstar_emptyuserfilmth_largethth_listokremovezoom_inzoom_outoffsignalcogtrashhomefile_alttimeroaddownload_altdownloaduploadinboxplay_circlerepeatrefreshlist_altlockflagheadphonesvolume_offvolume_downvolume_upqrcodebarcodetagtagsbookbookmarkprintcamerafontbolditalictext_heighttext_widthalign_leftalign_centeralign_rightalign_justifylistindent_leftindent_rightfacetime_videopicturepencilmap_markeradjusttinteditsharecheckmovestep_backwardfast_backwardbackwardplaypausestopforwardfast_forwardstep_forwardejectchevron_leftchevron_rightplus_signminus_signremove_signok_signquestion_signinfo_signscreenshotremove_circleok_circleban_circlearrow_leftarrow_rightarrow_uparrow_downshare_altresize_fullresize_smallexclamation_signgiftleaffireeye_openeye_closewarning_signplanecalendarrandomcommentmagnetchevron_upchevron_downretweetshopping_cartfolder_closefolder_openresize_verticalresize_horizontalbar_charttwitter_signfacebook_signcamera_retrokeycogscommentsthumbs_up_altthumbs_down_altstar_halfheart_emptysignoutlinkedin_signpushpinexternal_linksignintrophygithub_signupload_altlemonphonecheck_emptybookmark_emptyphone_signtwitterfacebookgithubunlockcredit_cardrsshddbullhornbellcertificatehand_righthand_lefthand_uphand_downcircle_arrow_leftcircle_arrow_rightcircle_arrow_upcircle_arrow_downglobewrenchtasksfilterbriefcasefullscreennotequalinfinitylessequalgrouplinkcloudbeakercutcopypaper_clipsavesign_blankreorderulolstrikethroughunderlinetablemagictruckpinterestpinterest_signgoogle_plus_signgoogle_plusmoneycaret_downcaret_upcaret_leftcaret_rightcolumnssortsort_downsort_upenvelope_altlinkedinundolegaldashboardcomment_altcomments_altboltsitemapumbrellapastelight_bulbexchangecloud_downloadcloud_uploaduser_mdstethoscopesuitcasebell_altcoffeefoodfile_text_altbuildinghospitalambulancemedkitfighter_jetbeerh_signf0fedouble_angle_leftdouble_angle_rightdouble_angle_updouble_angle_downangle_leftangle_rightangle_upangle_downdesktoplaptoptabletmobile_phonecircle_blankquote_leftquote_rightspinnercirclereplygithub_altfolder_close_altfolder_open_altexpand_altcollapse_altsmilefrownmehgamepadkeyboardflag_altflag_checkeredterminalcodereply_allstar_half_emptylocation_arrowcropcode_forkunlink_279exclamationsuperscriptsubscript_283puzzle_piecemicrophonemicrophone_offshieldcalendar_emptyfire_extinguisherrocketmaxcdnchevron_sign_leftchevron_sign_rightchevron_sign_upchevron_sign_downhtml5css3anchorunlock_altbullseyeellipsis_horizontalellipsis_vertical_303play_signticketminus_sign_altcheck_minuslevel_uplevel_downcheck_signedit_sign_312share_signcompasscollapsecollapse_top_317eurgbpusdinrjpyrubkrwbtcfilefile_textsort_by_alphabet_329sort_by_attributessort_by_attributes_altsort_by_ordersort_by_order_alt_334_335youtube_signyoutubexingxing_signyoutube_playdropboxstackexchangeinstagramflickradnf171bitbucket_signtumblrtumblr_signlong_arrow_downlong_arrow_uplong_arrow_leftlong_arrow_rightapplewindowsandroidlinuxdribbleskypefoursquaretrellofemalemalegittipsun_366archivebugvkweiborenren_372stack_exchange_374arrow_circle_alt_left_376dot_circle_alt_378vimeo_square_380plus_square_o_382_383_384_385_386_387_388_389uniF1A0f1a1_392_393f1a4_395_396_397_398_399_400f1ab_402_403_404uniF1B1_406_407_408_409_410_411_412_413_414_415_416_417_418_419uniF1C0uniF1C1_422_423_424_425_426_427_428_429_430_431_432_433_434uniF1D0uniF1D1uniF1D2_438_439uniF1D5uniF1D6uniF1D7_443_444_445_446_447_448_449uniF1E0_451_452_453_454_455_456_457_458_459_460_461_462_463_464uniF1F0_466_467f1f3_469_470_471_472_473_474_475_476f1fc_478_479_480_481_482_483_484_485_486_487_488_489_490_491_492_493_494f210_496f212_498_499_500_501_502_503_504_505_506_507_508_509venus_511_512_513_514_515_516_517_518_519_520_521_522_523_524_525_526_527_528_529_530_531_532_533_534_535_536_537_538_539_540_541_542_543_544_545_546_547_548_549_550_551_552_553_554_555_556_557_558_559_560_561_562_563_564_565_566_567_568_569f260f261_572f263_574_575_576_577_578_579_580_581_582_583_584_585_586_587_588_589_590_591_592_593_594_595_596_597_598f27euniF280uniF281_602_603_604uniF285uniF286_607_608_609_610_611_612_613_614_615_616_617_618_619_620_621_622_623_624_625_626_627_628_629uniF2A0uniF2A1uniF2A2uniF2A3uniF2A4uniF2A5uniF2A6uniF2A7uniF2A8uniF2A9uniF2AAuniF2ABuniF2ACuniF2ADuniF2AEuniF2B0uniF2B1uniF2B2uniF2B3uniF2B4uniF2B5uniF2B6uniF2B7uniF2B8uniF2B9uniF2BAuniF2BBuniF2BCuniF2BDuniF2BEuniF2C0uniF2C1uniF2C2uniF2C3uniF2C4uniF2C5uniF2C6uniF2C7uniF2C8uniF2C9uniF2CAuniF2CBuniF2CCuniF2CDuniF2CEuniF2D0uniF2D1uniF2D2uniF2D3uniF2D4uniF2D5uniF2D6uniF2D7uniF2D8uniF2D9uniF2DAuniF2DBuniF2DCuniF2DDuniF2DEuniF2E0uniF2E1uniF2E2uniF2E3uniF2E4uniF2E5uniF2E6uniF2E7_698uniF2E9uniF2EAuniF2EBuniF2ECuniF2EDuniF2EECopyright Dave Gandy 2016. All rights reserved.FontAwesome [_"+/37;TX_dhn#'Prz.26:@DHM %*.48@ENUZ^}/3PW^cgl8<FJCUajov{ @ J Z  & * . : A T m r }   ; B F L T X _ c i n s z   . 3 8 @ F K P p |  & E d m z  %1=BGNU[e #)-7=CJO]kr):PUblqv|",5:BJOTgz$6HZ]hs{  &,6@JTX`hnt| )8@OSX\bhp~"/4;?FLSW\hmt ',2=HS^elw* A T&fAV TlfPzz  P 4 ! t  q q bt& y}}y 33 % 33 `zT~~ 4] Tg@Z 4  R ,T[@ << 4 ,  ^ 2 %%%%%% 3 T< nh @ ;T N TITN C KFKk 6 ? J  : K, : y}Tj 5 / W  K$ 'T$ V L  v   L  6 f y}}yy}}yl z||z % 1  KTTY= |zKz||zKz|N !5 ! ff( G Q 3 |T|T| T T T|zs R 3& ' ' < @A G   ^ [= T / 3 c - `V } hn " Bv g OG `E}n\>lg ,hh@@h EQ P  |z@z||zTz||zz||zTz|7 F x  3C DRRD D u y  ; ;  5!J b h  5 / TT  + - tzuxu[Brlmyz~5qsU hnnhhnnh ttt  T  y}}yKy}? j 3CC  5 ;(=ZXWG/9;/_Mknmn9:YIƑP`q~d_i rcrr iii  y @H -R '   T  1<t0  lnl||}_zob^^bzM ~w~~w~ K = +tX @] @gZ t V``V; ;`L< xra YW  @3 &  ~~w~ @    5! }yvKyx}zy n   T7 rrcr ~ g hnnh YYG P ~ ******** = 4 4  )  .@ (  [  h  P v T~z$ j +[   <<5! I 4 * A C 7 r C 7 @r b ! 6g  T E ˋh 3/{V= n\n ]9 vx {zz{ X  CZ7)D T}yT8T C T7 Tr ]][ 1    7U f @ m   < ZZ ZZ { B r r z{ + T  |z nh yyrrrry pttp&pt 15 tv ' K(   ;;  g  $4 y  ~ MQ s QDnty y  t Ft e 11e BB  T  2     r   I F  y'& K w__c 4444 p] R  GTTX x ]]  83  wrr h  h@ ;fveK \xcikvss]tRat 7+447 && 7  V ( - hn  D$$D  , }t P  `=db97 Bx  t3 ?L g__gg__g a `V     C3 ~w] } y6%6- _$cX ~ TR V22VV22V   P@zyz z  s/ A v  zz{   b   z -    f t    & 3    ]] EGxZny tP P   ++P,  ʲ ,   _hmx 2       ˋ  d4  4 T[ `M`M y}}yT, V ;; 0 && T 3   t' . %  @ p ) qt{tsoy s%$   333vK  44 \ ~v  }jii C @@ x~ C Kw 5 !4 wkz|| ,$P++   -     g s} }y     f   #E T @  )Wbit  S 4X wmxyjh  ofZedZd W f r rsyy'&    h@ v   }592I88!~   I M ? y * BP|88;l]5m+\<b-G_y'>U>c R !0!","^"#0#$ $q$$%%~&5&'A'))*J++,,m,,-..1.../P/00192245q556<6717x78h9:S;x<ghhi-iij jkwl%lm7mmmn$n;nOncnnnno"oopp&p>pXqq q}rIrs8s:s<ssstuv<wIwhwxGxy yz&{6{u{|||}~~~~CM9C|28VP cSOI#|L`m Po1*x4f.HU\1'Cw[W(b;J{.ŝQƭfǮ*ʛ˗̉͌|`ϫZҝ(Jտ׻p9D9gtg,q?o]1aJC0g $   N   F.yq4+M< !>!";"h"##$b%g&D&''''''(()*"*++,?,p,-F-U4>45~566636>67 8"99:-;F;<9<='=\==>?Y@RABDEAFGH(HIImKGLLM^NZOPxQ@RS%SlSVWX:XRXXYY]YZZ[+[n[\d\]g^Y^_2_`5`aacBdd;dWdvde!ffgoghNhikj@jklmnopqhrtukvYwfxzV{r|}/~~Uu[ tJ~3J#c$;Tt TT4P 4 c z..ȮhKhh3c # ^uiƭR@2A 4 FMffMZnnw   v x P  `Vc~ofa[! Y!    T@ b@ suw#$L>$#69JX"!!`V+/EE+V1RF _r Zo p]t ksu[ztvUZ tq9 [[9:QQ:Mqksu[ztvUZ ZJ J&  & a )| s Kw t w4X ] g@ v   YT3 Y`VV``VTV`Գ  T3 YT3 TV``VT; YTV``VT; T\TV``VT;  ^y $% IVhhvjyy  IIVV V V ttC KFttFKktt r tt> @   V  FKkr @   pP tW&S:aR`S:a))6z 6)õ`a;R`W&tPQEEQQEEQY 8 &8 &T8 T&8 @ e { zK}zaEV" nmloL{yry}{{OJNll~n|i&js^^[{m~mkNo|y|rz{Kpijki\f_i]QM[!|Lz~rǑ̒Ȫ'fgiMm([popHH4 wOVVOcZwE;L1Hu v tnnt/ s~oJ,zW`aGahc~v~AHH  w !4t4tt4tt to T 4# )vTV{||||Ng|5ppTy~}y:y~Tppur5|gccn_Tz}y}}zT T dgf[wXX[fe6 tqTKTTT TTx44t8 zT~~f9x44t8(& T T9vT ,T,ThXhYm}}chhcqj}}iVgv wxrwwvtL# P  !SY ylD&)'C3$ Y4K Ti t}yT|}zcesd,.9/F- 1T5 T "Q>W "SX5z|[,9FZ3 Ti 9 "! ! T@ G vTi TT T+3 kT^^^^Tkcv ]btkr Kg _=1lno1"-SKq~n}s{x}zsz.;3n L vTTVT/WW/!(ZMj: kD L k+8V=_GxɁHKxMG_8+ MrrN-hnog? ?go Gw_ rN-hnog? ?go_QPox}yCQ(Csyrp}t{xo^PQ_K n{}|zx8 S``*S8 qxozo||{}s}|{n. K    x       0m 8 vvʪʪꪫʪ骫kihvvvijiʌ 1 w ʓ ʓ 1Y1Q kllʙ F?ijivvviijz )z _^X*DtcX_^sjii}jttjjhsW  m g|vtywxog`vf/TFw.qra\zzzaM{tswxyzzVc,sj|wut{tv\h2p]yx}xzuxWi:mY{pvzs~{sww}e_^#:/r8"   4< 4K4"Kme,,eBV4 K"44"4kt4:4t> )T33333333T4tXr=EE=UIrXt tK T/ ,Q iep%/,xxx(((#Ɏ wR'VbgfVpoqqq{\/j}}Yh^?DFG@EatV@ha%-n<5scsŔO5*VJM(0x[[_}~􊢋 %;AHW{'Qbgfg FIGf=R!Gv^]^z8'n\PuH#hPMqJK{-!ߜv`ЊxġMMN[ĐơϦԖУ!!!x$ǁΓm`r;ni~GhftnOlFKwz6- ;p6p_ph6hpo;_}oh6h6}_ Ǐ\|}Cy ^^^LuZ qmeptcCDCm  ǐ]|zb||}3mrS 667W, "m~yv}u] y]h vp|zwwzv {y{  |p hm R<0 R<P 0 R< i m R<0 R<i m 1<0 1<P 0 1< i m H H H t##@w t\ > tTdw TiFy tdv0{tz{~'&9* TT33T&:''~ )TTTn4444Tt|z@ 4kX S @g@ m  D~~UT44~sjiij}st:944::W  {   NLT_p’xJ  vPPϠHGwwsrP mXXj:bkkcv`~:jX;`Y;l-&PyyQ 4 S+,,||~KKXfccQ+4444400f,,fMff//  gt}{|y~wjX|zh "Q2{zt{tqT4 7\3ulz* p4Tqt   Jw tKK3CC  G fccQ{kkYkkkYkkkkYkBBk C     - 4= 1  gsvZvZ SZvZZZZrZhlvlr|hh|e P @g @g i e P @  ZwZZ2ZZrwhZ P Zw Z  @w}rrwrZZ   %L.2::zzzzr::2%L'2zz:::: zz ph H Z hn  e }2zz11zIIII{zzz1IIII IIII1zzz{IIII{zv P zz{zM vv,+M 1zz6 T 4y}}yTy}T T4,#Q?`\pnZtҫȧPKgjzx}wy\O~#7@TKT ttt4 4: T +y}4j 4y}}yTy}4 44 `$$`$`$ $$$`$<Tg #Zk==k##kZ==Zk#<#k==kZ##k==k#i ]&&  &&&&&&kK# g2%''%% ::!8# t  %56&{SjjQh[=<<=> >KwP ^CT}s@skiij}sstv jt }sTӸKw~ssjiik}ss@@stjtTC^OGGOTsv js@tE @wKsjiij~stsv ks@sTC^ǸTs @KT@sjiij}ttT  Ttjiij}tsA@sv jt t W @j{t,Qa! KtkvqCt e t ԛ 4 * <<< <+!y}|z |RT|y.}|yMx|zp 4HhnzhThnhTThS\V`fy~5V``VV5`V RL'HMoZd99dMH''e L( $4A 4u v߈ /J7I[^_[Z_~}yhn{x(HZf7p\XTHaG-whhiwVQZ:#vz]l`L{l{,+\^˒1 t4C FKk@r CN.ETiCkhT$T$?LL?'0cGv=< vc0;'dquuq--] LaaLvtrrtvLa`Lv$T$]D'#5'0cGv=<#7quuq-.] Sv-yU*PNO_Z~wrsrswH7*V3ziU{Qg eg SA:NT~=L=&0ErAuX5y}|y }R|yR ~|yMx|z]pkou`\\`qbuud[ddsP uz``K4K++44-3V +*QQ듔VV땓4L554K 4 ˫44˫  44Tt Tt Tt44K Gt4 tK Gq q bt."&Ft8t+ +K Qc-b.T5MKTz|sRrQnSSL0t8tĤŨTy}v0%%_Ib \;COLD|yz|rs{A0%e P T%Ki``iK%,QQ,g /g / arzyzyrrbr:9r :9k lr:9:9rrbrzy zy) 4TT@yxxy}||g T44rdTr 4g T44fTF4TTB ||} pQEEQQEEQQEEQQEEQg OH `E{l^@lg ,h v 4 4 &Q)WWXg3 UGQ {y|ss^    / T   14= 1i    m} t2o`gfbnh ./>p+>|Ri/8Crb{Zja_qV Om|  PC44T%V``V L teP  T  hP  TTTT noqqon Tft//tq:v++n+*mm*+n33Väyppv-)mvv  >{ ERQDEQc ERQDEQQE9},~ q 2srqt-}}N}}~ZTYprr~n pwefc~rrq/s~|~M}~,soppndmfnen s -}N1kmo/ ` >a B`  aNty6$7mF dI.3WW- hn fo1\s\ko{yxx<^  U/SkW ?Ÿj-@  +6 OGo Dɝ·lZ'#ik}ts')2OKebh`i_mdG1dqhWm]a"WY VF e G.3O׈- 7hn GNOH 6  t@K̬-*osr^ ?<kO篞 OY OxxytR]׈ssvkc\k}\vsO1fOzkO~rvdOJ.eY$n:moOhq1d_`cJl2)t}ǏymD׈ 83vb@KM>M>KR4)<5Mnɿ<5)4RP p]o udr T~ϧ\ ԕT33~ϧ4 J{{{J{J IYU:=YϿڼWG j8Ke`bz|vw{ ̋{&,(i"z  4t4 T, L T480QEEQQEEQ08.(y{wAi  t XTiTQg B 4DD G U DD t * ^GofTp ^Go &  8^!Y1/)Yb1+3 X ] +V``VRzf|Xm}[YKKkK+++K+>7+++k˙̚zfR[ /`obt@v'T_Gqzy Ywjo`)Ib`__`b)`~oDW~jgw^SX _~|~~tjn~@t^oYYk|P/"`c}{q_'TvQ yyt    ?ApDU88Dp?6 \xTTz{{z~TTK TT 1 !8 2 ZZ.n82Y\uZQ m{r^-Ʒ֫Ϧ [ @{wx^^]Up[c\ˀt bdee  @$fb% aa>"ipuleǞëѯ X4* (3&  &;*226;*qXsIm[FHNMo;otpлͩ&oxtt_Jdwry0Ayu{&Ay  v(TQrLyJγʣMfEpB}P7.G$%Frrs3Xo[{TO(QVY`1(mpnnvww ."4X+prq/#>VK?ʹķ Sp.v/nQ11'A<* <<xp%j]^hYE֊ׅB ?Gߩϼqٵ˟'(͔͂z'w!q=wUG7HJ?xs]C$8rwsp+qi^arʆŕ vTTTT$T4\+T /i )* l @Z @Gtt   V Tnzi.],++,]i{{}zyjpnjry''{{~{y#joicciq#4 444@ G2t1v~z1vF4YtHAAHZEtYrtpg  2  4Ttt] TgEuFF6!1=۴ n_F( RD\\D VT$4[ .G^SSG^J(@twT3fV``V}~d3fTw@t(EQT! Te `wrPNxyprNV[Pwrqqyxyprrwwr[PNrpyxxyprNP[rwwrrpyxyprrwP[VNrpyxNPrw}PNVVNPx,4.oU wtFPPFs\k{oyxx >\V?Ckwk++JLOG  =3`?.Qm\ibgbjnG5[hofuelY=  ,.Gc4n8`XC>[B natĹo8ixFPv8+֫ঽtttuV]]B1 o8[GngimQ`?34=_`b    =acfn}|}KKYXS#Ln8  4.B `KPV?Ck1B]]Vvuut+`PF`xiPta ?MQYKK}|}Pfca=    b`_=43?`Qmig`nG[  ʰ .Gc4B tZB xxyatRt]ssvikcx\j_qFPPFGOLJ++kϰkpC>[Hkfuf h[5Gjnbgbi\m.Q?`3<    p=ϰˠSLH QQ{zH 00 0, {zz{QQ   X00{zXz{0QQQQN0{z 00{QQpQQ , {z P00 M QQqQQ, {z %Q4.&E݂v'* <<< <+'~'|iyzr|x|~t}uz~}tyzrjhv~|'{|~oz|'r}spwhjhy~|}}|x}owuxzp}o~vqyv}}{oy~tcuyuu~xr}|~gwɛ|cx||v'݀t| $|~d+|~vrys~݇uw}{~|G|}}xzutl݇|~|rk|'|}y~z{|}{x|sv~vzyzzy'7}r~ww/*Gs kin 8"W==sv jt >>Gww|&xjUt=N,B[ Q?F  t{tqz4~ zv x  44B  44t tX S {e w$$ Tx Tqt{stoy$$$$tqT5 Tp $$ yots{tqT/T $$K T0 T $$) Wn|`_]#v:[vVi\\iVv6*446eTa u܎v#6]_`uuu0n1W@^;e UU`4U5TTTT`4S2SBzyrrrrybcyjdM djyddysqSUmtvwjoXV``VXojvwtnrryBddkybcyrrUnTddUA??BnUU'&UVlA?>CTddUmի3STk@<?BUbcTm,Ԩ'&)J,> KQtd_O>Kj }|},D!/G  # # @*! ! @i##flA\4v4443T3o@TMK"~xF͇F6)-1?pWSRWn?=%(EUmþBB_XS-(mU6EF(%=?VXpO򎬇F˞y\&sqb]NENewdG&NS6}dNDwO]bqNñџsSe&GF\}w~vt:4+q4CKtېE,  aV4dYztdP\4VAlff,,fflAV4< :\i?fflAV4M 4440M 4|+fLdUS55TTd..Ġ ..||eWT6LL6UVe[o!"m\à B)%h;=h&)CMe0 0 4\ 44< A 4{}~bx4T TGkmeeBV4V``VTe P  & P T wVn5!Jt4C 7 F nt4C 7 F T 7 F ') h $J7_H,  `djXg]SˈScfzhebpR3 ^v" Om(;.?GdFjPyi7voMyyy4 (!?::: @(t T @ Tz|> $@1 i{pkgGR[".__ušȟmNgG&߅ȂAP_ATeAa6226^%OLJnpsosxZWS]{`lcmcbnXzyY\a\^cbhnnpszf%_whY+W~ cv͉ΒИ15hv9U!݉}t{D$ WW2 g 5 T4g[wrrZZTTp_Civ9U:j\iCeM#&nYA ,Ómxwr .ffFfH4 ze`c`c#NW[S 9Z))));7eefeefeefee)4  {r|sv>(T+J~ff~JJ~ff~JK  g 5 /{i WԂ W~  TT{z4TT TT TT  m F84  X l @ @wWT ~ KWT @wW~ t0mjingr;<7 M7#?#77 <:fim B4@ V7)0[/1/^//106;$p#sEAA*,?m6"mpF=(G`$.ƣ 0п D&l&yPsjiel{ppmoy,,yrrUg[giyxtq]um~~~~mu]qtyxgi[gUrry,,Vompp{leijttW m b GTTG@u^9v:p%"M$%MڑhiGGTTGT&&@;$yz%:@b %% v TDddDWXYV_lw}v~v*AdDyo6$7 ^~ )?cwrvy~x]͈}|*YvvT p{3 +T TA \ < T T+ \+TT+ \+TT+  m 4 XvvuuvvHNNHHN)   1j j/ eU> k) $1   4< 4T TGK4ime,,~\-4:4 #x:4tT.F pF F 4KqHaZxuuvwtD6O'xODwuxaq\_ II_ \DD$2?? nzykjstz{ztsjmy}z{JlQeűťž̛{yn׭ 0|zT|T`> t7 `Tz|)ttF TGtt )4z}|ytT ty} b tT4TN[cG=B^60AQEEQQEAKuI7#e  #7upjj_pB: ܾئ_Wc[|a m w7Ep{ m;4U3ua[ RҢ&{ & RD[apdu- U;4mph]@@h֦ t tK} KQ$4[ (@twT3fV``V}~d3fTw@t(EQT! T)TTT K5! Khh5 t TQ  _ 4nhhnnh4nhhnnh:Bp צg U ktEQ9 w !44>TiT( ttT1 TiT1 Ti99 t"! N T|zKz||zKz|IT|zKz||zKz||zKz||zKz|6F ^P @g 5 /i  Ut"! 6D> ^ k< TA K +K G+  TGEg p\T /i )> GWW2G4 ttT15 4hZwrrZZrrwZh4 !""  " Ti  4 44 ttTtk}44 kQ)TkktK +4Kk44Tt+kkTkTsTskkTkTt44Kk4 Ftˋ v |g>DRTT˫kTTktkKh@@hTTTppqq4  ph  zZ4  k   k zZ  !ZtLLAZ4K K ztk  z YY Y LK )d { |zX ] g4KGfg 0 K )+TKx  ^4Z T] TgkF GTԀ `t4+V`@Ӷ+r S > n 4Ԁ T q] g 4d_gg_ d4 T GTT[ r  EQ9 v ԫ  TTYwNTt"RDEQRDEQbBTTBQEhEQXxC3p 3CBc BT  b&'&e pe P  @*j{4a,t {z4 tC8qbbb{y{x{K  t4 4t__4\<-7ʗ7-tD&c+zi0&H. 0,-##s& &2iGz@@RQT+c& &t  x P tV``V V`T^ T TT 4 &Q)F|~aiEjVulѬo70 XDQ^ 47mGGT4} & Tnaxjigxi j(C(jgjixhi5'=='5G8 mTi n5Y'=='5YihC ix8  Tg  0 T8 )TK4TTT: TTx TT4 [TTTTKGxP  x  yy p< ZQ ) I t+t I 4!+ I r@I 0I I p%I 0 0 +t $ h q^jM Pdioo '.X Qv \buD J  zxvuzLJ?  s ]RT1 T*)\&Y ffffzM{yz zyz  % @tJjZ!!3!" $yf+/Y kzX,Hn|}1dtZ\IێĬ TPv4TTTTT{K=but5mUzxwyysqggKgywxz{TmӨ'&h ~zUB>>CnUU'&TUmC>>CTz~{ky 75u+= TTg K%.Khnnh<KT/i vPKt/ ohhonhhn ;mg<&S3r< ;|#&%6Nkjk hW x}p;F&<U3r< Y;|$&%6Nlik hW y|p) 9Iv]Yfh{osjeV]]nw vvKuKpJQT*FhltnݖݘƎqDA5%!*QTFhulstnl_a99:Pp~݀*Pk9okթm p [ SD D DU D$$Dm8?CI9 ..9~`n [ AEN^ U TT% 7;L9\XpqTTg 5 9 $9  # 4@n T+}~|C3p knr]J'V{ke{ohc-#</&|~T+ t`` t{yS;RQPIODwt{K6KtqvMn;<-=vvkhF8 !!f ZZ3ZZg%E E !  a!f %33gZZE  Z!f f %3ZZgZZE ! Zf ZZ3gg%E X FIC?6IY(uC XVYx\b66S* PeSGQGz5:5'DN5TT(TKKT(Tn 4R~~'1 A3ZpT4 T7׷ b ,9_7T5 2 TZA1 ~'~Q1  Q1. ꗐv@Ti Tt2 @$k\9 e   yyQ a U) _ T_ T_ _ T_ T_ ss G- |a99az~z |33z}z99S e * <<< <+wvttvw_+3sE Z@@@@֋Y9ZYhYY9Z@@@@Z݋ Z  t   tR1 ~* Q 9{sYsn{xput}T4T~T7T }4TTru|utpxnurT}yZnnAf 3gggggg%E  (@WWS+}}F簰ɋf,,fMff zzq{ttz{ f %3 xt t 444G{zs{4O!mFNB9x*}}~5W]4xE G xtTc ## yussu~uvqxTzTQOy7}TxvvxzT}xqvu~OzTxqvu~ussuTTt: T,T[T}ysxEFvdyDs4>$0K_|h)!LNMMNwK=KQx<rGCTU{x%%%%TD即#}f ؋›%%%x%{TG>h  ˳&~'+'}~~}}33 +t4b4tD809mi%if+qU3@  nDDnnDDnnDDnnDDn.bXXbbXXbpc}zppqh&c&}hzqppppqzh}c&&hqppz}c o11!"!!"! $o1111o!"!!"! %11o $Z< <ps 7 7 e &]&8t#4#4-_G_G C3uXr 9*Hb=gh`̀, ް5-"MM/8(x,(90KDzіɕOTOm̀ցQ\Y5Yy{))+)jxYhmG{IUsV7=o{vu! z'f@o&d1caaPEb4"f|aunO鿦ɯ˱nnoI7J!I5.OB\WQĦdRۛ~-aOpbKI2C@lU[s^Yoc`̄ƃ~ƒΑ~vD,@aD1"@3byЀѐl"k"rbsIr3p1o1]_qewG1('$:er)n'y*ԧӥؘؒ6;2]zt[uns PDcl|P~_q<}Nx0k<N/ pti"d-"`#69VѺDMV"TAK$ Th~tT  t~~h hh ~t t{tR t~򕃘t6 ~~t ?t~ qqPV]]tסжihhMD;ZQuItI[nt]FEQZ-[+@@*e-8;@@4uvǹߤ p7ZYCYCq5( v >>>-r>->j7)1 ;auabtavzyvvzyu:uzyvvzyvLR]]SBR]ĸB]Sx*.NZwR]ĹwwR]ĹwǼ|CNGCCG|pNC!C,313, q|]RS]^RBR]Ĺ_wη}|w$䔻kiᦿůI7J+kt}n~x?z}}}b;u{{~(0YP KS{TSm{qiTAsFGKiwzw0o_ewkj "˒lshztu|Цy(0u"5@B'\ϊ؊sqٱ0@.&7e}|_g͗|qD|unlaK]~d iqqquzw|wʎó^=~Şv}M,7QupzTS(pzKYNGJ b/ѓcctup4K6gp1zy@yr7Y}{w\wxFis}txyoGqt sp^)X)iz=JFdf|oL{1$+#~[G0`SQRne*wXjsIx[Ͽ^d7,vX9 ZY 2deҦt0 tE EE#)vo}}4u{zu\ O#nWvZh,lt:$4Zsj{rglb1XldvG'bQ^{yqa|x|{jjs}.Ӣѡ?IY–Kk.#4)sV 1|5Gc%1A XRf 7n]Mw]^}ǟxwVo] ytyywyB A'!3EMM!#]([B4WtIm@nxWxWtIWȇ$rzӎlQ3J>Rq_(%vv==)G/H{uAR6=z@kwlkkwllaelj{RI7 A5ifsgffsh./gge0lF  miE#=[Z\Z#=EOiNQ@QyQ@QpzE&}9ً܉{H[1N[GCJۋz"q*g2EKa"81&*a/rwxrrwT(v]*I0 330H5 7 Tz|4# 5 T|6 T> 4# T3~~TzwwvxT44Oe9 1 dpSF47zw8,lr7RZ(x[ts[{+;fC3DK^Fxukrlqv}TK ?(&PX+)#JU ^mmm jgenyiYW»ëP7iSպԤÎ˒rSppoG.B%r u`vtTtp TR4%Zdz{ IS4( k. pkTt t  tRMo  6 ~* Q)ۛS%4՘ΖT˫KT]HAF-"K g_yz}>Q~{{~؉؇}zy_gK飳ܩn_ZZp_bn:vkbA*t%ndʋ̫44m4tbm++44kkLJJl.d |{|8S"1ÞH=|}}6TV5wSLTT=g}}RIcZYccYZccYZccYZc \pcdwywxRj.j.Rcoͭ}t qZbZZcbYZc\L gSVIm 0ܰ .G.k.L.k?+llH\\HlZ釧鏼0  kcthjz{{z7LvvK7isùĨwлQahaahhaai?Ul[Ĺ]SZ Z+)**MOvrqvvq 25 3 + qv6!Mr342oqv*  ).```NW{WM}|XLyR]^SS]TTVQ~ùù]SS]^SS]WQURTTtt4''tTTttTTtT 788a`aa`a^Mkl` 8aMakaW`a9M97Ba 8M97Ba Hgg[o\@\CG%:`dhbgbۏ֯Ȱ:%G?G%;adhbgbN;%GH v/}7 Q Yr3FZXaXxwx_blkxB) K%Lo3BJwu~kuxu*k?Oz!xyxvzAY Ϲ[Djmhl|{{̡ԡԈ֊ j8ч5T&9E Z$jb<r(B{]<6TYuZ|iJC^E,g_zsyubՖӪu^q-1ݛzJ1jI1jgTiԻEY}MF{M`@]~tvtz,J ~Y=U/0Aqtתԛdz}PPxvtnos~}mzVz-cObPru[N S=)id<&liXsŒՍ0ZZ6:3W4U_U266WBN h[aj6GUv@cLj^HI,+Tjk(jjc+,54+,mmZZ;ZZ۽+,33m0vH9*/o⩩+,44>4 q{7$//)9wh 0m+,54+,44,,nZܼۋZ,,>'l4n,,44,,44,,mZ;ZZZZ;Z+,/o-D/#5>'}n00nm,,54,,44,,ۋZZ;ZZ+,j+ JѲ"^ z}i{ѧ錐zss^myzSvnnU{uuwz~˜ڦLvewe :rnwt]R{ϝȹ̯\jtazm|}l~~nh~uN?MamJ}fg^%llI%uXBlznxj|Z6{&1~\NULܿI4'6kZ6nNwatTTTt  T] gZ `77lf,,fAV4 gKW?tqEEE44   @ 5 /0 x AAK TV 1CK TAK TA_K y}}yKy}}yT9 ;9 >0y}}yKy}}yT9 PttpfeOefxxxxeOeffeOeDD8|  Z *`7Q `6w% Y4W%*% X4j%1g6` Q7*` D4 Y%*&4 X%W T#EE#\[^hnT^\z.}TNNNiYT}||||}TYyi[U\`uTTv + @ 8TjMQMQMQWm[FN$l\TT{zzzz{TT\vl]X$FN\vl]X4[^vTt Tt P8jJ2RQkVo8>A , '>&&2uQeGWn!eq=s)b?ɽVWX/c@o E`(yk2@ /@OlmCLAAls  e1U**j*.Nz+8a{z{aY%#y=<==<=<<*```^+LPzlX1Az/-6D&@I`_4| 4B   44!3}|~jk/k;j:/d;jkjL`* `h uY54Y\55\Z56\~  q@-33T&kvvXwpD>m2W._Z8nE 5<hLhLQRSu'/>0Agz8(ҒӑP0KC'ZL{o_uOn ɋ#xW{D ߥpBdȋeE)p3 +57wp ntTy @ y 4'   u n  t' T  K K V ' tXt@ Xtv&'y&'Y   Y&' y&' bKHJjp̃Έbi aouwr~'89{={mx<*e>okjqpi{AR*7}xE|}jp]VY0-|xpaime{}ld""p*}|blv\&A}xfa) Wpo"_m3m"3sٝϞ¿8~~}~hs׌ $zctc^_Pvv~w~yf{h{  Z~}}}}}||{|Z} z}{10df}itj\KMuTuzy~00&    <!! !< jvt Ǒml!4CPWhЌnj|vw||ryIs7h3^1c:gJlXJU>]wD&_nr6Hgdalor@/K&``m}", y@}z~|{@Ë)ҧ̞ȭBO`)y)o3hm^Zx  :w !4i 1J{z~v$${z~J1 E8)3y{||y38)E 1V!4gVQG ?33A HWT! 5|x$5! ~; ~V!4t/|h7S.1l~gd`;!wgvph  i ?v x V!4mTTT  x - VP P P PfAV TlfPzz !  P 44rn<B@(vMzzy:((! u6B@!eDRĨnhhRnD  x K!4Bf~:;8:; 5E}}oۮhJto%]8%{~yxg(|{~rxjrqO>99l>SO~~zz x K!4 EQy  1  %v w !44v{v}JJ}X}w}vw}Xe}w}JJ}wevaʁӎyLzzyӈzz|cyuYaaff6&̶Q HyA~`Dޟ(#PgQ+<3%!!!S|BDMhߺ ђO .-.-.plHs-U7sH<JJJ?H&Urs&l~v~||||~v}~rrrr}|"d ^)[OK0-npq D:)rJ?t~rIFo9$"%9/iüIIR^rdclmkԧ2*:8)0\pFN[BA\ŸghgGDDl)3=  0 jRVVVTPQSyVVV:RjVVyVTPQSVxVVyÁ•VVRjhh @xmŁyVVjRttttF4xPp[px4MFqqqqIwwv|yx*|8 G}AIrw-u\? 5'px$ PY84I5K G3#T1!I%>HGUB& v\wͷ- -%bbd&-JRprvQiu,t~՗Ӣ9RMgĬx{}ާEvhrjplJ- ?&n 5dbbI,ueui`M6fXPljiijlPXlf`M6`ZiRuL};pommop|;LRZM6`m[ [ƗM6Ġ|}+vjS&zzgMRjhed9oICAA~CtIo}d{fxgj ;v+Iz5&o? mjhĬ7;jjjjjjjj 0KBH \O+:xOa_UTS˄BgftXRweWWk!:{z{zzy"J<%wly}jhw|m'!+\! ոϡnMbx7tttpopyjef{m~ Ǻ iii yzyWuf^ V]g`[[f_\ A^N?I`Ujf#b'^jTm4=yBF$3P:kS43g߫ޯG@pFAw@UMMM%O&iWtLXU_ogBF bWR?d/y(#-:=;ra``^_^rrukedA~R?‰“wnmm"?+RU`B=jȕwS<;QE>?F`  RXX4! 55 pqsa_^U^HKʲJpwm7ųu~//:q~iykkkkkkgfhopypoo n0 +(\fmjő¡CB{gtzldg{S)ik-z/Rɮ٫ސq,Þ2=5qnYVL9+3zZ$;;#}MwzVqzvy^oyzzv!UggTUT¯¯gT{fggTgg¯ggUggUTUgTffgUgggg!Mm#[8ICnyy|죢Ԟ[TI&%7O ~~Tvtsrv61psYM O wpv~Tv~tsrvlUXqsk %]rKwx ܿ D&l&yP >T / Ua  3^bXk>C_}g555333g}cm6ﳽmv%f~~O~~~^a}g767/./h~bn1lp.[Rh5kuZi/4oe ^Wf7h7jvWi'2nfz#zCpisL2r@;pEVP<Q;Odlw #> ƭ tt4tt ttTtte 7>jVRH %HVjE##EE EE#HR>7E#E##EجHE##EE##EE E?>?  ++ +  heXuS + þuh  + ++ SXe  %  +  o9˫49/ː/4Gj{fj}^11^rt|qj|$$J|jBGrbrrKK& j SˤreGe~1~w~~w~1G zz0v~0BKR+%+ ~ T+u+~w~10G 4 v2 dd0 mcFr@:}77:@ڳm-T0>2tM2V33V2Y&Lt>T0-V- KKKKKKKKTtY TY TY "6 gn~Y TY TY "@6  H~HfT Tgnp(pT<}~}<4TT~}<2 <p4tp Y:YY%$~~$%YY:YZ$%**44ool8II8oo44**%$Zu* + uHd8lhTwwvym\_u5^/7hVfJC22C=+JVhX[<*N?Y3: ]#"S:Y3N%%I%%%%F%"F%F%"mmm%@5z"mmmmFF VmyjjgwrPE]}~Su8ӗ)xm6 |uw}un]~')kp{u~ y nkuptogo>4y}Ϧ)Q4  gyr=7TRyytvz3*WJttx~8tA&ysjmm}՗ : Vx  dTT- 5P x`  eepZp %$ B((BP! (''$$ GG(GGs$$zhl?9%$ _{_{ V| m % GGGGGGEQQEEQQEG-   %  EQt lT^_|_j-Z7BG:?)_s:y8CXccs{~syyyyzyoto֎~@,="H(`dine|Anq˗NJܨ,+Pמ M q{mv=m RJCww7cl!w/|)q% QXeYGDW[r0Id?qov|wvNX^UZl-ƒs|eW"}fڋ\GQ+L~bGDCd5.26J:#:t|mcUJmopmvn]TB4B@Dd$rvJL88˿}~=.|Նs=xzo<Bd l8l \ʨʩܧxxӪѩ̉Шܧ̩ۨ~+Un/nT8)m'xxxx+UmTs_^^_xxxx((8m0nyfzz~|~wL@ %"sx@{s@q|xs@mw~x ~x _sx{rr|xs@sx@zs (r{xs 2C % $ %w x}s@nww~s@m ({|vk6~}xenHG)qtyduw{z~l{s{y{si|hobp[N@~ r@na&s u}{xw cn3ow~u?m{D@}s~szzqqzs}}w_oG~}xemHGox~u?n{ ~}wfmG( % $ %d ;zu1t&A"Ω̵i&L̔+@~tvqazp@ubw&8@SJZu\ek pkfY8@,F):J\^GZgmn|~~rNvƯri_z{wow{vy}psV1}nso(>}>ptlN[XKH[ͨ>- "?4'::''::',Ah"ttLR AS1 Sc1JֶgLXpjZ@  =PBBPOA AOgŬ\]W»[Z3)Sff@_±RD=̹|ͻMV˹$QG̟^ͫw_BG.O`IΤwϓRϺTEDjX 3""7<"ߊmQ1@@ryt8spvu:@rfqvu:d@r_F/D@>L6L! @+Ohhhh[N@c@92;@1  y,((,mm<}nik<ytgn(Bnlmva2gWTP Q~awez!uP!Eu :PBBPNBG=_!!@1@Z*y@u@_@M_HEQJiQwrSrNG2JtA(@w\EQx]nrTrN:BNcTX.E!]^ggTW-|cQ f P+((+ll>vII<5 YaqT;Qvy{Qŷ`bZ Y`qT;Rwz{Q9RIPP(*/inW|ϊL/b\04]O__@P( e,l,|} v)eiyz ) v??4 For^{g=Zi *>薚=v*09H3 Fos^{f=ZPi E(J-I4i^xz xd 623~**)(!= xetpqRtJ͉yiiylHXzdipsl_~UGJhsxyW9Yӿwyk]]s}zw~{mh7k>Yi{ ztdYgrn|oM򹓝gptx*kSk*kl1wGb_]aTfvst+*r\zheN;h_hg_@_hh_ilu~~$rfP|KEUfav,ɼuaaP@d XvvT@A!!KTy  ~@7뀙v~6 D  T4[ *<씒>? DB(DD(BzD)ANZȼxȼXN=v :jTRR;;PPQ2<;5 ,$()MU]()++\TMqqz΂34ypm1 .oQke^ 'uv& ^ek7|epex#B9o=9B]:#/ݠp"\&"iRexp hB RXD@ _* pX@RpchE:dM+A * [ $0bwqf]]]U9pttp.ptqtoqJN JAN AJN lL6HpAOYKI++srs I0"/rIHqqIHrv;(hqjuqiF ﷰg(7]F$ g)XP p'7)28]8j*%jjjAo]" -]" -]" .\#<]i|i|i|j|666Fٯ6UaZg<xgw;A A@ !A@!!@A! @9ŵwvmQuLflD^A94wHMZXaǂݏ,!|) *) )* )* ** )* *) *) )[OCPZ[P55ZPCO[[PP[(ǻ .S"0@:M`edeSO[/:~~|yw{ >g7.iczdfptð+&4R l^vQBR{xxgd~y</Rc4jc'^d K4T+TDqT1 aa 1qӌ $ӊ4FlGuj/>cvYXwrlO[MOO[Olr}twXPYv@c>kPS/k_`bjpN1kI|  FkuU)4S'-{:d@G &zzEwvlmulchr]t bFs^[XV[ vN;mЋD1 g%/O,kjF?j}yykD D'wsxx tD D7U 1 t_>hjthhjbgSgT.  T譁bjh>n_KD;D h/4+| ZsuS&yprxoh nrR/Eoqwn썍c@ ";;dxpXBB}tq۽w Tdmlsur|jto tt ttDtE [ S)\<D 4x / m  8{uNvQ*33Q~Fu{uv+NR-XvD ^ vXRX/ m *6xllsvr}jXm 9 )[=)R~[~w~5-!i5 D "~v_V=)[D Xwauqu f!D! }qquur|jto tt ttD ttDtì|r6Z<:S vg$gJAv<ֽYi}=af44 )x5Mk4444+   T T T  {{{tT aT TF7  Tr J tTsR@6{@),\,)@əEQZT aIIs~xxx{?+)])+@8s~v T@P Tx { T Ti P TTTTT//TTTlvT T T!5  s^vt 4~44 }}{ptrmg}e}Mpvwyۏ P Xtj\b'djгg[L״( ¯#wmݿbtG(r|kj>Slst =Sls_tiqnv„Ņ3I`QnN^DyagTQ3I`nȜn;((5;!!6ryqhn}.d9=k%)}|||{zvvuyyvvx}̖ҹ֐acrppxswzn}{wvvӍ⟳͂pTlZxeyR{0o|WbeVHquO z|n*)j4_SnNe]_\]“†gwkrmnnny{ʼnZlvTdp@JI4X^xԉ@jwvw@~ny yorpmue{`nYnpr@^rss~~xvvyv}y@uwzD8{{|z|{}{x}~yz~~} ; $ˉˬ7y88Siˎ; D8hLp` d|jK='t<  jmP P Z-mm  me f44-4LLmxzzMMzzV``V43 -ժLL\UI (fc}sm- -yisnK8 A*, gtx^L p&{'%%{pVJ9$5EE$ݑͥ}r:CW*[_?P`X=}[Abo/ kk(22I2(UJU2kd +Ԁ GX ] gZ X ] g44 G4 t TTTipE77EV@p1 U_xo H 6 f  I{ _gg_n 7bn 7b$ Xrzspps^?``^ $ _`bZ[z[;Z$ &jWWj&[@"UzUU$ XrzsppskG+P Tv@T K xILLIILLIx^ mK+ tttt΄PHt ZVt ˻WLqqrHrqqr- hnnu~t t˻WL@mA ˻WL.t JMs^\tlji!) tIK^0tH!wwxt^B<``uft`WU4 x tttt* ɽYM$ ɽYM ɽYMwwx?)^cj]Dces ҳxk.a ɽYM$ 18X:b}}} FhXa"! D( }}}b81mo9ttʓ 0 %nllb !+fzx!p|/7chhk+^[THP}.}{{MYɷ7o_qccy4{H]ȣǦɽYM|%npzdcZ}!DR߼ \Zjћ|0!߼XEdkdNYTMNX 0PcXR}6~YVWt   S kIJX%Ba8k#E b>[=:-  Yvk2 OT\0OUƀԫafob~hSwk9&&FD[ _Jͽ "QQO;2x) +?q$@8q+*;u~-%xxxquutgfh%'E̹VL*v˺VM`wzTE`ubiqzuppJ_e'%|ŕ}rɾɿdZ,ɻ˾gY%8>4 x [;kttTtTl* MCΫ MC1 ˻WLN͜f´[VmJJ{K/oqwnbces՜ ѵvj+^ d^]  blՔm)xyx^HCii}l\NJp" #kk՜͜k眫 tt: oVtt c7/{{{b zf+!b lln% 0 ǓEt^+jffllɽYM{{}.}PHT/7qͻ]H{4cycq_MYɛǦsjZ\ !}Zcdznp% 0DRɹXNMTYNdkdEXÿ!0WV~Y6R}XcP^vHZt|z( z] }z!~q{yzp~"{}~{=UP? Q={~G 4IHtZ]41YW36ЧubQEd]"( T$7/V,'t 044 '%YT8l 9|2'8  (%XU7l 9|3'940 k@tt++UUttttC<<4444 TTUUttttC++<<44 aJZZZZ44cTSc++TS33ZZ 0gQvOy#DORKPKaXWaaXWaaWWabWWa 45! 54! 54!-..-......-..-..Xcc@cccccc0ɂь8`a@aNdC9sbccc@ccbcX9XE-JF,bH5@Y&nË49HbF8s̷pzSzN{R{< `_`_`_`_9''''pqD-A&aa-D`qX_1`AMtCC%&*)GGbbIc~c͋%)Gc͋cBս_m 3PD33DD33DjKgl:VF_-zMWSRn\nnnn\nZECSSnn\nnӾN+F:g˝VC&&ӋlgZG%%GG%%GG%%GG%%GP8 XP * 6DD6srpsG4Tmmv)t~̩vVJk}ltu(vumm4[ `$O?$d``zw~y8Mva\tiN߶܎`4s~nkA["gwdLaG$lΥэ`v~{ҊꅮK-5%L .U |肙i54_:vxH|Q̋yPBCĻ*O8Qz }y2!v w 2!dx%%uouyf"2E"ciP8+ H>VV> 8PicE0}D8F?:/5mV?_@)*_AUm֡F8~4pw:{hI K6AOR||| 7::-R=6jsnVK {Qr2w..4$<1Unk;HKTC$[EEq;rI/(6F+G-7+`=(c2F]U=PO>Ulx x { T@q] Tgt1 it c* KWWKKW#1bnZyOL/õB+ h'X=-k7yS[rWmK|CO]ew,i@RF˿WKJvf|)}xyk~JJ?X7gf3.x,+.46?JGXjkځLJvl~doJLN*4A@Pbaul~xyJJJww}IIJÐN~LkR{mmaUULEC><;;{mDRs*MSPwms}wy<u|ƌ  Y10 Y 1122X48C1£dzʧr]^NJqZoe~|Z~W43XV32X+1fIHJLh67:gfs˂uncor~EMUUaml|ؚѩʵɩӛlG@/' "vg9~{~iyenaMxx,wMw^Fyl}l 66xtm|cw&LL+dtjiJ4qqߠ˚|O)xOpYpZ,,pWwT,JyIE7wt4vQ^6_4 TT4 P q q bty % %  @tTtL tto tt ttD4 TT 4 t#4 +PPPP]w~PPPP# QPQPPQPQk#4 ]w~PPpp# iP# T /0   x `tT_`b##b`_ yyQ t33 V22VL ' !!yrr11K- /H !!e+TTTrryy!!!!V@;vyuw{{{s{sqvwtzz zm m{`mm  F> v m m m %%WBS qg@\LP{|@)҅%V` BBB %%  @w\h<;v-;ݯ].Sg9GFXVi_d:ftl\mM>U:\!-B o-Bvˌ{bє~8w0R8#0F2SXtegJ]lA9HH8QXi[syxy\HN-fXR22Tt4t9lF9y4d;1?;UҒ/tt<%%< "SKj<5eZ>:$ $$=:Z>ejS m$54444q(f?f?(q***M**wI9(9II9(9I*' wdA467MR*M8=IF[-2 ~ 0XPdow4 4b^hvii!r(u)-vjzfj~qsoqz az qHoCwqs|qjz)(!ivi#o#vi%GT;;;;;;P 0VviWPVgumlwa||q{cYili`dH__·I5)4y)Y>BݮU11V1h8SM$wh#hAQWƇ¹ÐvZ];();;)(<&U11UԡϱB.` eSGtCm$t]$ttR4'4$BL8,L9}x9`Q^fxOoDk3dGԴ"TUa  vsXQF55EE65E<xiUNgs{f<ϖҖ~hr84W{mXx|cqJ_s'*0󍂎iZӵԵYn5U+"C~?ihyvxnnn6 >#A0W9 |xuzlMx|lT(x||xx|T*0(=`hZ6, L86- I86, _ -i1Yn|||jjk8dJ!E+z$99$+!8YisV>crbxy~vz\\\}v{~^ws8~64468w^~ybrc>s3%p[rrcrrkii~kssqrbrIIV*B+$$c+CB~II%%Uaa;U%% 5??H5 ~)ԫ   Tt t ` 5!J Jn J wNk+mTTT11W E VNMDH>>35b d- E. :V22VV22Vd'cU/ ocuovocv?% q|~fFF 0.*ocvnvocv&0q|KTi KTTdhjw{i^u_oYlnus o^iwhY_u{jhwuji>qw[GA?ijkŒ[V(1g=VijNbi6%Qtb(e nzfl4u~d p "v[~}dtVldvtşW4tt }}} "CVt[Rt}~[tvR[Cljh\^a\Qwt\s[Rsjz\oUwQVf[VT[gdk\c`^ebiObt6Qb(Te |TT&&'dq:=2G<LCYRhn@K5 $c{{q{<<{{qz{cc00E3'ҥ}}{PRHLbyz{*Tb#E.ᕖz<_d_:@sgD_^_*dJA Bɴ׵to'W4pwοšvWXM uY1A3g,{ հ yL Z=xsav^|ZZ[k.k/k.hemf$6k+ː]V$Iqo~QNڈ7.;ghhVND<{B3^w/ۍֵ5b LQ*GJW}ϗѝڏy kTUnn~ryj_MlNy|bmmT]bj[X]~-u[_k[TZKNW]dWT]TkYacYUaö1r&>kfbr(ywvE^nw"'hRcl`jObenfQaWT`]Tti\~{&XU3tOZq]s~Q[8qQ]sZq{N\[kP`m]lM_|r(nhd&>lecovDd$H6}z~t1YbSu\qP y,:|`B/ O~TaKJ~Lyy1Vwy:pI>/2ndgaWrsw  =!Y 2R?2"?=. O?U<AD$(-}}}[ׯMgYST**lSmMrWJB`enū)c1&E,u|ѰڡšXMN9* T(T33T&V ]!zltahqrp!s,o"prrgl!| N#l[heeezpK^7Lw} cb* [)F3RtZ>UKLLdllh]rd.^7|}}\".% _qqoy~yGAokzAïwPW ~|ԪAyoqq0[]yZigmpgːt@6)HW\!zktaiqqq s,o!qrqhk!{ N#k[iedezpK^7Kx}p    #` RN{M{ xiwi9#GsE}Tl+{X|V}2h8pihE[&Yr!hgRoq-εߝA UǾԾ*}t~xqi#E3lgc2Fj`\Y=urrqrqs $>tY~\w`rk2FclgglbE3jr`w\~Yu<rqqqrr %tmZR{QsstN]wiggXnϤOTͮmwmwmwŷ v|iI#&bSS!mvvu  D4P 3i-kbUST345IIIyq߬ ) )) 19j4 :P* C3+K}T -M ujmatvhj_|[t>4a@kk[|^4z8qFl;7MtH $v"?-=xGnS-ub7È A wc-Ef7-^DNfrx~58~O  K(JD;;JEYFkT«FYEA# ## #$ ## $R+7TS+V T}y ` $ ## $# ## #[pdIH[<+N  >t:OO  %%%&$'b %%$'#( Gg4(K K4(Gg.S1>P;;>S1. F ڨzz'.<!bV[b-;PP-;b[V!E$@hh ? +YZ< [ ZY+  d 0dA1]ZInBBIZ1dA05K.$$%&T `X +S @gT T B[PP>P[,cs£,P t K: y}j Ky}}yTy} K K[R +X @l  9tk,ccTsNNTck,BP>ƻPn4RT1 T7}y1 T 8 K ' T1 T @ {X @l  o0v@0<;u^'\ =*S<,cXP*"c`[h3\5jj5< UgF19PREij+#hd$єZۯӄhw*K (Y&ZvV^e1.j4E9""оqrQ)`j#KE[|z0Y`7~?g drlf.kg*{WrrZ^mwvl[s njbgnzhylqfSB[< .ShtviKkTpxvnmn`j|kfZ_FnʬҞgn|rRMHh,Irqprg^sAM/)8[PD0nf ivqXѵ+DD yZnbt9#tx 3 us{q[Ƣ᳚s~N\ 0H" H" H" H" 1  VKTT6 64" E#E EP/"@Z<[@E EE#[<:Z TTT@TTx T) 9 __&X.$ Kp_A;__9~2M@nh M* TKMT @nh M(@nh M P M@  @ i @ TT&DNuye }  Vҽ T} ljllR  ~ufH7NuuaauuTAMr\JC+1 7}yy}}yy}K}yy}}y+ , @j vjIIJ# %BzϜԝ̒<LRosxzce%k$ld!|{{tuv\| k~}lr>++6YF$&E{YIv['?Eljo~ (9 0tX @] T +X T] S TgTZ c k~~w~}}}}~~w~&&~}}}}~&&~}}}}~&&~w~~}}}}~w~~k =====&& ==== &&====&&====&&} ""4 0_}2/bw_1*S@ H2spoȫg zz9A{ezp{{hh{zqz@ez@zz'L`FF=1<1#WX ]vvL;3lK@+@LV +< qU]%FO^ePVn`r'sysfX\Rq8dsضsF%KٮJ}3хbslt[`Tvuai4.:e?2%ٰۂ~%~GbRSlg}^`st`an좾]4jމQ@.&%&%&%&% YJ I8/-pR %szw8&%Bpq2zr% !!2.l?A  R჋Ίt,ә$j"u/}s-|ZH8 H.w_puj}$xll`?^ l2BAAq3l۴l8okmYQSBjtvml .ڎ\KHqX @l  )uAp6wYl4~yUѯW?QYm}ptjhFEPx3|(/ŏ45&ϻąfamJ?jԋ<#>n,iIΙJ\DHհ4.4g"]vzuyia=sA|M5#Mo`Ba,l#:PhCt"]уHą3B̖ڒ/qu=hUUv@i/ ::hUyrw>ggjk>pDLUxzxzxzxz[a7MzR?ݙob4~{z+4+4+4+4+ T@   (     ` @{3 @< A P    P P  x 7ޜr8{M11Mז@;NyydmyN!4p<%0d*TKjjT*6Ld0%pb;4NmdylymczN ;j|@118rz;jN mzcmmNT4o;b0dSL6jcjKSd0<oT4N!ymN ]]zϞҞԝxxy5___Yt ~rl3/r5l3/  HrvZjG ?C-T%%\:RR:R_DDDDDDDD?)|8oCA /-$",B5|6-GcKdԛӘ py||u~w'~rb F o    & , @ e s {      - : K U c g l u |   / O V Z ` j o u {  &Dbs~-18>EKOTm  ).7<DQYns%:@Ui{ "',1CUZl~$(-2BHP`gku{ $,2APWZ_drw} +8EOU[binty~ $).38CNY_doz <<C KFKkr =oYB; E#E EP/" @Z<[ E EE#[<:Z@ TTT TTxTBt) P t* i@EXXE+y}}yK . +EXXE P  +  .  '  33 y] hnnh }y ]]]]s4  . \2A y} B  ,  FTk BBa U) y}}yKy}}yTN %  = hnnhhnq F  A [ ]]E }t ""  M - \      1<0 0 +   ff }y f _" - .  hnnh C p  }yT(  - V` C3 }yTy}}yT c  |z S +o + D+ \T2TA  ʆiimdod $@~ Kz&w{yyw}| |}xz{wa&zK $|' [[ !!  oZ S 1  0 [R YWffG ffU ] @g w TH U  3CC3 X K] + > TY  [ RDh  1  TTTG_^X*D4 4D*Y_`tW ! '''e   TT  TT i hh    O  g B 4TT=TT y}7 !x! hD  : ,  JJ 4   F/B NPuc]T! >9U G @V``V}~d3fTw@t(suwN5~w}+}PV  {zg  : T TR ] Ky}  H g TB 4$$G U$$ V``VV` `V  ! _Ib \;COLD|yz|ru{A0%{[k @h hn z|  r  4~~4`_`R`e9C/R&ažҦ4A'")~4 Uff ,u !55! = = T- /T {z GCC8=<<8CGC   VV  z| YY .:t: } &&T O  ' LfeNzyz# u"=1?u՗ ff YY Yff  & /]]1a }. M MY;/a3 :  t@y t gZ !5  \|\?ZEԅc*y^H(ym|[ n U t3 ZZr EQQEEQc '> 0 4 Z V``V  ~   zz3') {z4  +<<<< { .= =  C 9"TM5Ř{~~D;i ffW 4x !x! QE 8 8 8 x  i     tkRE; V``V< A 5 /  RT &    + ,  3    O >  zr^``^?*<씒   @(  S t }    X @] -   }y yrrrryy  ( yy ~w~~     [  tt |z@( Tz| }D}} RD ,l"7o''$ { 1 D     !K z{ 8T(A(A(A mt Kxxtw~ ̍t|~}: @w{tsoyx ~  R1 7 OIIgX!!gXg! fz\J$9:lA ~w]]w~ z  mm))mm)  { G YU 3- t a h N0  K m + )v P  \ t44  < A ,, , ,  T  b  < TA  F  }t.+ݭ { `T33 V @  tk rcrr   @  >  xyots{ SK(   tp  yy :  7 D$$D   nh &T* 5 @$$@! quuqqu;;uq f K< p   QE t ' rrcr 2 T STdJ,]շ49 arwwvyr/ (DB%$AΌ %  `uttu~w ccl qt= hF B 44    V s V   Ez*6z*E! !$DD$    7T  -  R  5 yy C .  @h  <<<<  o7 TT_Ld haahi`ah  /ti V H  ԫԫ  ] Tt . ;; <:Z:  3}|A  P  3C ɽ Nba] 0 $7 o"7l      @      << y}|z  i  z{ RD 3 $$ DR  ip w   EQy 1 0 fM@ jmq  ,4[  @ XtxmihbW_)  RK( t :z{ z} R%  7 tC ( t  z x x !5  x  & %y}  _gg_    *10 ˒ h   `V  m    [  ˋˋˋˋˋ 7ߋ7   K [ L z   - -      Ty  !5  z + &m/ %t~ -   \$"WT * nh ttt v    ##   h33spyrs@  "" x@8 !"""`>N^fin~'(.>N^n~>N^n~ !"""`!@P`gjp ()0@P`p!@P`p\QA0ޕR     v^  %|_<O<01h  pv_]yn2@zZ@55 ZZ@,_@f@ @(@@@- MM- MM@@@ -b   5-8@ D@,*@  m)@@   ' D9>dU*#    R     @ e  %RE    $ k(D'  % %  0$.$P/ /: /K /Q]    ^ U k "y U $ U  a y * <Copyright Dave Gandy 2016. All rights reserved.FontAwesomeFONTLAB:OTFEXPORTVersion 4.7.0 2016Please refer to the Copyright section for the font trademark attribution notices.Fort AwesomeDave Gandyhttp://fontawesome.iohttp://fontawesome.io/license/Copyright Dave Gandy 2016. All rights reserved.FontAwesomeRegularFONTLAB:OTFEXPORTVersion 4.7.0 2016Please refer to the Copyright section for the font trademark attribution notices.Fort AwesomeDave Gandyhttp://fontawesome.iohttp://fontawesome.io/license/PK<\Opnn;assets/lib/bower/font-awesome/fonts/fontawesome-webfont.eotnu[nLPYxϐFontAwesomeRegular$Version 4.7.0 2016FontAwesome PFFTMkGGDEFp OS/22z@X`cmap : gasphglyfMLhead-6hhea $hmtxEy loca\ maxp,8 name㗋ghpostkuːxY_< 3232  '@i33spyrs@  pU]yn2@ zZ@55 zZZ@,_@s@ @(@@@- MM- MM@@@ -`b $ 648""""""@ D@ ,,@  m)@@   ' D9>dY* '    T     @ f %RE    $!k(D'  % %  0%/&p@0 !"""`>N^n~.>N^n~>N^n~ !"""`!@P`p 0@P`p!@P`p\XSB1ݬ        ,,,,,,,,,,,,,tLT$l x T ( dl,4dpH$d,t( !"0# $,$&D'()T**,,-.@./`/00123d4445 556 6\67H78 8`89L9:h:;<>?h?@H@A0ABXBCdCDLDEFG0GHIJ8KLMdN,NNOP`PQ4QR RlS,ST`U0WXZ[@[\<\]^(^_`pb,bddePefg`giLijDk klm@n,oLpqrsxttuD{`||}}~Hl@lH T H`@$\XDTXDP,8d\Hx tXpdxt@ Œ\ ļŸƔ0dʨˀ͔xϰЌ,ш҈ ӌ8,՜`lHش`Tڸ۔@lބ߬lp 4X$l( ` d      ,,8(Xx|T@| !"x##l$$'h(*L,T.L1t1230345t6T7$8 9H::;<<?X@ABCDEHFHGpHHIxJ JKLMN@P@QRSDT ULV`VWXX4XZZ[d[\|]^`aHabcXdetfhghi\jxnp@svwxyz{h|}}\lt4t88LT|| 4xLX(  @lt$xLL HĠT(  ʈˠϔldPՄxpڬTT ވL <H$l4 Pl ,xp,xt d 44,hP 4   4<,,408$8T |!h"$L%0&H'()*0*+,.$.012@234t5$69 ::; ;<(<=4?@ACDFH`HILLLLLLLLLLLLLLLLp7!!!@pp p]!2#!"&463!&54>3!2+@&&&&@+$(($F#+&4&&4&x+#+".4>32".4>32467632DhgZghDDhg-iWDhgZghDDhg-iW&@ (8 2N++NdN+';2N++NdN+'3 8!  #"'#"$&6$ rL46$܏ooo|W%r4L&V|oooܳ%=M%+".'&%&'3!26<.#!";2>767>7#!"&5463!2 %3@m00m@3%    @ :"7..7":6]^B@B^^BB^ $΄+0110+$ (   t1%%1+`B^^B@B^^"'.54632>324 #LoP$$Po>Z$_dC+I@$$@I+"#"'%#"&547&547%62V??V8<8y   b% I))9I  + % %#"'%#"&547&547%62q2ZZ2IzyV)??V8<8)>~>[   2 b% I))9I %#!"&54>3 72 &6 }XX}.GuLlLuG.>mmUmEEm> /?O_o54&+";2654&+";2654&+";264&#!"3!2654&+";2654&+";264&#!"3!2654&+";2654&+";2654&+";267#!"&5463!2&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&^BB^^B@B^@&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&B^^B@B^^/?#!"&5463!2#!"&5463!2#!"&5463!2#!"&5463!2L44LL44LL44LL44LL44LL44LL44LL44L4LL44LL4LL44LL4LL44LL4LL44LL /?O_o#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!28((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(8 (88((88(88((88(88((88(88((88(88((88(88((88(88((88(88((88(88((88/?O_#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!28((88(@(88((88(@(88(@(88((88((88(@(88(@(88((88(@(88((8 (88((88(88((88(88((88(88((88(88((88(88((88y"/&4?62 62,PP&PP,jPn#$"' "/&47 &4?62 62 PP&P&&P&P&P&&P&P#+D++"&=#"&=46;546;232  #"'#"$&6$   @    @  rK56$܏ooo|W@    @   rjK&V|oooܳ0#!"&=463!2  #"'#"$&6$   @ rK56$܏ooo|W@  @ rjK&V|oooܳ)5 $&54762>54&'.7>"&5462zz+i *bkQнQkb* j*LhLLhLzzBm +*i JyhQQhyJ i*+ mJ4LL44LL/?O%+"&=46;2%+"&546;2%+"&546;2+"&546;2+"&546;2`r@@r@@n4&"2#"/+"&/&'#"'&'&547>7&/.=46?67&'&547>3267676;27632Ԗ #H  ,/ 1)  ~'H  (C  ,/ 1)  $H ԖԖm 6%2X  % l2 k r6 [21 ..9Q $ k2 k w3 [20/;Cg+"&546;2+"&546;2+"&546;2!3!2>!'&'!+#!"&5#"&=463!7>3!2!2@@@@@@@`0 o`^BB^`5FN(@(NF5 @@@L%%Ju  @LSyuS@%44%f5#!!!"&5465 7#"' '&/&6762546;2&&??>  LL >  X   &&&AJ A J Wh##!"&5463!2!&'&!"&5!(8((88((`x c`(8`((88(@(8(D 9 8( ,#!"&=46;46;2.  6 $$ @(r^aa@@`(_^aa2NC5.+";26#!26'.#!"3!"547>3!";26/.#!2W  .@   @.$S   S$@   9I   I6>  >%=$4&"2$4&"2#!"&5463!2?!2"'&763!463!2!2&4&&4&&4&&48(@(88(ч::(8@6@*&&*4&&4&&4&&4& (88(@(8888)@)'&&@$0"'&76;46;232  >& $$ `  (r^aa` @`2(^aa$0++"&5#"&54762  >& $$ ^ ?  @(r^aa` ? (^aa #!.'!!!%#!"&547>3!2<<<_@`&& 5@5 @  &&>=(""='#"'&5476.  6 $$   ! (r^aaJ %%(_^aa3#!"'&?&#"3267672#"$&6$3276&@*hQQhwI mʬzzk)'@&('QнQh_   z8zoe$G!"$'"&5463!23267676;2#!"&4?&#"+"&=!2762@hk4&&&GaF * &@&ɆF * Ak4&nf&&&4BHrd@&&4rd  Moe&/?O_o+"&=46;25+"&=46;25+"&=46;2#!"&=463!25#!"&=463!25#!"&=463!24&#!"3!26#!"&5463!2 @  @  @  @  @  @  @    @    @    @   ^B@B^^BB^`@  @ @  @ @  @ @  @ @  @ @  @ 3@  MB^^B@B^^!54&"#!"&546;54 32@Ԗ@8(@(88( p (8jj(88(@(88@7+"&5&5462#".#"#"&5476763232>32@@ @ @KjKך=}\I&:k~&26]S &H&  &H5KKut,4, & x:;*4*&K#+"&546;227654$ >3546;2+"&="&/&546$ <X@@Gv"DװD"vG@@X<4L41!Sk @ G< _bb_ 4.54632&4&&M4&UF &""""& F&M&&M&%/B/%G-Ik"'!"&5463!62#"&54>4.54632#"&54767>4&'&'&54632#"&547>7676'&'.'&54632&4&&M4&UF &""""& FU &'8JSSJ8'&  &'.${{$.'& &M&&M&%/B/%7;&'66'&;4[&$ [2[ $&[  #/37#5#5!#5!!!!!!!#5!#5!5##!35!!! #'+/37;?3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3???? ^>>~??????~??~??^??^^? ^??4&"2#"'.5463!2KjKKjv%'45%5&5L45&% jKKjK@5%%%%54L5&6'k54&"2#"'.5463!2#"&'654'.#32KjKKjv%'45%5&5L45&%%'4$.%%5&55&% jKKjK@5%%%%54L5&6'45%%%54'&55&6' yTdt#!"&'&74676&7>7>76&7>7>76&7>7>76&7>7>63!2#!"3!2676'3!26?6&#!"3!26?6&#!"g(sAeM ,*$/ !'& JP$G] x6,& `   h `   "9Hv@WkNC<.  &k& ( "$p" . #u&#  %!' pJvwEF#  @   @  2#"' #"'.546763!''!0#GG$/!''! 8""8  X! 8" "8  <)!!#"&=!4&"27+#!"&=#"&546;463!232(8&4&&4 8(@(8 qO@8((`(@Oq8(&4&&4&@` (88( Oq (8(`(q!)2"&42#!"&546;7>3!2  Ijjjj3e55e3gr`Ijjjj1GG1rP2327&7>7;"&#"4?2>54.'%3"&#"#ժ!9&WB03& K5!)V?@L' >R>e;&L::%P>vO 'h N_":- &+# : ' +a%3 4'.#"32>54.#"7>7><5'./6$3232#"&#"+JBx)EB_I:I*CRzb3:dtB2P$ $5.3bZF|\8!-T>5Fu\,,jn OrB,7676'5.'732>7"#"&#&#"OA zj=N!}:0e%  y + tD3~U#B4 # g  '2 %/!: T bRU,7}%2"/&6;#"&?62+326323!2>?23&'.'.#"&"$#"#&=>764=464.'&#"&'!~:~!PP!~:~!P6 ,,$$% *'  c2N  ($"LA23Yl !x!*%%%% pP,T NE Q7^oH!+( 3  *Ueeu  wga32632$?23&'.5&'&#"&"5$#"#&=>7>4&54&54>.'&#"&'2#".465!#".'&47>32!4&4>Q6 ,,Faw!*' =~Pl*  ($"LA23Yl  )!* <7@@7<  <7@@7<  pP,T MF Q747ƢHoH!+( 3  tJHQ6  wh',686,'$##$',686,'$##$/?%#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2&&&&&&&&&&&&&&&&&&&&f&&&&f&&&&f&&&&/?%#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2&&&&&&&&&&&&&&&&&&&&f&&&&f&&&&f&&&&/?%#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2&&&&&&&&&&&&&&&&&&&&f&&&&f&&&&f&&&&/?%#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2&&&&&&&&&&&&&&&&&&&&f&&&&f&&&&f&&&&/?O_o%+"&=46;2+"&=46;2+"&=46;2#!"&=463!2+"&=46;2#!"&=463!2#!"&=463!2#!"&=463!2        @     @   @   @   s  s    s    s  s  /?O#"'&47632#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2     @     @   @  @          s  s  s  /?O#"&54632 #!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2`      @     @   @  @     @   s  s  s  #"'#!"&5463!2632' mw@www '*wwww."&462!5 !"3!2654&#!"&5463!2pppp@  @ ^BB^^B@B^ppp@@  @    @B^^BB^^k%!7'34#"3276' !7632k[[v  6`%`$65&%[[k `5%&&'4&"2"&'&54 Ԗ!?H?!,,ԖԖmF!&&!Fm,%" $$ ^aa`@^aa-4'.'&"26% 547>7>2"KjKXQqYn 243nYqQ$!+!77!+!$5KK,ԑ ]""]ً 9>H7'3&7#!"&5463!2'&#!"3!26=4?6 !762xtt`  ^Qwww@?6 1B^^B@B^ @(` `\\\P`tt8`  ^Ͼww@w 1^BB^^B~ @` \ \P+Z#!"&5463!12+"3!26=47676#"'&=# #"'.54>;547632www M8 pB^^B@B^ 'sw- 9*##;Noj' #ww@w "^BB^^B  *  "g`81T`PSA:'*4/D#!"&5463!2#"'&#!"3!26=4?632"'&4?62 62www@?6 1 B^^B@B^ @ BRnBBn^ww@w 1 ^BB^^B @ BnnBC"&=!32"'&46;!"'&4762!#"&4762+!54624&&4&&44&&4&&44&&44&&4&&44&&6'&'+"&546;267: &&&& s @  Z&&&&Z +6'&''&'+"&546;267667: : &&&&  s @  :  Z&&&&Z  : z6'&''&47667S: : s @  : 4 : | &546h!!0a   $#!"&5463!2#!"&5463!2&&&&&&&&@&&&&&&&&#!"&5463!2&&&&@&&&&&54646&5- : s  :  :4:  +&5464646;2+"&5&5-  &&&& : s  :  : &&&& :  &54646;2+"&5- &&&& s  : &&&&  62#!"&!"&5463!24 @ &&&&-:&&&& "'&476244444Zf "/&47 &4?62S44444#/54&#!4&+"!"3!;265!26 $$ &&&&&&&&@^aa@&&&&&&&&+^aa54&#!"3!26 $$ &&&&@^aa@&&&&+^aa+74/7654/&#"'&#"32?32?6 $$ }ZZZZ^aaZZZZ^aa#4/&"'&"327> $$ [4h4[j^aa"ZiZJ^aa:F%54&+";264.#"32767632;265467>$ $$ oW  5!"40K(0?i+! ":^aaXRd D4!&.uC$=1/J=^aa.:%54&+4&#!";#"3!2654&+";26 $$ ```^aa^aa/_#"&=46;.'+"&=32+546;2>++"&=.'#"&=46;>7546;232m&&m l&&l m&&m l&&ls&%&&%&&%&&%&&&l m&&m l&&l m&&m ,&%&&%&&%&&%&#/;"/"/&4?'&4?627626.  6 $$ I     ͒(r^aaɒ    (_^aa , "'&4?6262.  6 $$ Z4f44fz(r^aaZ&4ff4(_^aa "4'32>&#" $&6$  WoɒV󇥔 zzz8YW˼[?zz:zz@5K #!#"'&547632!2A4@%&&K%54'u%%&54&K&&4A5K$l$L%%%54'&&J&j&K5K #"/&47!"&=463!&4?632%u'43'K&&%@4AA4&&K&45&%@6%u%%K&j&%K55K&$l$K&&u#5K@!#"'+"&5"/&547632K%K&56$K55K$l$K&&#76%%53'K&&%@4AA4&&K&45&%%u'5K"#"'&54?63246;2632K%u'45%u&&J'45%&L44L&%54'K%5%t%%$65&K%%4LL4@&%%K',"&5#"#"'.'547!34624&bqb>#  5&44& 6Uue7D#  "dž&/#!"&546262"/"/&47'&463!2 &@&&4L  r&4  r L&& 4&&&L rI@& r  L4&& s/"/"/&47'&463!2#!"&546262&4  r L&& &@&&4L  r@@& r  L4&& 4&&&L r##!+"&5!"&=463!46;2!28(`8((8`(88(8((8(8 (8`(88(8((8(88(`8#!"&=463!28(@(88((8 (88((88z5'%+"&5&/&67-.?>46;2%6.@g.L44L.g@. .@g. L44L .g@.g.n.4LL43.n.gg.n.34LL4͙.n.g -  $54&+";264'&+";26/a^    ^aa fm  @ J%55!;263'&#"$4&#"32+#!"&5#"&5463!"&46327632#!2$$8~+(888(+}(`8((8`]]k==k]]8,8e8P88P8`(88(@MMN4&#"327>76$32#"'.#"#"&'.54>54&'&54>7>7>32&z&^&./+>+)>J> Wm7' '"''? &4&c&^|h_bml/J@L@#* #M6:D 35sҟw$ '% ' \t3#!"&=463!2'.54>54''  @ 1O``O1CZZ71O``O1BZZ7@  @ N]SHH[3`)TtbN]SHH[3^)Tt!1&' 547 $4&#"2654632 '&476 ==嘅}(zVl''ٌ@uhyyhu9(}VzD##D# =CU%7.5474&#"2654632%#"'&547.'&476!27632#76$7&'7+NWb=嘧}(zVj\i1  z,X Y[6 $!%'FuJiys?_9ɍ?kyhun(}Vz YF  KA؉La  02-F"@Qsp@_!3%54&+";264'&+";26#!"&'&7>2    #%;"";%#`,@L 5 `   `  L`4LH` `   a 5 L@ #37;?Os!!!!%!!!!%!!!!!!!!%!!4&+";26!!%!!!!74&+";26%#!"&546;546;2!546;232 `@ `@ @@ @ @  @  @  @  @ L44LL4^B@B^^B@B^4L  @@@@    @@   @@    M4LL44L`B^^B``B^^B`L7q.+"&=46;2#"&=".'673!54632#"&=!"+"&=46;2>767>3!546327>7&54>$32dFK1A  0) L.٫C58.H(Ye#3C $=463!22>=463!2#!"&5463!2#!"&5463!2H&&/7#"&463!2!2LhLLhLhLLh! &&&&& &4hLLhLLhLLhL%z< 0&4&& )17&4& &&#!"&5463!2!2\@\\@\\@\\\\ W*#!"&547>3!2!"4&5463!2!2W+B"5P+B@"5^=\@\ \H#t3G#3G:_Ht\\ @+32"'&46;#"&4762&&4&&44&&44&&4@"&=!"'&4762!54624&&44&&44&&4&& !!!3!!0@67&#".'&'#"'#"'32>54'6#!"&5463!28ADAE=\W{O[/5dI kDtpČe1?*w@www (M& B{Wta28r=Ku?RZ^GwT -@www$2+37#546375&#"#3!"&5463ww/Dz?swww@wS88 ww#'.>4&#"26546326"&462!5!&  !5!!=!!%#!"&5463!2B^8(Ԗ>@|K55KK55K^B(8ԖԖ€>v5KK55KKHG4&"&#"2654'32#".'#"'#"&54$327.54632@pp)*Pppp)*Pb '"+`N*(a;2̓c`." b PTY9ppP*)pppP*)b ".`(*Nͣ2ͣ`+"' b MRZB4&"24&"264&"26#"/+"&/&'#"'&547>7&/.=46?67&'&547>3267676;27632#"&'"'#"'&547&'&=4767&547>32626?2#"&'"'#"'&547&'&=4767&547>32626?2ԖLhLKjKLhLKjK "8w s%(  ")v  >  "8x s"+  ")v  <  3zLLz3 3>8L3)x3 3zLLz3 3>8L3)x3 ԖԖ4LL45KK54LL45KK #)0C wZ l/ Y N,& #)0C vZl. Y L0"qG^^Gqq$ ]G)FqqG^^Gqq$ ]G)Fq%O#"'#"&'&4>7>7.546$ '&'&'# '32$7>54'VZ|$2 $ |E~E<| $ 2$|ZV:(t}X(  &%(Hw쉉xH(%& (XZT\MKG<m$4&"24&#!4654&#+32;254'>4'654&'>7+"&'&#!"&5463!6767>763232&4&&4N2`@`%)7&,$)' %/0Ӄy#5 +1 &<$]`{t5KK5$e:1&+'3TF0h4&&4&3M:;b^v+D2 5#$IIJ 2E=\$YJ!$MCeM-+(K55KK5y*%Au]c>q4&"24&'>54'654&'654&+"+322654&5!267+#"'.'&'&'!"&5463!27>;2&4&&4+ 5#bW0/% ')$,&7)%`@``2Nh0##T3'"( 0;e$5KK5 tip<& 1&4&&4&#\=E2&%IURI$#5 2D+v^b;:M2gc]vDEA%!bSV2MK55K(,,MeCM$!I@#"&547&547%6@?V8 b% I)94.""'." 67"'.54632>32+C`\hxeH>Hexh\`C+ED4 #LoP$$Po>Q|I.3MCCM3.I|Q/Z$_dC+I@$$@I+ (@%#!"&5463!2#!"3!:"&5!"&5463!462 ww@  B^^B  4&@&&&4 `  ww   ^B@B^ 24& && &%573#7.";2634&#"35#347>32#!"&5463!2FtIG9;HIxI<,tԩw@wwwz4DD43EEueB&#1s@www .4&"26#!+"'!"&5463"&463!2#2&S3 Ll&c4LL44LL4c@& &{LhLLhL'?#!"&5463!2#!"3!26546;2"/"/&47'&463!2www@B^^B@B^@&4t  r &&`ww@w@^BB^^B@R&t r  4&&@"&5!"&5463!462 #!"&54&>3!2654&#!*.54&>3!24&@&&&4 sw  @B^^B  @w4& && &3@w   ^BB^    I&5!%5!>732#!"&=4632654&'&'.=463!5463!2!2JJSq*5&=CKuuKC=&5*q͍S8( ^B@B^ (8`N`Ѣ΀GtO6)"M36J[E@@E[J63M")6OtG(8`B^^B`8 ',26'&'&76'6'&6&'&6'&4#"7&64 654'.'&'.63226767.547&7662>76#!"&5463!2  /[  . =XĚ4,+"  * +, 1JH'5G:: #L5+@=&#w@wwwP.1GE,ԧ4 4+ ; /5cFO:>JJ>:O9W5$@(b 4 @www'?$4&"2$4&"2#!"&5463!3!267!2#!#!"&5!"'&762&4&&4&&4&&48(@(88(c==c(8*&&*6&4&&4&&4&&4& (88(@(88HH88`(@&&('@1c4&'.54654'&#"#"&#"32632327>7#"&#"#"&54654&54>76763232632   N<;+gC8A`1a99gw|98aIe$IVNz<:LQJ  ,-[% 061I()W,$-7,oIX()oζA;=N0 eTZ  (O#".'&'&'&'.54767>3232>32 e^\4?P bMO0# 382W# & 9C9 Lĉ" 82<*9FF(W283 #0OMb P?4\^e FF9*<28 "L 9C9 & #!"3!2654&#!"&5463!2`B^^B@B^^ީwww@w^BB^^B@B^ww@w#!72#"' #"'.546763YY !''!0#GG$/!''!&UUjZ 8""8  X! 8" "8 GW4.'.#"#".'.'.54>54.'.#"32676#!"&5463!2 1.- +$)  c8 )1)  05.D <90)$9w@wwwW  )1) 7c  )$+ -.1 9$)0< D.59@www,T1# '327.'327.=.547&54632676TC_LҬ#+i!+*pDNBN,y[`m`%i]hbEm}a u&,SXK &$f9s? _#"!#!#!54632V<%'ЭHH (ںT\dksz &54654'>54'6'&&"."&'./"?'&546'&6'&6'&6'&6'&74"727&6/a49[aA)O%-j'&]]5r-%O)@a[9' 0BA; + >HCU  #  $  2  AC: oM=a-6OUwW[q ( - q[WwUP6$C +) (  8&/ &eMa  & $      %+"&54&"32#!"&5463!54 &@&Ԗ`(88(@(88(r&&jj8((88(@(8#'+2#!"&5463"!54&#265!375!35!B^^BB^^B   `^B@B^^BB^  ` !="&462+"&'&'.=476;+"&'&$'.=476; pppp$!$qr % }#ߺppp!E$ rqܢ# % ֻ!)?"&462"&4624&#!"3!26!.#!"#!"&547>3!2/B//B//B//B @   2^B@B^\77\aB//B//B//B/@    ~B^^B@2^5BB52.42##%&'.67#"&=463! 25KK5L4_u:B&1/&.- zB^^B4LvyKjK4L[!^k'!A3;):2*547&5462;U gIv0ZZ0L4@Ԗ@4L2RX='8P8'=XR U;Ig0,3lb??bl34LjjL4*\(88(\}I/#"/'&/'&?'&'&?'&76?'&7676767676` (5 )0 ) *) 0) 5(  (5 )0 )))) 0) 5( *) 0) 5(  )5 )0 )**) 0) 5)  )5 )0 )*5h$4&"24&#!4>54&#"+323254'>4'654&'!267+#"'&#!"&5463!2>767>32!2&4&&4N2$YGB (HGEG HQ#5K4Li!<;5KK5 A# ("/?&}vh4&&4&3M95S+C=,@QQ9@@IJ 2E=L5i>9eME;K55K J7R>@#zD<5=q%3#".'&'&'&'.#"!"3!32>$4&"2#!"#"&?&547&'#"&5463!&546323!2` #A<(H(GY$2NL4K5#aWTƾh&4&&4K5;=!ihv}&?/"( #A  5K2*! Q@.'!&=C+S59M34L=E2 JI UR@@&4&&4&5K;ELf9>igR7J K5h4&"24#"."&#"4&#"".#"!54>7#!"&54.'&'.5463246326326&4&&4IJ 2E=L43M95S+C=,@QQ9@@E;K55K J7R>@#zD9eMZ4&&4&<#5K4LN2$YGB (HGEG HV;5KK5 A# ("/?&}vhi!<4<p4.=!32>332653272673264&"2/#"'#"&5#"&54>767>5463!2@@2*! Q@.'!&=C+S59M34L.9E2 JI UR&4&&4&Lf6Aig6Jy#@>R7J K55K;E@TƾH #A<(H(GY$2NL4K#5#a=4&&4&D=ihv}&?/"( #A  5KK5;+54&#!764/&"2?64/!26 $$ & [6[[j6[&^aa@&4[[6[[6&+^aa+4/&"!"3!277$ $$ [6[ &&[6j[ ^aae6[j[6&&4[j[^aa+4''&"2?;2652?$ $$ [6[[6&&4[^aaf6j[[6[ &&[^aa+4/&"4&+"'&"2? $$ [6&&4[j[6[j^aad6[&& [6[[j^aa   $2>767676&67>?&'4&'.'.'."#&6'&6&'3.'.&'&'&&'&6'&>567>#7>7636''&'&&'.'"6&'6'..'/"&'&76.'7>767&.'"76.7"7"#76'&'.'2#22676767765'4.6326&'.'&'"'>7>&&'.54>'>7>67&'&#674&7767>&/45'.67>76'27".#6'>776'>7647>?6#76'6&'676'&67.'&'6.'.#&'.&6'&.5/a^D&"      4   $!   #          .0"Y +  !       $     "  +       Α      ^aa                        P   ' -( # * $  "  !     * !   (         $      2 ~/$4&"2 #"/&547#"32>32&4&&4V%54'j&&'/덹:,{ &4&&4&V%%l$65&b'Cr! " k[G +;%!5!!5!!5!#!"&5463!2#!"&5463!2#!"&5463!2&&&&&&&&&&&&@&&&&&&&&&&&&{#"'&5&763!2{' **)*)'/!5!#!"&5!3!26=#!5!463!5463!2!2^B@B^&@&`^B`8(@(8`B^ B^^B&&B^(88(^G 76#!"'&? #!"&5476 #"'&5463!2 '&763!2#"'c)'&@**@&('c (&*cc*&' *@&('c'(&*cc*&('c'(&@*19AS[#"&532327#!"&54>322>32"&462 &6 +&'654'32>32"&462QgRp|Kx;CByy 6Fe= BPPB =eF6 ԖV>!pRgQBC;xK|Ԗ{QNa*+%xx5eud_C(+5++5+(C_due2ԖԖ>NQ{u%+*jԖԖp!Ci4/&#"#".'32?64/&#"327.546326#"/&547'#"/&4?632632(* 8( !)(A(')* 8( !USxySSXXVzxTTUSxySSXXVzxT@(  (8 *(('( (8 SSUSx{VXXTTSSUSx{VXXT#!"5467&5432632t,Ԟ;F`j)6,>jK?s !%#!"&7#"&463!2+!'5#8EjjE8@&&&&@XYY&4&&4&qDS%q%N\jx2"&4#"'#"'&7>76326?'&'#"'.'&676326326&'&#"32>'&#"3254?''74&&4&l NnbSVZ bRSD zz DSRb)+USbn \.2Q\dJ'.2Q\dJ.Q2.'Jd\Q2.'Jd`!O` ` &4&&4r$#@B10M5TNT{L5T II T5L;l'OT4M01B@#$*3;$*3;;3*$;3*$: $/ @@Qq`@"%3<2#!"&5!"&5467>3!263! !!#!!46!#!(88(@(8(8(`((8D<++<8(`(8(`8(@(88( 8((`(8((<`(8(``(8||?%#"'&54632#"'&#"32654'&#"#"'&54632|udqܟs] = OfjL?R@T?"& > f?rRX=Edudsq = _MjiL?T@R?E& f > =XRr?b!1E)!34&'.##!"&5#3463!24&+";26#!"&5463!2 08((88(@(8  8((88((`(1  `(88((88(@  `(88(@(8(`#!"&5463!2w@www`@www/%#!"&=463!2#!"&=463!2#!"&=463!2&&&&&&&&&&&&&&&&&&&&&&&&@'7G$"&462"&462#!"&=463!2"&462#!"&=463!2#!"&=463!2ppppppp @   ppp @    @   Рpppppp  ppp    <L\l|#"'732654'>75"##5!!&54>54&#"'>3235#!"&=463!2!5346=#'73#!"&=463!2#!"&=463!2}mQjB919+i1$AjM_3</BB/.#U_:IdDRE @  k*Gj @   @   TP\BX-@8 C)5Xs J@$3T4+,:;39SG2S.7<  vcc)) %Ll}    5e2#!"&=463%&'&5476!2/&'&#"!#"/&'&=4'&?5732767654'&@02uBo  T25XzrDCBBEh:%)0%HPIP{rQ9f#-+>;I@KM-/Q"@@@#-bZ $&P{<8[;:XICC>.'5oe80#.0(  l0&%,"J&9%$<=DTIcs&/6323276727#"327676767654./&'&'737#"'&'&'&54'&54&#!"3!260% <4"VRt8<@< -#=XYhW8+0$"+dTLx-'I&JKkmuw<=V@!X@ v '|N;!/!$8:IObV;C#V  &   ( mL.A:9 !./KLwPM$@@ /?O_o%54&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!26#!"&5463!2@@@@@@@@@^BB^^B@B^NB^^B@B^^#+3 '$"/&4762%/?/?/?/?%k*66bbbb|<<<bbbbbbbb%k66Ƒbbb<<<<^bbbbbb@M$4&"2!#"4&"2&#"&5!"&5#".54634&>?>;5463!2LhLLh LhLLhL! 'ԖԖ@' !&  ?&&LhLLhL hLLhL jjjj &@6/" &&J#"'676732>54.#"7>76'&54632#"&7>54&#"&54$ ok; -j=yhwi[+PM 3ѩk=J%62>VcaaQ^ ]G"'9r~:`}Ch 0=Z٤W=#uY2BrUI1^Fk[|aL2#!67673254.#"67676'&54632#"&7>54&#"#"&5463ww+U ,iXբW<"uW1AqSH1bdww'74'!3#"&46327&#"326%35#5##33#!"&5463!20U6cc\=hlࠥYmmnnnnw@wwww&46#Ȏ;edwnnnnn@www ]#/#"$&6$3 &#"32>7!5!%##5#5353Еttu{zz{SZC` cot*tq||.EXN#?? ,<!5##673#$".4>2"&5!#2!46#!"&5463!2rM* *M~~M**M~~M*jjj&&&&`P%挐|NN||NN|*jjjj@&&&&@ "'&463!2@4@&Z4@4&@ #!"&4762&&4Z4&&4@@ "'&4762&4@4&@&4&@ "&5462@@4&&44@&&@ 3!!%!!26#!"&5463!2`m` ^BB^^B@B^  `@B^^BB^^@ "'&463!2#!"&4762@4@&&&&44@4&Z4&&4@ "'&463!2@4@&4@4&@ #!"&4762&&4Z4&&4@:#!"&5;2>76%6+".'&$'.5463!2^B@B^,9j9Gv33vG9H9+bI\ A+=66=+A [">nSMA_:B^^B1&c*/11/*{'VO3@/$$/@*?Nh^l+!+"&5462!4&#"!/!#>32]_gTRdgdQV?U I*Gg?!2IbbIJaaiwE3300 084#"$'&6?6332>4.#"#!"&54766$32z䜬m IwhQQhbF*@&('kz   _hQнQGB'(&*eoz(q!#"'&547"'#"'&54>7632&4762.547>32#".'632%k'45%&+~(  (h  &  \(  (  &  ~+54'k%5%l%%l$65+~  &  (  (\  &  h(  (~+%'!)19K4&"24&"26.676&$4&"24&"24&"2#!"'&46$ KjKKj KjKKje2.e<^P,bKjKKjKjKKj KjKKj##LlLKjKKjK jKKjK~-M7>7&54$ LhяW.{+9E=cQdFK1A  0) pJ2`[Q?l&٫C58.H(Y':d 6?32$64&$ #"'#"&'&4>7>7.546'&'&'# '32$7>54'Yj`a#",5NK ~EVZ|$2 $ |: $ 2$|ZV:(t}hfR88T h̲X(  &%(Hw(%& (XZT\MKG{x|!#"'.7#"'&7>3!2%632u  j H{(e 9 1bU#!"&546;5!32#!"&546;5!32#!"&546;5463!5#"&5463!2+!2328((88(``(88((88(``(88((88(`L4`(88(@(88(`4L`(8 (88(@(88((88(@(88((88(@(84L8(@(88((8L48OY"&546226562#"'.#"#"'.'."#"'.'.#"#"&5476$32&"5462И&4&NdN!>! 1X:Dx+  +ww+  +xD:X1 -U !*,*&4&hh&&2NN2D &  ..J< $$ 767#"&'"&547&547&547.'&54>2l4  2cKEooED ) ) Dg-;</- ?.P^P.? -/<;-gYY  .2 L4H|O--O|HeO , , Oeq1Ls26%%4.2,44,2.4%%62sL1qcqAAq4#!#"'&547632!2#"&=!"&=463!54632  @  `     ` ?`   @  @  !    54&+4&+"#"276#!"5467&5432632   `  _ v,Ԝ;G_j)``    _ ԟ7 ,>jL>54'&";;265326#!"5467&5432632    v,Ԝ;G_j) `   `7 ,>jL>X`$"&462#!"&54>72654&'547 7"2654'54622654'54&'46.' &6 &4&&4&yy %:hD:FppG9Fj 8P8 LhL 8P8 E; Dh:% >4&&4&}yyD~s[4Dd=PppP=d>hh>@jY*(88(*Y4LL4Y*(88(*YDw" A4*[s~>M4&"27 $=.54632>32#"' 65#"&4632632 65.5462&4&&4G9& <#5KK5!!5KK5#< &ܤ9Gpp&4&&4&@>buោؐ&$KjKnjjKjK$&jjb>Ppp %!5!#"&5463!!35463!2+32@\\8(@(8\@@\\@\(88(\@ 34#"&54"3#!"&5!"&5>547&5462;U gI@L4@Ԗ@4L2RX='8P8'=XR U;Ig04LjjL4*\(88(\@"4&+32!#!"&+#!"&5463!2pP@@Pjj@@\@\&0pj \\&-B+"&5.5462265462265462+"&5#"&5463!2G9L44L9G&4&&4&&4&&4&&4&L44L &=d4LL4 d=&&`&&&&`&&&&4LL4  &#3CS#!"&5463!2!&'&!"&5!463!2#!"&52#!"&=4632#!"&=463(8((88((`x c`(8@@@`((88(@(8(D 9 8(`@@@@@/?O_o-=%+"&=46;25+"&=46;2+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2+"&=46;2!!!5463!2#!"&5463!2 @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @ &&&&@  @ @  @  @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @  @  @   `&&&& /?O_o%+"&=46;25+"&=46;2+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2+"&=46;2!!#!"&=!!5463!24&+"#54&+";26=3;26%#!"&5463!463!2!2 @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @ 8(@(8 @  @  @  @  @ &&&@8((8@&@  @ @  @  @  @ @  @ @  @ @  @ @  @ @  @ @  @  @  @  (88(  @  ``   `` -&&& (88(&@<c$4&"2!#4&"254&+54&+"#";;26=326+"&5!"&5#"&46346?>;463!2KjKKjKjKKj&ԖԖ&&@&&KjKKjK jKKjK .&jjjj&4&@@&&#'1?I54&+54&+"#";;26=326!5!#"&5463!!35463!2+32 \\8(@(8\ \\@\(88(\: #32+53##'53535'575#5#5733#5;2+3@E&&`@@` `@@`&&E%@`@ @ @      @ 0 @!3!57#"&5'7!7!K5@   @5K@@@ #3%4&+"!4&+";265!;26#!"&5463!2&&&&&&&&w@www&&@&&&&@&&@www#354&#!4&+"!"3!;265!26#!"&5463!2&&&&&@&&@&w@www@&@&&&&&&@&:@www-M3)$"'&4762 "'&4762 s 2  .   2 w 2  .   2 w 2    2  ww  2    2  ww M3)"/&47 &4?62"/&47 &4?62S .  2 w 2   .  2 w 2  M . 2    2 .  . 2    2 .M3S)$"' "/&4762"' "/&47623 2  ww  2    2  ww  2    2 w 2   .v 2 w 2   .M3s)"'&4?62 62"'&4?62 623 .  . 2    2 .  . 2    2 .   2 w 2v .   2 w 2-Ms3 "'&4762s w 2  .   2 ww  2    2 MS3"/&47 &4?62S .  2 w 2  M . 2    2 .M 3S"' "/&47623 2  ww  2   m 2 w 2   .M-3s"'&4?62 623 .  . 2    2- .   2 w 2/4&#!"3!26#!#!"&54>5!"&5463!2  @ ^B && B^^B@B^ @  MB^%Q= &&& $$ (r^aa(^aa!C#!"&54>;2+";2#!"&54>;2+";2pPPpQh@&&@j8(PppPPpQh@&&@j8(Pp@PppPhQ&&j (8pPPppPhQ&&j (8p!C+"&=46;26=4&+"&5463!2+"&=46;26=4&+"&5463!2Qh@&&@j8(PppPPpQh@&&@j8(PppPPp@hQ&&j (8pPPppP@hQ&&j (8pPPpp@@ #+3;G$#"&5462"&462"&462#"&462"&462"&462"&462#"&54632K54LKj=KjKKjKjKKjL45KKjK<^^^KjKKjppp\]]\jKL45KjKKjKujKKjK4LKjKK^^^jKKjKpppr]]\  $$ ^aaQ^aa,#"&5465654.+"'&47623   #>bqb&44&ɢ5"  #D7euU6 &4&m 1X".4>2".4>24&#""'&#";2>#".'&547&5472632>3=T==T==T==T=v)GG+v@bRRb@=&\Nj!>3lkik3hPTDDTPTDDTPTDDTPTDD|x xXK--K|Mp<# )>dA{RXtfOT# RNftWQ,%4&#!"&=4&#!"3!26#!"&5463!2!28(@(88((88((8\@\\@\\(88(@(88(@(88@\\\\ u'E4#!"3!2676%!54&#!"&=4&#!">#!"&5463!2!2325([5@(\&8((88((8,9.+C\\@\ \6Z]#+#,k(88(@(88(;5E>:5E\\\ \1. $4@"&'&676267>"&462"&462.  > $$ n%%/02 KjKKjKKjKKjKfff^aayy/PccP/jKKjKKjKKjKffff@^aa$4@&'."'.7>2"&462"&462.  > $$ n20/%7KjKKjKKjKKjKfff^aa3/PccP/y jKKjKKjKKjKffff@^aa +7#!"&463!2"&462"&462.  > $$ &&&&KjKKjKKjKKjKfff^aa4&&4&jKKjKKjKKjKffff@^aa#+3C54&+54&+"#";;26=3264&"24&"2$#"'##"3!2@@KjKKjKKjKKjKܒ,gjKKjKKjKKjKXԀ,, #/;GS_kw+"=4;27+"=4;2'+"=4;2#!"=43!2%+"=4;2'+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;54;2!#!"&5463!2`````````````````````p`K55KK55Kp`````````````````````````5KK55KK@*V#"'.#"63232+"&5.5462#"/.#"#"'&547>32327676R?d^7ac77,9xm#@#KjK# ڗXF@Fp:f_ #WIpp&3z h[ 17q%q#::#5KKu't#!X: %#+=&>7p @ *2Fr56565'5&'. #"32325#"'+"&5.5462#"/.#"#"'&547>32327676@ͳ8 2.,#,fk*1x-!#@#KjK# ڗXF@Fp:f_ #WIpp&3z e`vo8t-  :5 [*#::#5KKu't#!X: %#+=&>7p  3$ "/&47 &4?62#!"&=463!2I.  2 w 2   -@). 2    2 . -@@-S$9%"'&4762  /.7> "/&47 &4?62i2  .   2 w E > u > .  2 w 2   2    2  ww !   h. 2    2 . ;#"'&476#"'&7'.'#"'&476' )'s "+5+@ա' )'F*4*Er4M:}}8 GO *4*~ (-/' #"'%#"&7&67%632B;>< V??V --C4 <B=cB5 !% %!b 7I))9I7 #"'.5!".67632y( #  ##@,( )8! !++"&=!"&5#"&=46;546;2!76232-SSS  SS``  K$4&"24&"24&"27"&5467.546267>5.5462 8P88P88P88P8P88P4,CS,4pp4,,4pp4,6d7AL*',4ppP88P8P88P8HP88P8`4Y&+(>EY4PppP4Y4Y4PppP4Y%*54&#"#"/.7!2<'G,')7N;2]=A+#H  0PRH6^;<T%-S#:/*@Z}   >h.%#!"&=46;#"&=463!232#!"&=463!2&&&@@&&&@&&&&&&&&&&&&f&&&&b#!"&=463!2#!"&'&63!2&&&&''%@% &&&&&&&&k%J%#/&'#!53#5!36?!#!'&54>54&#"'6763235 Ź}4NZN4;)3.i%Sin1KXL7觧*  #& *@jC?.>!&1' \%Awc8^;:+54&#"'6763235 Ź}4NZN4;)3.i%PlnEcdJ觧*  #& *-@jC?.>!&1' \%AwcBiC:D'P%! #!"&'&6763!2P &:&? &:&?5"K,)""K,)h#".#""#"&54>54&#"#"'./"'"5327654.54632326732>32YO)I-D%n  "h.=T#)#lQTv%.%P_ % %_P%.%vUPl#)#T=@/#,-91P+R[Ql#)#|'' 59%D-I)OY[R+P19-,##,-91P+R[YO)I-D%95%_P%.%v'3!2#!"&463!5&=462 =462 &546 &&&&&4&r&4&@&4&&4&G݀&&&&f s CK&=462 #"'32=462!2#!"&463!5&'"/&4762%4632e*&4&i76`al&4&&&&&}n  R   R zfOego&&5`3&&&4&&4& D R   R zv"!676"'.5463!2@@w^Cct~5  5~tcC&&@?JV|RIIR|V&&#G!!%4&+";26%4&+";26%#!"&546;546;2!546;232@@@@L44LL4^B@B^^B@B^4L  N4LL44L`B^^B``B^^B`LL4&"2%#"'%.5!#!"&54675#"#"'.7>7&5462!467%632&4&&4  @ o&&}c ;pG=(  8Ai8^^.   &4&&4&` ` fs&& jo/;J!# 2 KAE*,B^^B! ` $ -4&"2#"/&7#"/&767%676$!28P88PQr @ U @ {`PTP88P8P`  @U @rQ!6'&+!!!!2Ѥ 8̙e;<*@8 !GGGQII %764' 64/&"2 $$ f3f4:4^aaf4334f:4:^aa %64'&" 2 $$ :4f3f4F^aa4f44f^aa 764'&"27 2 $$ f:4:f4334^aaf4:4f3^aa %64/&" &"2 $$ -f44f4^aa4f3f4:w^aa@7!!/#35%!'!%j/d jg2|855dc b @! !%!!7!FG)DH:&H dS)U4&"2#"/ $'#"'&5463!2#"&=46;5.546232+>7'&763!2&4&&4f ]wq4qw] `dC&&:FԖF:&&Cd`4&&4& ]] `d[}&&"uFjjFu"&&y}[d#2#!"&546;4 +"&54&" (88(@(88( r&@&Ԗ8((88(@(8@&&jj'3"&462&    .  > $$ Ԗ>aX,fff^aaԖԖa>TX,,~ffff@^aa/+"&=46;2+"&=46;2+"&=46;28((88((88((88((88((88((8 (88((88((88((88((88((88/+"&=46;2+"&=46;2+"&=46;28((88((88((88((88((88((8 (88((88(88((88(88((885E$4&"2%&'&;26%&.$'&;276#!"&5463!2KjKKj   f  \ w@wwwjKKjK"G   ܚ  f   @www   $64'&327/a^ ! ^aaJ@%% 65/ 64'&"2 "/64&"'&476227<ij6j6u%k%~8p8}%%%k%}8p8~%<@% %% !232"'&76;!"/&76  ($>( J &% $%64/&"'&"2#!"&5463!2ff4-4ff4fw@wwwf4f-f4@www/#5#5'&76 764/&"%#!"&5463!248` # \P\w@www4`8  #@  `\P\`@www)4&#!"273276#!"&5463!2& *f4 'w@www`&')4f*@www%5 64'&"3276'7>332#!"&5463!2`'(wƒa8! ,j.( &w@www`4`*'?_`ze<  bw4/*@www-.  6 $$  (r^aaO(_^aa -"'&763!24&#!"3!26#!"&5463!2yB(( @   w@www]#@##   @ @www -#!"'&7624&#!"3!26#!"&5463!2y((@B@u @   w@www###@  @ @www -'&54764&#!"3!26#!"&5463!2@@####@w@wwwB((@@www`%#"'#"&=46;&7#"&=46;632/.#"!2#!!2#!32>?6#  !"'?_  BCbCaf\ + ~2   }0$  q 90r p r%D p u?#!"&=46;#"&=46;54632'.#"!2#!!546;2D a__ g *`-Uh1    ߫}   $^L  4b+"&=.'&?676032654.'.5467546;2'.#"ǟ B{PDg q%%Q{%P46'-N/B).ĝ 9kC< Q 7>W*_x*%K./58`7E%_ ,-3  cVO2")#,)9;J) "!* #VD,'#/&>AX>++"''&=46;267!"&=463!&+"&=463!2+32Ԫ$   pU9ӑ @/*f o  VRfq f=SE!#"&5!"&=463!5!"&=46;&76;2>76;232#!!2#![       % )   "  Jg Uh BW&WX hU g 84&#!!2#!!2#!+"&=#"&=46;5#"&=46;463!2j@jo g|@~vv u n#467!!3'##467!++"'#+"&'#"&=46;'#"&=46;&76;2!6;2!6;232+32QKt# #FNQo!"դѧ !mY Zga~bm] [o"U+, @h h@@X hh @83H\#5"'#"&+73273&#&+5275363534."#22>4.#2>ut 3NtRP*Ho2 Lo@!R(Ozh=,GID2F 8PuE>.'%&TeQ,jm{+>R{?jJrL6V @`7>wmR1q uWei/rr :Vr" $7V4&#"326#"'&76;46;232!5346=#'73#"'&'73267##"&54632BX;4>ID2F +>R{8PuE>.'%&TeQ,jm{?jJrL6 @`rr :Vr3>wmR1q uWei@ \%4&#"326#!"&5463!2+".'&'.5467>767>7>7632!2&%%&&&& &7.' :@$LBWM{#&$h1D!  .I/! Nr&&%%&&&&V?, L=8=9%pEL+%%r@W!<%*',<2(<&L,"r@ \#"&546324&#!"3!26%#!#"'.'.'&'.'.546767>;&%%&&&& &i7qN !/I.  !D1h$&#{MWBL$@: '.&&%%&&&&=XNr%(M&<(2<,'*%<!W@r%%+LEp%9=8=L  +=\d%54#"327354"%###5#5#"'&53327#"'#3632#"'&=4762#3274645"=424'.'&!  7>76#'#3%54'&#"32763##"'&5#327#!"&5463!2BBPJNC'%! B? )#!CC $)  54f"@@ B+,A  A+&+A  ZK35N # J!1331CCC $)w@www2"33FYF~(-%"o4*)$(* (&;;&&9LA3  8334S,;;,WT+<<+T;(\g7x:&&::&&<r%-@www  +=[c}#"'632#542%35!33!3##"'&5#327%54'&#"5#353276%5##"=354'&#"32767654"2 '.'&547>76 3#&'&'3#"'&=47632%#5#"'&53327''RZZ:kid YYY .06 62+YY-06 R[!.'CD''EH$VVX::Y X;:Y fyd/%jG&DC&&CD&O[52. [$C-D..D^^* ly1%=^I86i077S 3 $EWgO%33%OO%35 EEFWt;PP;pt;PP;pqJgTFQ%33&PP%33%R 7>%3!+}{'+"&72'&76;2+"'66;2U &  ( P *'eJ."-dZ-n -'74'&+";27&+";276'56#!"&5463!2~} 7e  ۩w@www"  $Q #'!# @www I-22#!&$/.'.'.'=&7>?>369II ! ' $ !01$$%A' $ ! g  \7@)(7Y   \7@)(7Y @ '5557 ,VWQV.RW=?l%l`~0  !#!#%777 5! R!!XCCfff݀# `,{{{`Og4&"2 &6 $"&462$"&62>7>7>&46.'.'. '.'&7>76 Ԗ HR6L66LGHyU2L  L2UyHHyU2L  L2UyHn X6X  XX ԖԖH6L66L6 L2UyHHyU2L  L2UyHHyU2L n6X  XX  2#!"&54634&"2$4&"2ww@ww||||||w@www||||||| !3 37! $$ n6^55^h ^aaM1^aaP *Cg'.676.7>.'$7>&'.'&'? 7%&'.'.'>767$/u5'&$I7ob?K\[zH,1+.@\7':Yi4&67&'&676'.'>7646&' '7>6'&'&7>7#!"&5463!2PR$++'TJXj7-FC',,&C ."!$28 h /" +p^&+3$ i0(w@www+.i6=Bn \C1XR:#"'jj 8Q.cAj57!? "0D$4" P[ & 2@wwwD"%.5#5>7>;!!76PYhpN!HrD0M C0N#>8\xx: W]oW-X45/%'#.5!5!#"37>#!"&5463!2p>,;$4 5eD+WcEw@wwwK()F ,VhV^9tjA0/@www@#"'&76;46;23   &  ++"&5#"&7632  ^  c  & @#!'&5476!2 &  ^  b '&=!"&=463!546  &    q&8#"'&#"#"5476323276326767q'T1[VA=QQ3qqHih"-bfGw^44O#A?66%CKJA}} !"䒐""A$@C3^q|z=KK?6 lk)  %!%!VVuuu^-m5w}n~7M[264&"264&"2"&546+"&=##"&5'#"&5!467'&766276#"&54632    *<;V<<O@-K<&4'>&4.'.'.'.'.'&6&'.'.6767645.'#.'6&'&7676"&'&627>76'&7>'&'&'&'&766'.7>7676>76&6763>6&'&232.'.6'4."7674.'&#>7626'.'&#"'.'.'&676.67>7>5'&7>.'&'&'&7>7>767&'&67636'.'&67>7>.'.67 \  U7  J#!W! '  " ';%  k )"    '   /7*   I ,6 *&"!   O6* O $.( *.'  .x,  $CN      * 6   7%&&_f& ",VL,G$3@@$+ "  V5 3"  ""#dA++ y0D- %&n 4P'A5j$9E#"c7Y 6" & 8Z(;=I50 ' !!e  R   "+0n?t(-z.'< >R$A"24B@( ~ 9B9, *$        < > ?0D9f?Ae  .(;1.D 4H&.Ct iY% *  7      J  <    W 0%$  ""I! *  D  ,4A'4J" .0f6D4pZ{+*D_wqi;W1G("% %T7F}AG!1#%  JG 3  '.2>Vb%&#'32&'!>?>'&' &>"6&#">&'>26 $$ *b6~#= XP2{&%gx| .W)oOLOsEzG< CK}E $MFD<5+ z^aa$MWM 1>]|YY^D եA<KmE6<" @9I5*^aa>^4./.543232654.#"#".#"32>#"'#"$&547&54632632':XM1h*+D($,/9p`DoC&JV;267676&#!"&=463!267 #!"'&5463!26%8#! &&Z"M>2! ^I 7LRx_@>MN""`=&&*%I},  L7_jj9/%4&#!"3!264&#!"3!26#!"&5463!2  &&&&&&&&19#"'#++"&5#"&5475##"&54763!2"&4628(3- &B..B& -3(8IggI`(8+Ue&.BB.&+8(kk`%-"&5#"&5#"&5#"&5463!2"&4628P8@B\B@B\B@8P8pPPp@`(88(`p.BB.0.BB.(88(Pppͺ!%>&'&#"'.$ $$ ^/(V=$<;$=V).X^aaJ`"(("`J^aa,I4."2>%'%"/'&5%&'&?'&767%476762%6[՛[[՛o ܴ   $ $ " $ $  ՛[[՛[[5` ^ ^ 2` `2 ^ ^ ` 1%#"$54732$%#"$&546$76327668ʴhf킐&^zs,!V[vn) 6<ׂf{z}))Ns3(@ +4&#!"3!2#!"&5463!2#!"&5463!2@&&&f&&&&@&&&&4&&4&@&&&&&&&& `BH+"/##"./#"'.?&5#"&46;'&462!76232!46 `&C6@Bb03eI;:&&&4L4&F Z4&w4) '' 5r&4&&4&&4}G#&/.#./.'&4?63%27>'./&'&7676>767>?>%6})(."2*&@P9A #sGq] #lh<* 46+(  < 5R5"*>%"/ +[>hy  K !/Ui%6&'&676&'&6'.7>%.$76$% $.5476$6?62'.76&&'&676%.76&'..676#"NDQt -okQ//jo_  %&JՂYJA-.-- 9\DtT+X?*<UW3' 26$>>W0 {"F!"E    ^f`$"_]\<`F`FDh>CwlsJ@ ;=?s  :i_^{8+?` ) O`s2RDE58/Kr #"'>7&4$&5mī"#̵$5$"^^W=acE*czk./"&4636$7.'>67.'>65.67>&/>z X^hc^O<q+f$H^XbVS!rȇr?5GD_RV@-FbV=3! G84&3Im<$/6X_D'=NUTL;2KPwtPt=  &ռ ,J~S/#NL,8JsF);??1zIEJpqDIPZXSF6\?5:NR=;.&1 +!"&=!!%!5463!2sQ9Qs***sQNQsBUw wUBFHCCTww%1#"&=!"&=463!54632.  6 $$     ` ?(r^aa    (_^aa%1#!#"'&47632!2.  6 $$   @  ` (r^aa  ?  @  (_^aa/#"'&476324&#!"3!26#!"&5463!2&@& @   w@www& @B@ &  @ @www"&462  >& $$ Ԗ*(r^aaԖԖ (^aa]6#"$54732>%#"'!"&'&7>32'!!!2f:лѪz~u: ((%`V6B^hD%i(]̳ޛ *>6߅r#! 3?^BEa߀#9#36'&632#"'&'&63232#!"&5463!2 Q,&U #+' ;il4L 92<D`w@www`9ܩ6ɽ ]`C477&@wwwD+"&5#"'&=4?5#"'&=4?546;2%6%66546;2  wwwwcB G]B Gty]ty #3C#!+"&5!"&=463!46;2!24&#!"3!26#!"&5463!2@`@`^BB^^B@B^www@w@`@`2@B^^BB^^ww@w'/?P+5#"&547.467&546;532!764'!"+32#323!&ln@ :MM: @nY*Yz--zY*55QDDU9pY-`]]`.X /2I$ t@@/!!/@@3,$,3$p$00&*0&& !P@RV2#"&/#"&/#"&546?#"&546?'&54632%'&54632763276%>S]8T;/M77T7%>ww@ww!"5bBBb// * 8(@(87)(8=%/' #?w@www#~$EE y &L(88e):8(%O r    O?GQaq47&67>&&'&67>&"$32#"#"'654  $&6 $6&$ CoL.*K  Px.* iSƓ i 7J ?~pi{_Я;lLUZ=刈刈_t'<Z :!   @! j`Q7  $ky, Rfk*4LlL=Z=刈&$&546$7%7&'5>]5%w&P?zrSF!| &0 ##!"&5#5!3!3!3!32!546;2!5463) );));;))&&&@@&&&  6 $&727"'%+"'&7&54767%&4762֬>4P t+8?::  ::A W` `EvEEvE<."e$IE&O &EI&{h.`m"&#"&'327>73271[ >+)@ (]:2,C?*%Zx/658:@#N C= E(oE=W'c:#!#"$&6$3 &#"32>7! ڝyy,{ۀہW^F!LC=y:yw߂0H\R%"N^ '&76232762$"&5462"&46274&"&'264&#"'&&#"32$54'>$ $&6$ G>>0yx14J55J5J44J5Fd$?4J55%6E#42F%$fLlLq>>11J44%&4Z%44J54R1F$Z-%45J521Z%F1#:ʎ 9LlL#Qa"'&7622762%"&5462"&546274&#"&'73264&#"'&&#"32654'>#!"&5463!2 55 **.>.-@-R.>.-@-<+*q6- -- 0OpoOxzRrqP6z~{{Prr^aa]054&"#"&5!2654632!#"&57265&'&#".'&'#"&5467%&4>7>3263232654.547'654'63277.'.*#">7?67>?>32#"'7'>3'>3235?KcgA+![,7*  2(-#=  /~[(D?G  |,)"# +)O8,+'6 y{=@0mI#938OAE` -  )y_/FwaH8j7=7?%a % %!?)L J 9=5]~pj  %(1$",I  $@((  +!.S -L__$'-9L 5V+ 6 T+6.8- $ 0 + t |S 16]&#"'&#"67>76'&'&#"67>32764.#"#.32>67>7 $&54>7>7>7rJ@ "kb2)W+ ,5/1   #   Z -!$IOXp7sLCF9vz NAG#/ 5|Հ';RKR/J#=$,9,+$UCS7'2"1  ! / ,   /--ST(::(ep4AM@=I>".)xΤlsY|qK@ %(YQ&N EHv~<Zx'#"&5467&6?2?'&"/.7.546326#"&'&/7264/7'764&"'?>>32.AUpIUxYE.A %%%h% %hJ%D,FZxULs TgxUJrVD %hJ%@/LefL.C %Jh%CV sNUxϠ@.FZyUHpVA %h&%% %Ji%CWpIUybJ/Uy^G,D %Jh%@U sMt UC %hJ%C-KfyEX[_gj&/&'.''67>7>7&'&'&'>76763>7>#&'&'767672'%'7'+"&'&546323267>7%#"'4'6767672,32,+DCCQLDf' % :/d B 4@ }  &!0$?Jfdf-.=6(:!TO? !IG_U% . k*.=; 5gN_X "  ##  292Q41   *6nA;| BS N.  %1$ 6 $nk^ '7GWgw2+"&5463#!"&5463!254&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";26#"&=! B^^BB^^B:FjB^8((`( `(8^BB^^B@B^"vEj^B(8(`(8(/?O_o/?2#!"&5463;26=4&+";26=4&+";26=4&+";26=4&+"54&+";2654&+";2654&+";2654&+";2654&+";2654&#!"3!2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";26@&&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`' "&5#"&5&4762!762$"&462B\B@B\BOpP.BB..BB.8$PO広3CQ#".54>32#".546322#"&#"#"54>%".54>32%2#"&54> &X=L|<&X=M{2r_-$$-_rUU%&&5%ő'- "'.546762@FF$@B@$.&,&.]]|q#<<#(BB B%'-%'-'%'-"'%&'"'%.5467%467%62@ll@ll,@GG&!@@@@@@!&+#+#6#+$*`:p:px p=`$>>$&@&@ @&p@ &.A!!"!&2673!"5432!%!254#!5!2654#!%!2#!8Zp?vdΊens6(N[RWu?rt1SrF|iZ@7މoy2IMC~[R yK{T:%,AGK2#!"&5463!!2654'654.#532#532"&5!654&#"327#2#>!!ww@ww~uk'JTMwa| DH> I1q Fj?w@wwwsq*4p9O*¸Z^qh LE "(nz8B M'?"&4624&#"'.'324&#"3267##"&/632632.ʏhhMALR vGhг~~K „yO^   ʏʏВ*LM@!שwwȍde)qrOPqȦs:03=7'.?67'67%'>&%'7%7./6D\$>  "N,?a0#O 1G9'/P(1#00  ($=!F "9|]"RE<6 'o9%8J$\ :\HiTe<?}V#oj? d,6%N#" HlSVY]C =@C4&"2!.#!"4&"2+"&=!"&=#"&546;>3!232^^^Y ^^^`pppp`]ibbi]~^^^e^^^PppPPppP]^^]3;EM2+"&=!"&=#"&546;>;5463!232264&"!.#!"264&" ]`pppp`]ibbi^^^dY !^^^]@PppP@@PppP@]^^] ^^^e^^^ 3$#!#!"&5467!"&47#"&47#"&4762++&2 $$ 2&&&4&&Z4&&##&&4&4&44&m4&m+DP4'&#"32763232674'&!"32763 3264'&$#"32763232> $$ g* o`#ə0#z#l(~̠) -g+^aaF s" +g (* 3#!| #/IK/%*%D= )[^aa !!!'!!77!,/,-a/G t%/;<HTbcq%7.#"32%74'&"32765"/7627#"5'7432#"/7632#"5'7432#"&5'74632 #"/6327#"/6327#"/46329"&/462"&/>21"&/567632#!.547632632  *     X    ^  `    ^  b  c   fu U`59u  4J   l~ ~ F 2    m | O,           ru| u  " )9 $7 $&= $7 $&= $7 $&=  $&=46w`ww`ww`wb`VTEvEEvETVTEvEEvET*VTEvEEvET*EvEEvEEvEEv#^ct#!"&5463!2!&'&!"&5!632#"&'#"/&'&7>766767.76;267674767&5&5&'67.'&'&#3274(8((88((`x c`(8!3;:A0?ݫY   ^U 47D$    74U3I  |L38wtL0`((88(@(8(D 9 8(Q1&(!;  (g- Up~R2(/{E(Xz*Z%(i6CmVo8 #T#!"&5463!2!&'&!"&5!3367653335!3#4.5.'##'&'35(8((88((`x c`(8iFFZcrcZ`((88(@(8(D 9 8(kk" kkJ  ! k#S#!"&5463!2!&'&!"&5!%!5#7>;#!5#35!3#&'&/35!3(8((88((`x c`(8-Kg kL#DCJg  jLD`((88(@(8(D 9 8(jj jjkk kk#8C#!"&5463!2!&'&!"&5!%!5#5327>54&'&#!3#32(8((88((`x c`(8 G]L*COJ?0R\wx48>`((88(@(8(D 9 8(jjRQxk !RY#*2#!"&5463!2!&'&!"&5!!57"&462(8((88((`x c`(8Pppp`((88(@(8(D 9 8(ppp  #*7JR5#5#5#5##!"&5463!2!&'&!"&5##5!"&54765332264&"<(8((88((`x c`(8kޑcO"jKKjK`((88(@(8(D 9 8(SmmS?M&4&&4#9L^#!"&5463!2!&'&!"&5!#"/#"&=46;76276'.'2764'.(8((88((`x c`(8 6ddWW6&44`((88(@(8(D 9 8(. G5{{5]]$5995#3C#!"&5463!2!&'&!"&5!2#!"&5463#"'5632(8((88((`x c`(84LL44LL4l  `((88(@(8(D 9 8(L44LL44L  Z #7K[#!"&5463!2!&'&!"&5!>&'&7!/.?'&6?6.7>'(8((88((`x c`(8` 3  3  3  3 v  ?  `((88(@(8(D 9 8( & & - & &  ?   '6#'. '!67&54632".'654&#"32eaAɢ/PRAids`WXyzOvд:C;A:25@Ң>-05rn`H( ' gQWZc[ -%7' %'-'% %"'&54762[3[MN 3",""3,3"ong$߆]gn$+) ")")" x#W#"&#!+.5467&546326$32327.'#"&5463232654&#"632#".#"oGn\ u_MK'̨|g? CM7MM5,QAAIQqAy{b]BL4PJ9+OABIRo?z.z n6'+s:zcIAC65D*DRRD*wyal@B39E*DRRD*'/7  $&6$ 6277&47' 7'"' 6& 6'lLRRZB|RR>dZZLlLZRR«Z&>«|R ! $&54$7 >54'5PffP牉@s-ff`-c6721>?>././76&/7>?>?>./&31#"$&(@8!IH2hM>'  )-* h'N'!'Og,R"/!YQG54'63&547#5#"=3235#47##6323#324&"26%#!"&5463!2F]kbf$JMM$&N92Z2&`9UW=N9:PO;:dhe\=R +)&')-S99kJ<)UmQ/-Ya^"![Y'(<`X;_L6#)|tWW:;X  #'#3#!"&5463!2) p*xeשw@www0,\8@www9I#"'#"&'&>767&5462#"'.7>32>4."&'&54>32JrO<3>5-&FD(=Gq@C$39aLL²L4 &) @]v q#CO!~󿵂72765'./"#"&'&5 }1R<2" 7MW'$  ;IS7@5sQ@@)R#DvTA ; 0x I)!:> +)C 6.> !-I[4&#"324&#"3264&#"324&#"326&#"#".'7$4$32'#"$&6$32D2)+BB+)3(--(31)+BB+)4'--'4'#!0>R HMŰ9ou7ǖD䣣 R23('3_,--,R23('3_,--,NJ ?uWm%#"'%#"'.5 %&'&7632! ; `u%"(!]#c)(  #"'%#"'.5%&'&76 !  (%##fP_"(!)'+ʼn4I#"$'&6?6332>4.#"#!"&54766$32#!"&=46;46;2z䜬m IwhQQhbF*@&('k@z   _hQнQGB'(&*eozΘ@@`  >. $$ ffff^aafff^aa>"&#"#"&54>7654'&#!"#"&#"#"&54>765'46.'."&54632326323!27654'.5463232632,-,,",:! %]& %@2(/.+*)6! <.$..**"+8#  #Q3,,++#-:#"$$ /:yuxv)%$ /?CG%!5%2#!"&5463!5#5!52#!"&54632#!"&5463#5!5`&&&& &&&&&&&&@&&&&&&&&&&&&%2 &547%#"&632%&546 #"'6\~~\h ~\h\ V V VV%5$4&#"'64'73264&"&#"3272#!"&5463!2}XT==TX}}~>SX}}XS>~}w@www~:xx:~}}Xx9}}9xX}@www/>LXds.327>76 $&6$32762#"/&4762"/&47626+"&46;2'"&=462#"'&4?62E0l,  *"T.D@Yooo@5D [  Z  Z  [ ``[ Z  2 ,l0 (T" .D5@oooY@D, Z  [  [  Z ``EZ  [ 5%!  $&66='&'%77'727'%amlLmf?55>fFtuutFLlLHYC L||L Y˄(E''E*( /?IYiy%+"&=46;2+"&=46;2+"&=46;2+"&=46;2%"&=!#+"&=46;2+"&=46;2+"&=46;2+"&=46;2!54!54>$ +"&=46;2#!"&=@&&@3P > P3&&rrr&&rrr he 4LKM:%%:MKL4WT&&%/9##!"&563!!#!"&5"&5!2!5463!2!5463!2&&&&&&  &&&i@&&@&7'#5&?6262%%o;j|/&jJ%p&j;&i&p/|jţ%Jk%o%  :g"&5462#"&546324&#!"263662>7'&75.''&'&&'&6463!276i~ZYYZ~@OS;+[G[3YUD#o?D&G3I=JyTkBuhNV!WOhuAiSy*'^CC^'*SwwSTvvTSwwSTvvWID\_"[ gq# /3qFr2/ $rg%4 HffHJ4d#!#7!!7!#5!VFNrmNNN N!Y+?Ne%&'&'&7>727>'#&'&'&>2'&'&676'&76$7&'&767>76 '6# <;11x# *# G,T93%/#0vNZ;:8)M:( &C.J}2 %0  ^*  JF &7'X"2LDM" +6 M2+'BQfXV#+] #' L/(eB9  #,8!!!5!!5!5!5!5#26%!!26#!"&5!5&4& &pPPp@@&&@!&@PppP@*  9Q$"&54627"."#"&547>2"'.#"#"&5476$ "'&$ #"&5476$ (}R}hLK NN Ud: xx 8    ,, |2222 MXXM ic,>>,   ̺  '/7?KSck{4&"2$4&"24&"24&"24&"24&"24&"24&"24&"264&"24&#!"3!264&"2#!"&5463!2KjKKjKjKKjKjKKjKKjKKjKjKKjKjKKjKKjKKjKjKKjKLhLLhLKjKKj&&&&KjKKjL44LL44L5jKKjKKjKKjKjKKjKjKKjKjKKjKjKKjKjKKjKjKKjK4LL44LLjKKjK&&&&jKKjK4LL44LL 'E!#"+"&7>76;7676767>'#'"#!"&7>3!2W",&7' #$ &gpf5 O.PqZZdS -V"0kqzTxD!!8p8%'i_F?;kR(` !&)' (2!&6367! &63!2! `B 1LO(+#=)heCQg#s`f4#6q'X|0 -g >IY#6?>7&#!%'.'33#&#"#"/3674'.54636%#"3733#!"&5463!24  : @7vH%hEP{0&<'VFJo1,1.F6A#L44LL44L"% 7x'6 O\JYFw~v^fH$ ! "xdjD"!6`J4LL44LL +3@GXcgqz -<JX{&#"327&76'32>54.#"35#3;5#'#3537+5;3'23764/"+353$4632#"$2#462#"6462""'"&5&5474761256321##%354&'"&#"5#35432354323=#&#"32?4/&54327&#"#"'326'#"=35#5##3327"327'#"'354&3"5#354327&327''"&46327&#"3=#&#"32?"5#354327&3=#&"32?"#3274?67654'&'4/"&#!"&5463!2_gQQh^_~\[[\]_^hQQge<F$$$ !!&&/ !/  !! 00/e&'!"e$   '!!''   8''NgL44LL44LUQghQUk=("  ! =))=2( '! 'L#(>( & DC(>(zL#DzG)<)4LL44LL  BWbjq}+532%+5324&+32763#4&'.546327&#"#"'3265#"&546325&#"32 !264&"2%#'#735#535#535#3'654&+353#!"&5463!29$<=$@?SdO__J-<AA@)7")9,<$.%0*,G3@%)1??.+&((JgfJ*A!&jjjGZYGиwsswPiL>8aA !M77MM77M3! 4erJ]&3YM(, ,%7(#)  ,(@=)M%A20C&Mee(X0&ĖjjjV 8Z8J9N/4$ 8NN88NN  #&:O[ $?b3'7'#3#%54+32%4+324+323'%#5#'#'##337"&##'!!732%#3#3##!"&53733537!572!56373353#'#'#"5#&#!'#'#463!2#"5#"5!&+&+'!!7353273532!2732%#54&+#32#46.+#2#3#3##+53254&".546;#"67+53254&.546;#"#'#'##"54;"&;7335wY-AJF=c(TS)!*RQ+*RQ+Y,B^9^Ft`njUM ') ~PSPRm٘M77Mo7q @)U 8"E(1++NM77Mx378D62W74;9<-A"EA0:A F@1:ؗBf~~""12"4(w$#11#@}}!%+%5(v$:O\zK?* $\amcrVlOO176Nn23266&+"&#"3267;24&+"'&+";27%4&+";2?>23266&+"&#"3267;254+";27#76;2#!"&5463!23%#2%%,,  _3$$2%%M>AL Vb5)LDHeE:< EM j,K'-R M ~M>AR  Vb5)LEHeE:< E J ABI*'! ($rL44LL44Lv%1 %3!x*k $2 %3!;5h n a !(lI;F   rp p8;5h t a !(lI;F ` #k 4LL44LL  2HW[lt#"'5632#6324&'.54327&#"#"&'32767#533275#"=5&#"'#36323#4'&#"'#7532764&"24'&#"327'#"'&'36#!"&5463!2=!9n23BD$ &:BCRM.0AC'0RH`Q03'`.>,&I / * / 8/n-(G@5$ S3=,.B..B02^`o?7je;9G+L44LL44LyE%# Vb;A !p &'F:Aq)%)#orgT$ v2 8)2z948/{ 8AB..B/q?@r<7(g/4LL44LL ?#!"&'24#"&54"&/&6?&5>547&54626=L4@ԕ;U g3 T 2RX='8P8|5 4Ljj U;Ig@   `  "*\(88(]k  &N4#"&54"3 .#"#!"&'7!&7&/&6?&5>547&54626;U gIm*]Z0L4@ԕ=o=CT T 2RX='8P8|5  U;IgXu?bl3@4Ljja`   `  "*\(88(]k/7[%4&+";26%4&+";26%4&+";26!'&'!+#!"&5#"&=463!7>3!2!2@@@@@@0 o`^BB^`5FN(@(NF5@@@u  @LSyuS@%44%,<H#"5432+"=4&#"326=46;2  >. $$ ~Isy9"SgR8vHD w ffff^aam2N+ )H-mF+10*F +fff^aab4&#"32>"#"'&'#"&54632?>;23>5!"3276#"$&6$3 k^?zb=ka`U4J{K_/4^W&  vx :XB0܂ff ) fzzXlz=lapzob35!2BX G@8  ' '=vN$\ff  1 SZz8zX#("/+'547'&4?6276 'D^h  i%5@%[i  h]@]h  i%@5%[i  h^@@)2#"&5476#".5327>OFi-ay~\~;'S{s:D8>)AJfh]F?X{[TC6LlG]v2'"%B];$-o%!2>7>3232>7>322>7>32".'.#"#"&'.#"#"&'.#"#546;!!!!!32#"&54>52#"&54>52#"&54>52-P&+#($P.-P$'#+&PZP&+#"+&P-($P-.P$(#+$P.-P$'#+&P-.P$+#pP@@PpH85K"&ZH85K"&ZH85K"&Z@Pp@@@pMSK5, :&LMSK5, :&LMSK5, :& !!3 ! @@@  #"$$3!!2"jaѻxlalxaaj!!3/"/'62'&63!2'y  `I  yMy `I y'W`#".'.#"32767!"&54>3232654.'&546#&'5&#" 4$%Eӕ;iNL291 ;XxR`f՝Q8TWiWgW:;*:`Qs&?RWXJ8 oNU0 J1F@#) [%6_POQiX(o`_?5"$iʗ\&>bds6aP*< -;iFn* -c1BWg4'.'4.54632#7&'.#"#"'.#"32767'#"&54632326#!"&5463!2#$( 1$6]' !E3P|ad(2S;aF9'EOSej]m] <*rYshpt.#)$78L*khw@wwwB % $/$G6 sP`X):F/fwH1pdlqnmPHuikw_:[9D'@www34."2>$4.#!!2>#!".>3!2QнQQнQQh~wwhfffнQQнQQнQZZQffff#>3!2#!".2>4."fffнQQнQQffffQнQQн ,\!"&?&#"326'3&'!&#"#"'  5467'+#"327#"&463!!'#"&463!2632(#AHs9q ci<= #]$ KjKKjKKjKKjH#j#H&&&KjKKjKg V i jKKjKKjKKjK ..n(([5KK55KK5[poNv<+#"'#"&546;&546$32322$B$22$$*$22$Xڭӯ$22$tX'hs2$ϧkc$22$1c$2F33F3VVT2#$2ԱVT2#$2g#2UU݃ 2$#2UU1݃2 ,u54#"67.632&#"32654'.#"32764.'&$#"7232&'##"&54732654&#"467&5463254632>32#"'&ru&9%" *#͟ O%GR=O&^opC8pP*bY _#$N Pb@6)?+0L15 "4$.Es  5IQ"!@ h "Y7e|J>ziPeneHbIlF>^]@n*9 6[_3#"&54632#.#"32%3#"&54632#.#"326%4&'.'&! ! 7>7>! =39? 6'_ >29? 5'17m-VU--,bW.뮠@Fyu0HC$뮠@Fyu0HC$L= ?? <=! A <`;+"&54&#!+"&5463!2#!"&546;2!26546;2pЇ0pp@Ipp>Sc+"&=46;254&+"&+";2=46;2;2=46;2;2%54&#!";2=;26#!"&5463!2A5DD5A7^6a7MB55B7?5B~```0`rr5A44A5v5AA5f*A``0` !!!! #!"&5463!2ړ7H7jv@vvv':@vvvMUahmrx#"'!"'!#"&547.547.54674&547&54632!62!632!#!627'!%!"67'#77!63!!7357/7'%# %'3/&=&' 5#?&547 6!p4q"""6" 'h*[ |*,@?wAUMpV@˝)Ϳw7({*U%K6=0(M "! O dX$k !! ! b [TDOi @6bxBAݽ5  ɝ:J +3,p x1Fi (R 463!#!"&5%'4&#!"3`а@..@A-XfB$.BB..C} )&54$32&'%&&'67"w`Rd]G{o]>p6sc(@wgmJPAjyYWa͊AZq{HZ:<dv\gx>2ATKn+;"'&#"&#"+6!263 2&#"&#">3267&#">326e~└Ȁ|隚Ν|ū|iyZʬ7Ӕްr|uѥx9[[9jj9ANN+,#ll"BS32fk[/?\%4&+";26%4&+";26%4&+";26%4&+";26%#!"&5467&546326$32]]eeeeee$~i qfN-*#Sjt2"'qCB8!'> !%)-159=AEIMQUY]agkosw{! %! 5!#5#5#5#5#57777????#5!#5!#5!#5!#5!#5!#5!#5#537#5!#5!#5!#5!#5!#55#535353535353%"&546326#"'#32>54.&54>3237.#"Q%%%%%%%%%?iiihOiixiiyiixiiArssrrssr%sssrrssNs%%%%%%%%%%'32#".543232654&#"#"&54654&#"#"&547>326ڞUzrhgrxSПdU 7#"&463!2!2&&4&&&&4&KjKKjKjKKj &&&%&& &&4&&&&4&&&5jKKjKKjKKjK%z 0&4&&3D7&4& %&'S4&"4&"'&"27"&462"&462!2#!"&54>7#"&463!2!2&4&4&4&4KjKKjKjKKj &&&%&& &&4&%&&ے&4"jKKjKKjKKjK%z 0&4&&3D7&4& %& & !'! !%!!!!%"'.763!2o]FooZY@:@!!gf//I62'"/"/"/"/"/"/"/7762762762762762762%"/77627&6?35!5!!3762762'"/"/"/"/"/"/%5#5!4ZSS6SS4SS4SS4SS4SS4SS4ZSS4SS4SS4SS4SS4SS4S-4ZSS4S@4SS4ZSS6SS4SS4SS4SS4SS4S@ZSSSSSSSSSSSSSSZSSSSSSSSSSSSSyZRRR@%:= :+: =RRZSSSSSSSSSSSSSCv!/&'&#""'&#" 32>;232>7>76#!"&54>7'3&547&547>763226323@``` VFaaFV      $. .$     yy .Q5ZE$ ,l*%>>%*>*98(QO!L\p'.'&67'#!##"327&+"&46;2!3'#"&7>;276;2+6267!"'&7&#"(6&#"#"' Dg OOG`n%ELL{@&&Nc,sU&&!Fre&&ss#/,<= #]gL oGkP'r-n&4&2-ir&&?o  4 _5OW! .54>762>7.'.7>+#!"&5#"&5463!2"&462{{BtxG,:`9(0bԿb0(9`:,GxtB&@&&@&K55K`?e==e?1O6# ,  #$  , #6OO&&&&5KK?!"'&'!2673267!'. ."!&54632>321 4q#F""8'go#- #,"tYg>oP$$Po> Zep#)R0+I@$$@I++332++"&=#"&=46;.7>76$  @ ᅪ*r@@r'/2+"&5".4>32!"&=463  &@~[՛[[u˜~gr&`u՛[[՛[~~@r=E32++"&=#"&=46;5&547&'&6;22676;2  >``@``ٱ?E,,=?rH@``@GݧH`jjrBJ463!2+"&=32++"&=#"&=46;5.7676%#"&5   &@~``@``  vXr&@``@+BF`rks463!2+"&=32++"&=#"&=46;5&547'/.?'+"&5463!2+7>6 %#"&5   &@~``@``~4e  0  io@& jV  0  Z9r&@``@Gɞ5o , sp &@k^ , c8~~`r8>KR_32++"&=!+"&=#"&=46;.767666'27&547&#"&'2#" @@ 'Ϋ'sggsww@sgg@@-ssʃl99OOr99FP^l463!2+"&=$'.7>76%#"&=463!2+"&=%#"&54'>%&547.#"254&' &@L?CuГP vY &@;"ޥ5݇ޥ5`&_ڿgwBF@&J_ s&&?%x%xJP\h463!2+"&='32++"&=#"&=46;5.7676632%#"&56'327&7&#"2#" &@L? ߺu``@``} ຒɞueeu9uee&_"|N@``@""|a~lo99r9@9;C2+"&5"/".4>327'&4?627!"&=463  &@Ռ .  N~[՛[[u˜N .  gr&`֌  . Ou՛[[՛[~N  . @r9A'.'&675#"&=46;5"/&4?62"/32+  '֪ \  . 4 .  \r|ݧ憛@\ .    . \@r~9A"/&4?!+"&=##"$7>763546;2!'&4?62  m  - @ݧ憛@& -  @rm4 -  ٮ*   - r+"&5&54>2  @[՛[rdGu՛[[r  ".4>2r[՛[[՛r5՛[[՛[[$2#!37#546375&#"#3!"&5463#22#y/Dz?s!#22#2##2S88 2#V#2L4>32#"&''&5467&5463232>54&#"#"'.Kg&RvgD $ *2% +Z hP=DXZ@7^?1 ۰3O+lh4`M@8'+c+RI2 \ZAhSQ>B>?S2Vhui/,R0+ ZRkmz+>Q2#"'.'&756763232322>4."7 #"'&546n/9bLHG2E"D8_ pdddxO"2xxê_lx2X  !+'5>-pkW[C I I@50Oddd˥Mhfxx^ә #'+/7!5!!5!4&"2!5!4&"24&"2!!! 8P88P 8P88P88P88PP88P8 P88P88P88P8 +N &6 !2#!+"&5!"&=463!46;23!#!"&54>32267632#"_>@`     `  L4Dgy 6Fe=OOU4L>   ` `  4L2y5eud_C(====`L43V &6 #"/#"/&54?'&54?6327632#!"&54>32 7632_>     %%Sy 6Fe=J%>     %65%Sy5eud_C(zz.!6%$!2!!!46;24&"2!54&#!"&&&@ԖV@&&@&&ԖԖ@&3!!! !5!'!53!! #7IeeI7CzCl@@@#2#!"&?.54$3264&"!@մppp((ppp#+/2#!"&?.54$3264&"!264&"!@մ^^^@^^^@((^^^^^^v(#"'%.54632 "'% 632U/@k0G,zD# [k# /tg F Gz  #'#3!) p*xe0,\8T #/DM%2<GQ^lw &'&676676&'&7654&'&&546763"#"'3264&7.>&'%'.767&7667&766747665"'.'&767>3>7&'&'47.'.7676767&76767.'$73>?>67673>#6766666&'&6767.'"'276&67&54&&671&'6757>7&"2654&57>&>&'5#%67>76$7&74>=.''&'&'#'#''&'&'&'65.'&6767.'#%&''&'#2%676765&'&'&7&5&'6.7>&5R4&5S9 W"-J0(/r V"-J0(.)#"6&4pOPppc|o}vQ[60XQW1V  # 5X N"& . ) D>q J:102(z/=f*4!> S5b!%  (!$p8~5..:5I  ~T 4~9p# ! ) & ?()5F 1   d%{v*: @e s|D1d {:*dAA|oYk'&<tuut&v HCXXTR;w 71™ Z*&' 1  9? . $Gv 5k65P.$.`aasa``Z9k'9؋ӗa-*Gl|Me_]`F& OܽsDD!/+``aa``a154&'"&#!!26#!"&5463!2    iLCly5)*Hcelzzlec0hb,,beIVB9@RB9J_L44LL44L44%2"4:I;p!q4bb3p (P`t`P(6EC.7BI64LL44LL  .>$4&'6#".54$ 4.#!"3!2>#!"&5463!2Zjbjj[wٝ]>oӰٯ*-oXL44LL44L')꽽)J)]wL`ֺ۪e4LL44LL;4&#!"3!26#!"&5463!2#54&#!";#"&5463!2  @ ^BB^^B@B^  B^^B@B^`@  MB^^B@B^^>  ^B@B^^5=Um ! !!2#!"&=463!.'!"&=463!>2!2#264&"".54>762".54>762?(``(?b|b?B//B/]]FrdhLhdrF]]FrdhLhdrF@@@(?@@ ?(@9GG9@/B//BaItB!!BtI Ѷ!!ь ItB!!BtI Ѷ!!ь-M32#!"&=46;7&#"&=463!2#>5!!4.'.46ՠ`@`ՠ`MsFFsMMsFFsMojjo@@jj@@<!(!!(!-3?32#!"&=46;7&#"&=463!2+!!64.'#ՠ`@`ՠ`  DqLLqDojjo@@jj@@B>=C-3;32#!"&=46;7&#"&=463!2+!!6.'#ՠ`@`ՠ`UVU96gg6ojjo@@jj@@β**ɍ-G32#!"&=46;7&#"&=463!2#>5!!&'.46ՠ`@`ՠ`MsFFsMkkojjo@@jj@@<!(!33!(!9I2#!"&=4637>7.'!2#!"&=463@b":1P4Y,++,Y4P1:"":1P4Y,++,Y4P1:"b@@@7hVX@K-AA-K@XVh77hVX@K-AA-K@XVh7Aj"#54&#"'54&#"3!26=476=4&#"#54&'&#"#54&'&'2632632#!"&5&=4632>3265K @0.B @0.B#6'&& l @0.B 2' .B A2TA9B;h" d mpPTlLc _4.HK5]0CB.S0CB./#'?&&)$$)0CB. }(AB.z3M2"61d39L/PpuT(Ifc_E`1X"#4&"'&#"3!267654&"#4&"#4&26326#!"&'&5463246326\B B\B&@5K&@"6LB\B B\B sciL}QP%&#"!"3!754?27%>54&#!26=31?>Ijjq,J[j.-tjlV\$B.R1?@B.+?2`$v5K-%5KK5.olRIS+6K5̈$B\B 94E.&ʀ15uE& ԖPjjdXUGJ7!.B P2.B %2@ 7K5(B@KjKj?+fU E,5K~!1.>F.F,Q5*H$b2#!"&=%!"&=463!7!"&'&=4634'&#!">3!!"3!32#!"3!23!26=n$32>32>32#"#.#"#.#"3!27654&#"547654&#"#654&Mye t|]WSSgSY\x{ 70"1i92DU1&=  =&0@c >&/Btd4!*"8K4+"@H@/'= t?_K93-] UlgQQgsW ]#+ i>p&30&VZ&0B/ %3B. "to ){+C4I (  /D0&p0D3[_cg"'&#"3!2676=4&"#54&#"#54&#"#4&'2632632632#!"&'&5463246#!#!#5K)B4J&@#\8P8 @0.B J65K J6k cJ/4qG^\hB2.1!~K5y?^\Vljt-.j[J,qjjI7$?1R.B+.B$`2?gvEo.5KK5%-K6+SIR[&.E49 B\B$5KG#!+"&5!"&=463!2+"&' +"' +"'&5>;2>76;2Y    M .x - N     u  , u ?  LW   #  *:J4'&+326+"'#+"&5463!2  $6& $&6$ UbUI-uu,uuڎLlLAX!Jmf\$ 6uuu,KLlL-[k{276/&'&#"&5463276?6'.#"!276/&'&#"&5463276?6'.#"  $6&  $&6]h - %Lb`J%E 5 ,5R- h - %Lb`J%E 5 ,5R-'uu,uulL/hR    dMLc  NhR   dMLc  N1uuu,LlL@  ' 7 '7 ``H ``H !``H ```H` '%  7' 7'7 ' $&6$ X`(W:,:X`(WLLlLX`(W:BX`(XLlL $ %/9ES[#"&54632$"&4624&"26$4&#"2%#"&462$#"&4632#"32&! 24>  !#"&'.'#"$547.'!6$327&'77'&77N77N'qqqqqPOrqEsttsst}||}uԙ[WQ~,> nP/R U P酛n >,m'77'&77N77N6^Orqqqqqqt棣棣(~|| on[usј^~33pc8{y%cq33dqpf L 54 "2654"'&'"/&477&'.67>326?>< x ,  (-'sI  VCV  Hr'-(  $0@!BHp9[%&!@0$u  ]\\]-$)!IHV D V HI!)$-#36>N"&462."&/.2?2?64/67>&  #!"&5463!2]]]3 $; &|v;$ (CS31 =rM= 4TC(G zw@www]]]($-;,540= sL =45,; @www(2#"$&546327654&#" &#"AZ\@/#%E1/##.1E$![A懇@@\!#21E!6!E13"|! gL&5&'.#4&5!67&'&'5676&'6452>3.'5A5RV[t,G'Q4}-&r! G;>!g12sV&2:#;d=*'5E2/..FD֕71$1>2F!&12,@K r#"&5462>%.#"'&#"#"'>54#".'7654&&5473254&/>7326/632327?&$  $6 $&6$ !&"2&^ u_x^h ;J݃HJǭ qE Dm! M G?̯' %o8 9U(F(ߎLlL&!&!SEm|[n{[<ɪ "p C Di% (K HCέ  pC B m8 @Kނ  HF(LlL "*6%&6$ 7&$5%%6'$2"&4}x3nQH:dΏX e8z' li=! 7So?vM '&7>>7'7>''>76.'6'El:Fg r *t6K3U Z83P)3^I%=9 )<}Jk+C-Wd &U-TE+]Qr-< Q#0 C+M8 3':$ _Q =+If5[ˮ&&SGZoMkܬc#7&#"327#"'&$&546$;#"'654'632ե›fKYYKf¥yͩ䆎L1hvvƚwwkn]*]nlxDLw~?T8bb9SA}+5?F!3267!#"'#"4767%!2$324&#"6327.'!.#"۔c28Ψ-\?@hU0KeFjTlyE3aVsz.b؏W80]TSts<hO_u7bBtSbF/o|V]SHކJ34&#!"3!26#!!2#!"&=463!5!"&5463!2  @ ^B `` B^^B@B^   @ @B^@@^BB^^>3!"&546)2+6'.'.67>76%&F8$.39_0DD40DD0+*M7{L *="# U<-M93#D@U8vk_Y [hD00DD00Dce-JF1 BDN&)@ /1 dy%F#"'&'&'&'&763276?6#"/#"/&54?'&763276"&'&'&5#&763567632#"'&7632654'&#"32>54'&#"'.5463!2#!3>7632#"'&'&#"'&767632yqoq>* 432fba  $B? >B BB AA.-QPPR+ 42 %<ciђ:6& hHGhkG@n`IȌ5 !m(|.mzyPQ-.  je  q>@@?ppgVZE|fb6887a %RB? =B ABBAJvniQP\\PRh!cDS`gΒ 23geFGPHXcCI_ƍ5" n*T.\PQip [*81 / 9@:>t%6#".'.>%6%&7>'.#*.'&676./&'.54>754'&#"%4>327676= >vwd" l "3 /!,+ j2.|%& (N &wh>8X}xc2"W<4<,Z~fdaA`FBIT;hmA<7QC1>[u])  u1V(k1S) - 0 B2* %M ;W(0S[T]I) A 5%R7&&T,Xq&&1X,LΒw%%;#!"&5463!546;2!2!+"&52#!"/&4?63!5! (&&@&&(&&@&&( (  &&@&&@&&&&  #''%#"'&54676%6%% hh @` !   !    #52#"&5476!2#"&5476!2#"'&546        @  @  @    84&"2$4&"2$4&"2#"'&'&7>7.54$ KjKKjKjKKjKjKKjdne4" %!KjKKjKKjKKjKKjKKjK.٫8  !%00C'Z'.W"&462"&462"&462 6?32$6&#"'#"&'5&6&>7>7&54>$ KjKKjKjKKjKjKKjhяW.{+9E=cQdFK1A  0) LlLjKKjKKjKKjKKjKKjKpJ2`[Q?l&٫C58.H(Yee    Y'w(O'R@$#"&#"'>7676327676#" b,XHUmM.U_t,7A3ge z9@xSaQBLb( VU  !!!==w)AU!!77'7'#'#274.#"#32!5'.>537#"76=4>5'.465! KkkK _5 5 #BH1`L I& v6S F!Sr99rS!`` /7K%s}H XV P V  e  Vd/9Q[ $547.546326%>>32"&5%632264&#"64'&""&'&"2>&2654&#";2 P 3>tSU<)tqH+>XX|Wh,:UStW|XX>=X*  ))  +^X^|WX=>X:_.2//a:Ru?  Q%-W|XW>J( =u>XX|WX`  *((*  +2 2X>=XW|E03>$32!>7 '&'&7!6./EUnohiI\0<{ >ORDƚ~˕VƻoR C37J6I`Tb<^M~M8O  5!#!"&!5!!52!5463 ^B@B^`B^^B `B^^"^BB^0;%'#".54>327&$#"32$ !"$&6$3 ##320JUnLnʡ~~&q@tKL}'` - -oxnǑUyl}~~FڎLlLt`(88(   7!' !\W\ d;tZ`_O; }54+";2%54+";2!4&"!4;234;2354;2354>3&546263232632#"&#"26354;2354;2354;2````pp```  !,! -&M<FI(2 ```@PppPpppppp# #   ppppp j#"'&=!;5463!2#!"&=#".'.#!#"&463232>7>;>32#"&'#"!546 %. `@` :,.',-XjjXh-,'.,: kb>PppP>bk .%Z & :k%$> $``6&L')59I"TlԖlT"I95)'L&69GppG9$ >$%k: !+32&#!332 $&6$ ~O88OLlL>pN  iLlL '':Ma4&'#"'.7654.#""'&#"3!267#!"&54676$32#"'.76'&>$#"'.7654'&676mD5)  z{6lP,@KijjOoɎȕ>>[ta) GG 4?a) ll >;_-/ 9GH{zyN@,KԕoN繁y! ?hh>$ D" >â? $ n"&5462'#".54>22654.'&'.54>32#"#*.5./"~~s!m{b6# -SjR,l'(s-6^]Itg))[zxȁZ&+6,4$.X%%Dc* &D~WL}]I0"  YYZvJ@N*CVTR3/A3$#/;'"/fR-,&2-" 7Zr^Na94Rji3.I+ &6W6>N%&60;96@7F6I3+4&#!"3!26%4&#!"3!26 $$ ^aa`@@^aa '7  $ >. %"&546;2#!"&546;2#/a^(^aa(N@@4&#!"3!26 $$ @@^aa`@^aa '  $ >. 7"&5463!2#/a^(n@^aa(N@ %=%#!"'&7!>3!26=!26=!2%"&54&""&546 ##]VTV$KjKKjK$&4&Ԗ&4&>9G!5KK55KK5!&&jj&&#/;Im2+#!"&'#"&463>'.3%4&"26%4&"26%6.326#>;463!232#.+#!"&5#"5KK5sH..Hs5KK5e# )4# %&4&&4&&4&&4&` #4) #%~]eZ&&Ze] E-&&-EKjKj.<<.KjK)#)`"@&&`&&&&`&&)#`)"dXo&&oXG,8&&8!O##!!2#!+"'&7#+"'&7!"'&?63!!"'&?63!6;236;2!2@@8@7 8Q NQ N 8G@ 8GQ NQ N7   8 8  H H  k%  ".>2I20]@]@oo@@oo㔕a22]]p^|11|99|11|(%7'7' ' 7T dltl)qnluul)1$4&"24&"2 &6 +"&5476;2 &6 LhLLhLLhLLhL>  &   &`>hLLhLLhLLhL>&&>G  .7)1!62 1!62he220e22> v +4 [d+ d 135#5&'72!5!#"&'"'#"$547&54$ Eh`X(cYz:L:zYc\$_K`Pa}fiXXiޝfa  (+.>#5#5!5!5!54&+'#"3!267!7!#!"&5463!2U``'    jjV>(>VV>>Vq  ( ^(>VV>>VV=&'&'&'&76'&'&.' #.h8"$Y ''>eX5, ,PtsK25MRLqS;:.K'5R ChhRt(+e^TTu B"$:2~<2HpwTT V/7GWg. %&32?673327>/.'676$4&"2 $&6$   $6& $&6$ d -- m  ,6*6,  mKjKKjoooKzz8zzȎLlLU4>>4-. YG0 )xx) 0GYޞ .jKKjKqoooolzzz80LlLD/7H#"'.7'654&#"'67'.6?>%"&46227#".547|D,=),9#7[͑fx!X: D$ +s)hhijZt<F/*8C,q؜e\r,WBX/C2hhh=tXm>NZ+"&=46;2+"&=4>7>54&#"#"/.7632  >. $$ p=+& 35,W48'3  l zffff^aaP2P: D#;$# $*;? R Cfff^aa'Y >O`"&5462&'.'.76.5632.'#&'.'&6?65\\[( | r [A@[[@A#2#  7* <Y$  +}"(  q87] F  _1 )    #1Ke34&+326+"&=!#!"&763!2#!"&5463!2#>?4.'3#>?4.'3#>?4.'3Xe`64[l7  , L; =+3&98&+)>>+3&98&+)>=+3&88&+)> Wj|r >Q$~d $kaw+-wi[[\;/xgY $kaw+-wi[[\;/xgY $kaw+-wi[[\;/xgYJ\m4.'.'&#"#"'.'&47>7632327>7>54&'&#"327>"&47654'&462"'&476'&462"'&47>&'&462i$ $^"  %%  "^$ $W "@9O?1&&18?t@" W&%%&4KK6pp&46ZaaZ&4mttm ^x -  - x^ = /U7C kkz'[$ =&5%54'4&KK4r7>54 "&54>2"&462%"&54&#""&546 %#"&'&'.7>#"'&'.7>&4&&4&4&&4SZ&4&&44$#&&&j3$"('$&4&[՛[&4&&4F&4&]\&4&$  !D4%  ,\44&&4&4&&4&-Z4&&4&;cX/)#&>B)&4&j9aU0'.4a7&&u՛[[4&&4&@&&]]&&Ώ0 u40 )4#g&'.#"32676%4/&#"326'&#"2632#2+&'%#"'&6?676676632%#"'&6767#"&'&6767#"'.7>327"#"&'&6763"'.7>;7632;>%5K$ "0%>s$ "0%>;;>%5KVL#>H30 \($$(\( єyO2F/{(?0(TK.5sg$ єy#-F/{$70(TK.5sg$L#>H30 \($$(\#(@5"'K58!'"58!'"55"'K#dS$K K$Sdx#@1 w d>N;ET0((? - 2K|1 wd#N;ET0$(? - 2K$#dS$K K$SdxDN\2654& 265462"2654 #"32654>7>54."/&47&'?62 &4&&4&h՛[&4&r$'("$3j&&&#$4[ " @ GB[ "&&Β&&][u&&7a4.'0Ua9j&4&)B>&#)/Xc;u՛ "  " Gi[ Xh#"&54676324&'&#"'>54#"32#"54>54'.#"32>7>767632326#!"&5463!2b )   :4FDN  [1,^JK-*E#9gWRY vm0O w@wwwC22 c@X&!9{MA_"S4b// DR"XljPY < @www%e4.#"32>7676#'.#"#"&54>3232>754&*#"&54>763 >32 ''il$E/  @P@ ^`'W6&!.. ! -P5+ E{n46vLeVz:,SN/ M5M[  ]$[^5iC'2H&!(?]v`* l b$9> =R2 #"&5467%!"&7>3-.7>;%.7>322326/.76/.'&6766/&/&#"&676 &676&6766/&672? =1( H/ '96&@)9<')29% &06##$ J 0 7j)5@"*3%"!M %#K"%Ne 8)'8_(9./=*%8!Q #P"\Q#N&a)<9bR]mp%"'.'&54>76%&54763263 #"/7#"'#"&/%$%322654&#"%'OV9  nt  |\d ϓ[nt  |@D:) ;98'+| j," 41CH^nVz(~R 9\'  r  @L@  @w46HI(+C ,55, f[op@\j;(zV~i/5O#"'&54>32&#" 654'67'"'>54''&'"'6767&546767>7蒓`V BMR B9)̟!SH-77IXmSMH*k#".o;^J qןד>@YM $bKd ү[E";Kx%^6;%T,U:im=Mk).DT4'"&5463267&#" 6;64'.'4'>732676%#!"&5463!2),蛜s5-54&#"#"'654'.#"#"&#"3263232>3232>76 $$ Cf'/'% ( $UL ( #'/'@ 3#@,G)+H+@#3 ^aaX@ _O#NW#O_ .* ##(^aaq[632632#"&#"#".'&#"#".'&54767>7654.54632327&547>P9 B6?K? %O4T% >6>Z64Y=6>%S4N$ ?L?4B @{:y/$ ,'R! F! 8% #)(()#%: !F Q'+%0z:zO_4'.'&54>54&#"#"'654'.#"#"&#"3263232>3232>76#!"&5463!2Cf'.'% ( $VM  ) #'.'@ 3 #A,G)+H+A# 4 w@wwwXA  ?4N$NW&M&L  /* ## + @www O$>?>762'&#"./454327327>7> EpB5 3FAP/h\/NGSL  RP* m95F84f&3Ga4B|wB.\FI*/.?&,5~K % & Y."7n< "-I.M`{ARwJ!FX^dj''''"'7&'7&'7&'7&547'67'67'67'63277774$#"32$   *'ֱ,?g=OO&L&NJBg;1''ֱ.=gCIM $'&&NJBg=.%w؝\\w Ioo<<-NIDg=/%(ײ+AhEHO*"#*OICh=/'(ֲ/=h>ON.]xwڝ]7e[@)6!!"3#"&546%3567654'3!67!4&'7Sgny]K-#75LSl>9V%cPe}&Hn_HȌ=UoLQ1!45647UC" !-9[nx"&46254&"326754&"326754&"26754&"26#".547632632626326'4#"#"54732764&"264.#"327632>#"'"'#"'#"&5#"'67&'327&'&54>3267>7>7>32632632T"8""8)<())(<))))<))<))<))<) Tد{ՐRhx=8 78 n 81 pH_6Soc F@b@?d?uKbM70[f5Y$35KUC<:[;+8 n 87 8/8Zlv]64qE 'YK0-AlB; W#;WS9 &(#-7Z://:/Tr++r,,r++r,,r++r,,r++r,,ʠgxXVעe9222222^KVvF02OO23OO`lF;mhj84DroB@r+@222222C0DP`.r8h9~T4.&o@9 1P%14'!3#"&46327&#"326%35#5##33 $$  }Pcc]321IUΠ?LL?cc4MX &04;0XpD[[DpD,)&&Q 9V\26&".'&'&6?.#"#26327677>'32>&3#'&+"?626&"#!'.'!"&5463!>;26;2!2P P  92#.}SP9::%L \B )spN/9oJ5  !+D`]BgY9+,9% Pk 4P P &NnF!_7*}B<{o0&&B;*<@$ucRRc#@16#37c&@@@ J"@*4^`ED B o/8927 *@OLC!T!323X$BJ@@@&AS 0C 59" 'D/&&D4 88 $5A&%O#!"&547>7>2$7>/.".'&'&2>^B@B^ >FFzn_0P:P2\nzFF> R & p^1P:P1^ & R P2NMJMQ0Rr.B^^B 7:5]yPH!%%"FPy]5:7 = 4 QH!%%!Ht 4 =<"-/ ?1Pp+".'.'.?>;2>7$76&'&%.+"3!26#!"&54767>;2' +~'*OJ%%JN,&x' % ^M,EE,M7 ZE[P*FF*P:5  ^B@B^){$.MK%%KM.$+X)o3 "a 22!] 4  I>"">,&S8JB##B12 ` `B^^B8&ra#11#$R&  "&.2v%/%''%/%7%7'%7'/#&5'&&?&'&?&'&7%27674?6J" 0<=_gNU?DfuYGb7=^H^` =v~yT3GDPO 4Fѭqi_w\ހ!1uS%V_-d 1=U{J8n~r'U4.#".'"3!264&"26+#!"&5463!232+32+32 0P373/./373P0 T=@=T֙֙|`^B@B^^BB^`````*9deG-! !-Ged9IaallkOB^^BB^^B +Yi"&54622#!"&54>;2>+32+32+#!"&5463!2324&#!"3!26֙֙0.I/ OBBO -Q52-)&)-2 ``  ``  `^B@B^^BB^`  @   |kkl"=IYL)CggC0[jM4      B^^BB^^B @  @ !1AQu4.#".'"3!24&"254&#!"3!2654&#!"3!2654&#!"3!26#!54&+"!54&+"!"&5463!2)P90,***,09P)J66S"@8@^B@@B^^BB^Ukc9 9ckU?@@88 @@N@B^````^BB^^!1AQu#!"&4>32>72"&462#!"&=463!25#!"&=463!25#!"&=463!24&#!"3!546;2!546;2!26#!"&5463!2J66J)P90,***,09P)"@8@ @  `@@` ^B@B^^BB^ՀUUkc9 9c`@@88@@2  @ ````@B^^BB^^(%.'"&' $&  #"$&6$ wCιCwjJ~J>LlLśJSSJ͛>6LlL$,  $&6654&$ 3 72&&  lLmzzBl>KlLGzzG>'7#!"&54>7&54>2  62654' '3/U]B,ȍ,B]U/OQнQ>+X}}X0bӃۚӅb0}hQQh>ff#=#!"&4>3272"&462!3!26#!"&5463!;26=!2J66J)Q8PP8Q)  ^B@B^^B``B^VVVld9KK9d` @B^^BB^``^+;K[eu4.#"'"3!264&"254&#!"3!2654&#!"3!26%54&+";2654&#!"3!26!54&#!"!#!"&5463!2"D/@@/D"?,,?pppp@@@@^B@B^^BB^D6]W2@@2W]67MMppp@@@@@@@@n`@B^^BB^^+;K[eu#!"&54>3272"&462#!"&=463!2%#!"&=463!2+"&=46;25#!"&=463!2!3!26#!"&5463!2?,V,?"D/@@/D"pppp@@@  ^B@B^^BB^D7MM76]W2@@2W]֠ppp@@@@@@@@` @B^^BB^^A#"327.#"'63263#".'#"$&546$32326J9"65I).!1iCCu +I\Gw\B!al݇yǙV/]:=B>9+32%#!"&5463!2#"&54>54'&#"#"54654'.#"#"'.54>54'&'&543232654&432#"&54>764&'&'.54632  ?c'p& ?b1w{2V ?#&#9&CY' &.&#+B : &65&*2w1GF1)2<)<'  ( BH=ӊ:NT :O )4:i   F~b` e!}U3i?fRUX|'&'&Ic&Q  *2U.L6* / L:90%>..>%b>+ +z7ymlw45)0 33J@0!! TFL P]=GS -kwm  !*(%6&692? $&6$  '   al@lLlL,& EC h$LlL /37;%"&546734&'4&" 67 54746 #5#5#5ppF::FDFNV^fnv~"/&4?.7&#"!4>3267622"&4"&46262"&42"&4462"$2"&42"&4"&46262"&4"&46262"&42"&4$2"&42"&42"&4  R ,H8JfjQhjG^R,  !4&&4&Z4&&4&4&&4&4&&4&&4&&44&&4&4&&4&Z4&&4&4&&4&4&&4&4&&4&4&&4&&4&&4&Z4&&4&Z4&&4&  R  ,[cGjhQRJ'A, &4&&4Z&4&&4Z&4&&4Z&4&&444&&4&&4&&4Z&4&&4Z&4&&4Z&4&&4&4&&4Z&4&&4Z&4&&4&&4&&4Z&4&&4Z&4&&4%-5=EM}+"&=#!"'+"&=&="&4626"&462&"&462"&462&"&462&"&462#!"&=46;4632676/&?.7&#"!2"&462&"&462&"&462"&462&"&462&"&462"&462&"&462"&462@?AA? @ @R...R@`jlL.h) * * $ %35K.....uvnu....@@jN  * * .t2#K5..R..R. @Hq '&'&54 &7676767654$'.766$76"&462&'&'&7>54.'.7>76ȵ|_ğyv/ۃ⃺k] :Buq CA _kނXVobZZbnW|V 0  Q2- l}O  / :1z q%zG 4( 6Roa ą\< )4 J}%!!#!"&5463!2^B@B^^BB^`@B^^BB^^%#!"&=463!2^B@B^^BB^B^^BB^^ &))!32#!#!"&5463!463!2`B^^B^B@B^^B`^BB^^B@B^B^^BB^`B^^#3%764/764/&"'&"2?2#!"&5463!2    s^B@B^^BB^ג     @B^^BB^^#'7"/"/&4?'&4?62762!!%#!"&5463!2     ^B@B^^BB^    `@B^^BB^^ ! $&6$ .2r`LlLf4LlL#.C&>"'&4762"/&4?62'"'&4762%'.>6.'.>6'>/>76&'&.'&7&'">?4'.677>7.>37654'&'67>776 $&6$  ( 4Z# # & # # & y"6&.JM@& "(XE* $+8 jT?3#'.'&!3!2>?3.'#!57>7'./5!27#'.#!"g%%D-!gg<6WWZe#1=/2*]Y3-,C1 /Dx] VFIq-HD2NK '>*%R= f 07=. f D]\|yu,0>Seu#2#"'&5<>323#3#&'#334'."#"+236'&54.#"5#37326#!"&5463!2 <  zzj k-L+ )[$8=".un/2 ^B@B^^BB^5cy    (ݔI(8?C (3> #"($=@B^^BB^^0K S&'.'&'./674&$#">&>?>'76'# "&#./.'7676767>76$w .~kuBR] T%z+",|ޟj<)(!( ~ˣzF8"{%%#5)}''xJF0"H[$%EJ#% .Gk29(B13"?@ S)5" #9dmW";L65RA0@T.$}i`:f3A%% BM<$q:)BD aa%`]A &c| Ms!  Z 2}i[ F&** < ʣsc"J<&NsF% 0@Wm6&'.6$.7>7 $76".4>2., &>6'"'&7>=GV:e #:$?+% q4g &3hT`ZtQмQQмpAP1LK!:< }҈`dlb,9'  %%($! a3)W)x  оQQоQQcQǡ-җe)Us2XD\ϼYd /?O_o#"=#"=4;543#"=#"=4;543#"=#"=4;543#"=#"=4;543#"=#"=4;543%#!"&5463!2++532325++532325++532325++532325++53232p00pp00pp00pp00pp008((88(@(80pp00pp00pp00pp00pp0     @(88((88     /Q/&'%&/"&=.6?&?&'&6?'.>-#".6?'.>'&6'.>54627>%>76#"'% %6 27 2G f!)p&4&p)!f G2 72  *6 " 47 2G f!)p&4&p)!f G2 72 " 6* !k 3 j&3 %,*&&ր*9% 3&j 3 k!./!>>$,*!k 3.j&3 %Ԝ9*&&ր*ǜ,% 3&j 3 k!*,$>>!/.&6.'&$ &76$76$PutۥiPuGxy Զ[xy -_v١eNuv١e =uʦ[t78X &6# #'7-'%'&$  $6 $&6$ 31NE0gR=|||">"LlL^v!1f2iЂwgfZQQ^>"||||wLlL &ZXblw.'&>'&'&".'.'&&'&'&7>767>67>7626&'&>&'&>'.7>.676'&'&'&'.67.>7>6&'&676&'&676.676&'&>&'&676'.>6/4-LJg-   $  6)j2%+QF)b3FSP 21DK2AW ") ")$? ? 8A& AE5lZm= gG2Sw*&>$5jD GHyX/4F r 1  1""!l=6> 6 ,5./'e    .*|Ed! u & &%& &5d ))66 @ C& 8B @qL?P^7 G-hI[q:"T6 ,6 &/`  L wQ'   A ^   "  $& _  y  * <Copyright Dave Gandy 2016. All rights reserved.Copyright Dave Gandy 2016. All rights reserved.FontAwesomeFontAwesomeRegularRegularFONTLAB:OTFEXPORTFONTLAB:OTFEXPORTFontAwesomeFontAwesomeVersion 4.7.0 2016Version 4.7.0 2016FontAwesomeFontAwesomePlease refer to the Copyright section for the font trademark attribution notices.Please refer to the Copyright section for the font trademark attribution notices.Fort AwesomeFort AwesomeDave GandyDave Gandyhttp://fontawesome.iohttp://fontawesome.iohttp://fontawesome.io/license/http://fontawesome.io/license/      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab cdefghijklmnopqrstuvwxyz{|}~"      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~glassmusicsearchenvelopeheartstar star_emptyuserfilmth_largethth_listokremovezoom_inzoom_outoffsignalcogtrashhomefile_alttimeroad download_altdownloaduploadinbox play_circlerepeatrefreshlist_altlockflag headphones volume_off volume_down volume_upqrcodebarcodetagtagsbookbookmarkprintcamerafontbolditalic text_height text_width align_left align_center align_right align_justifylist indent_left indent_rightfacetime_videopicturepencil map_markeradjusttinteditsharecheckmove step_backward fast_backwardbackwardplaypausestopforward fast_forward step_forwardeject chevron_left chevron_right plus_sign minus_sign remove_signok_sign question_sign info_sign screenshot remove_circle ok_circle ban_circle arrow_left arrow_rightarrow_up arrow_down share_alt resize_full resize_smallexclamation_signgiftleaffireeye_open eye_close warning_signplanecalendarrandomcommentmagnet chevron_up chevron_downretweet shopping_cart folder_close folder_openresize_verticalresize_horizontal bar_chart twitter_sign facebook_sign camera_retrokeycogscomments thumbs_up_altthumbs_down_alt star_half heart_emptysignout linkedin_signpushpin external_linksignintrophy github_sign upload_altlemonphone check_emptybookmark_empty phone_signtwitterfacebookgithubunlock credit_cardrsshddbullhornbell certificate hand_right hand_lefthand_up hand_downcircle_arrow_leftcircle_arrow_rightcircle_arrow_upcircle_arrow_downglobewrenchtasksfilter briefcase fullscreengrouplinkcloudbeakercutcopy paper_clipsave sign_blankreorderulol strikethrough underlinetablemagictruck pinterestpinterest_signgoogle_plus_sign google_plusmoney caret_downcaret_up caret_left caret_rightcolumnssort sort_downsort_up envelope_altlinkedinundolegal dashboard comment_alt comments_altboltsitemapumbrellapaste light_bulbexchangecloud_download cloud_uploaduser_md stethoscopesuitcasebell_altcoffeefood file_text_altbuildinghospital ambulancemedkit fighter_jetbeerh_signf0fedouble_angle_leftdouble_angle_rightdouble_angle_updouble_angle_down angle_left angle_rightangle_up angle_downdesktoplaptoptablet mobile_phone circle_blank quote_left quote_rightspinnercirclereply github_altfolder_close_altfolder_open_alt expand_alt collapse_altsmilefrownmehgamepadkeyboardflag_altflag_checkeredterminalcode reply_allstar_half_emptylocation_arrowcrop code_forkunlink_279 exclamation superscript subscript_283 puzzle_piece microphonemicrophone_offshieldcalendar_emptyfire_extinguisherrocketmaxcdnchevron_sign_leftchevron_sign_rightchevron_sign_upchevron_sign_downhtml5css3anchor unlock_altbullseyeellipsis_horizontalellipsis_vertical_303 play_signticketminus_sign_alt check_minuslevel_up level_down check_sign edit_sign_312 share_signcompasscollapse collapse_top_317eurgbpusdinrjpyrubkrwbtcfile file_textsort_by_alphabet_329sort_by_attributessort_by_attributes_alt sort_by_ordersort_by_order_alt_334_335 youtube_signyoutubexing xing_sign youtube_playdropbox stackexchange instagramflickradnf171bitbucket_signtumblr tumblr_signlong_arrow_down long_arrow_uplong_arrow_leftlong_arrow_rightwindowsandroidlinuxdribbleskype foursquaretrellofemalemalegittipsun_366archivebugvkweiborenren_372stack_exchange_374arrow_circle_alt_left_376dot_circle_alt_378 vimeo_square_380 plus_square_o_382_383_384_385_386_387_388_389uniF1A0f1a1_392_393f1a4_395_396_397_398_399_400f1ab_402_403_404uniF1B1_406_407_408_409_410_411_412_413_414_415_416_417_418_419uniF1C0uniF1C1_422_423_424_425_426_427_428_429_430_431_432_433_434uniF1D0uniF1D1uniF1D2_438_439uniF1D5uniF1D6uniF1D7_443_444_445_446_447_448_449uniF1E0_451_452_453_454_455_456_457_458_459_460_461_462_463_464uniF1F0_466_467f1f3_469_470_471_472_473_474_475_476f1fc_478_479_480_481_482_483_484_485_486_487_488_489_490_491_492_493_494f210_496f212_498_499_500_501_502_503_504_505_506_507_508_509venus_511_512_513_514_515_516_517_518_519_520_521_522_523_524_525_526_527_528_529_530_531_532_533_534_535_536_537_538_539_540_541_542_543_544_545_546_547_548_549_550_551_552_553_554_555_556_557_558_559_560_561_562_563_564_565_566_567_568_569f260f261_572f263_574_575_576_577_578_579_580_581_582_583_584_585_586_587_588_589_590_591_592_593_594_595_596_597_598f27euniF280uniF281_602_603_604uniF285uniF286_607_608_609_610_611_612_613_614_615_616_617_618_619_620_621_622_623_624_625_626_627_628_629uniF2A0uniF2A1uniF2A2uniF2A3uniF2A4uniF2A5uniF2A6uniF2A7uniF2A8uniF2A9uniF2AAuniF2ABuniF2ACuniF2ADuniF2AEuniF2B0uniF2B1uniF2B2uniF2B3uniF2B4uniF2B5uniF2B6uniF2B7uniF2B8uniF2B9uniF2BAuniF2BBuniF2BCuniF2BDuniF2BEuniF2C0uniF2C1uniF2C2uniF2C3uniF2C4uniF2C5uniF2C6uniF2C7uniF2C8uniF2C9uniF2CAuniF2CBuniF2CCuniF2CDuniF2CEuniF2D0uniF2D1uniF2D2uniF2D3uniF2D4uniF2D5uniF2D6uniF2D7uniF2D8uniF2D9uniF2DAuniF2DBuniF2DCuniF2DDuniF2DEuniF2E0uniF2E1uniF2E2uniF2E3uniF2E4uniF2E5uniF2E6uniF2E7_698uniF2E9uniF2EAuniF2EBuniF2ECuniF2EDuniF2EE=O<01hPK<\3{~~<assets/lib/bower/font-awesome/fonts/fontawesome-webfont.woffnu[wOFF~ FFTM0kGGDEFL OS/2l>`2z@cmapi :gaspglyf _yLMheadb36-hheab$ hmtxb Eylocae \maxpl ,namemD㗋posto`u=O<01hxc`d``b `b`d`d:$Y< xc`fdbʢb l |6F0#Fnx͒Jqgje>"D>{EO >,"u^[[[jos_M%:0g80B.Lszðפ 1YlKWvest)Mk^Zֵ֪m׉Θbk̳26>'YҖjukZۺgm2 (4-iEkЖv}XB Y``c9ZJV5eY߆6G ΂`3| 6[uIpn-[pL0Lp;׸%8o>F8 G8`Wί"E^_=(K,FK+ybx TՕ0o}{uuuwUWիnnjmz-nvEEAAJ!*(hD2c%FʦEbb6$&7߹UUW7 tw{98m8bI ڃ݌7 SEG!3j㔐=w;P^IA;RRnkLS.)o8G([)9O,,AtS h yujZupPGxN on{ho2AD-r]u5e^dMX8=r5ͻ^Q\~2V0 o0kC qA跍 G< 9v`|NXWI:"'aW޺O=}k#"7e %Vs~-y$ŵXw&'q.n.EK#JDڝn봽7=|wL:Ӎ2vmrRv:=0P@DۓVZ7eOd7HMSY|[of'BL}ƷҗV^+{W=uҤ֦='j,| ;vAo=0q8"I³8yZ6Ǵo9q< i3k1%& uk {H}@΁W—^qԷ4;gg7Ny/ qPOЌL4q,ԇ"Sv=jL /UjC-woȍnj̮{j\ vEk z>pn=^=ajID(෠quF;э5֮s7 ;QC7U[׈yZIۘػ*!$ dⵄŖ-ˇ?{mf6po~mԽwoG6Moza--m#]?]?Vkzܥܵ.>)9NH%&T/ _IAxOB]8(.v)G=HPSUP>fFE-GGs|'?~zI*R|[` -V'ݙGP3b'\RI̞#n;W ٟDTѹb80^s6,rȥ ism15kk,}qWȝ;tseYqqC/0q|> 3W/ըsF"sIoAHI 8C„ w~@ _(]h=r9p! ;H-[Ifw;%=d꯵bmH)k=o\hEi 7i:-!mn:`[G]GE,;syH62ƈs՗:I@^\wOVõ<g?]Y{?qKgH[X&tdn[,Z!H6#=nݳ;OWUG4]]6ٰp7[aM5PB]?4P呂7o\!׺ߜؤ 2>8/p2h@k~ھB~a[r=Pr8SescF ӗ S#P|0z'zS)8aFBFE VrJ(EfDpU\'h4P jd3}CvfM}Zlf,.pj1tYj2lƗ,U<:zt[%Y!1vMfrc:_n"7zwvm zuidtO.3Ku =.#Cjn(,THu_Z 6qhhP4#JH%jt3M)#zzdt1Dn~9/ȋB@NV?p'r f: ;bBQHb$h3CG|#v2ydm)esvw~٬fp~DG r 0^XzˣՇcl& \`\8HHa IC?6:5H;lވ4C&\FjԬ,|MCݔ/f8ܮ2 .ҍl _/AkTVΝg ~T΂<`2Q&;XAW@@gj{j, suuE ֟:A 8,&ռ }|b0lFQ$px=4ddm7nru"N:O u^x@񝂍CG*%F>Tm?2.opˮ1r\T١K+L؜cn:8qyN\Dvj[ܦDy/*=H [0l8=`Dd&76tOd٧,崅v2+׷ TU[NHN8W|fG{ܘlT_Z1 8j `Ar㼌` h *b #ռBj0s$n^7w $Gɡ;N .A>3;My?zpͥΙ4aqp҃GFw|]֯!ؾbvq8e+)h.,U~4]h.P4s)+kqD2uϸuE3 V⭯ҟfS8/D]5ޖ*xWGj}l&klnçiPv'6#(%)>qEo6U+6ŋ8ۢlޏ> `Mn''zB-t/ꬱ3ik3 55Z 1ao|+ őm 0$YəOa1ag9up9Gת+b=H߀Q1hT]ҒQ^?s9ػ lB|4TNYBL, g#5A㉐=!7~=/X]WuwZW避[ꞞWd==Bm®ҏ΋v?$ E# L!7ط!TRRI4)H#l*:#H.)pӇ źRMB=ƅ(ǂ͵˥>A,_2%5pyn6/Mbt,L֮l+9QGb]*D; {PZ!*U1|s{"3\gGχyG:-nQg7`ԏ3xAx%ÏUXMZ&HX9>osGa '!lü|EW-ebbxsY06E>)VH ߰}V=G~Ykh/;ۇ0{4.c\h`5 FA5Tg[4#So3yuy=<'j{ hNk6 @1c/5 -T:`YX]g~ilp!e>1x06?eoAsb̪fyb3@B߂Yq?;m)h4skP UfW62c>8F(t*GC ym srp? ICY:ϻ&͜99TY-k%)@|FFh9*(RtKǻTXM-IP.%C"?,+ˆ= >tUgQWw#Υ7 ݋[P ޮ'j7 7̗9ZI SO4YkDE͂B~`Ig;mu֢zSg)rE܉=mK9ZD]4~7߉R6Hۂ(ji!BldpӜ^zz拾gF:qꢝkWl/СuX2rTsBנͫڂt}}ƶ_5 k4 A;oHLϹ)z.quAzyxjk5F-@lҙcڗҗ\6= O]9/5ڔ볝\tOCT3f(i ]w PiQwγ=JߌvGޮy[[,Et&QocÂyb66kMK|֋$Yz%P(^87DrK`%5.: Ďx=mnًm]Ю&2G(-@Q7xu3%@p~нt S]=)AG AVg; *=$mz -|_EZˢk<5U5fFIj`=H})0~F,"N6k"}ṒkT"$mZPc',ϛtzՅ];+j +NG>K#h-zp6\;yb~9.m \=qrqü=fS 6u(؍3#0  :Nz{SM]"`R .Cr`-U{낍znq tx ic+Ԛ:3Y㳙N*aVP `1Qb@fc^X9̼ܶjtҜY ӂhھ3 ijs+\8Tvi|Q< v߹c81-t\16GInJ:̇hX Gr+4Hjv4l!,cC54{ٱ4dR~p*;9nC%d}dA 4Q8iOi TgdulUSAq$.j6U;MǶۏێۏj9JDvAFbmLOI=`jf:>IǁJ! 6Txưqn̓S9ĀM|!ґ8X)hͅͳ(,ӌ2+lD3Qɕp$`Pt[ DV2opo%xZ)n:p4N)F ՆtT7Mu`8P*r >(O^tXi(M4! t(>hcU<@ܦç$M'(J׳Q܃<8Vjj7P?Ͼ;_!Q.h|:B)Ӓxܘs_d9aN=.WO.\|_O&tk.".Dp53͓ 6`8IuKjk/wiUSusUlr ̥;ѠMe`TB&n¦\ g2pd[0Ovz I'm%41}@€:įZ/r @1m8_.WRlv(F5Aս~]*@Qؿ VgM܊:MʞQZ㖵. HfJwKIA\f7zl}5VzG Ɛ u̻vߋaɰZ(S6W z7ek[j #6[6iSڣn@d`[}i]<{bN&kG[Q`Ek$|'GOR4: yX1dhz3TʷL-3DG%Z b锥3I陌R^cy,3P!@ieNq좀FS'}@4шÏ~*T(PY+=!?}>Ю+w*3Usƽ i[9a\uWeY5 +,iK\ʚe<zKC&Hdbktݩ7!;BTR@J vKU8bUH^Q;Okb%[QHO 9谉0r0}U>ʔV5^ܵ}ecFmۈrqLEl "I5ڦfU2cW+O, MJ񝁧6y?*0&Nݚxq?)>e( @qTVx>sjAi2W@WU{LГK^ A'96&E[ h8J*X>wyW+Vc*YP!3 ^ %"`ɒRcD@2ܵG5gL6}*Xl틵\"*p9B4MzA65L.2k,0^>G@@Hty Z4iepWtAh,8<{9ȽǷƶwZOYE< Z)t#/崐\F7ʔB>(&6ldit/=n>?&s]@Ν0Z.3Ĥ9MG6XIJHXa:C}3 6~>D3UO>[vZ_}סqN!ʃ -W S Ha)Y'lg8=`z(bwvi:2E!`;x,Y ߩ =Іj^ǻQ^_Yy`Q[&aYQ us0{&m胑*j)TC$ YQ>*P}H˥_7!n?Vا(sOGRBXbG/*󨴉bE("lrʔ$ΫdJwGp6 P/#j mtCR0}Bj̣RXvI>(j=:ECtV:O[h[5"uE3W. f[eܫ8P)e 0Rԁd.ُ:~}t<)/Q cOBGGp<"-G-b΢y3b#5RPCk{d˚ ح6d]LdLu鋶 LCzӮIYs;A@*nyڢKˏɩEWeMâx[*u -zҗrizH> 2$ =_j7{!h7Ύ|pfs%9LAQ,2WH(EEug&/ $̃cm$0^(K_ C]Di+/TRhOJ?Nޛ j; 쁳#ISm0Q4WՏ5_fd "0ԏ ~D}R'k GK1(_/TFȤ8>Q8m.mstÁ-`wZaxx";ͯ2o2:h*4X-hW3snP,ɞ "ޗ`7Nw8ɐD\ (,f鄝 IM|؟նkÿl5nv xL/LM}ݻ/Еum.umd>Nh&kԵ-h# +qs}v.L8c|P=/2,T,\fxP!:*}uLvyj{C [ ^܋lV͛CZk9~_+2_ʗ7%\~NVw|:$^fH-œl6[DniD>=}4b=U{xCu:6ݨ18=Z%ܓ&?i*V߻"z,K=,5keb PÒ}aM)dŐ".Aǝ2AnK% %7; QΤx9: J's9:(w̿sltWN~+lAڏm[w77n\W<9-N߹ti?";iw[;LvP2zrgkcl;#E*b8*<~h!:Q@qӼek/#@wꪫ' r*2_2mppm"Oގ:wFgRۜ{zh?U_3m3ؾ)[_./d jG̨.+{7g|6w6؟>d5;{O"-<+jaW22pWagy6&BhI2%1S*[ϤF۷%nwT QĶ!=00!dP$Oj!%l6bd[6,6`^Hfɖ3V ߶[8|\MQ lƜYxj?KO3ٲ%))JrGƼQ̼)2c"^–;@Y5u!'hVGTi M9#(ן<4s{@efQ`Gy 8L"KB3+fOx_c`= C@d-TOj+Jw]f1򉠦J -L[,Əvu&}z)AԫyzX߶"MWwP-蒺Mrk 44LZvɎiZcKU/Nja,a !"Y<]K-{S &,- l5V(DSJZU+6UԤ)jȀMXju5xkOxkCf>v;oĂu)O[H%rJrZNCQn?|x_B*kgYn3:B4WͤuQ.RMF2>8G3J<ZŠrVŗY~P9w;< +iչ+5DDhp,;ʹjfƼ=䵫9 3Ƒ,@('h:Ƌ&mTkPq8󨴱!ä.#Q{== 4V#mx _)IfC#yFN uQRPQyQ u:]g*OU֧c'PfՅԭںo>x,uP^"yXdci+Y_'z6~(+q$U;{S<^xGn}ouvXt%&3`.:gA'%O0j@Ew:мjdqge4c&ūY3]*tI* r6% &AR^3$p,a2GÇ}O>W476Ոn7[YNqOecu/=cm:&4Co<}iAO6ăNYm:̲f3J"MK:Ek:e-O7 6;kh}x?1/\g^y}7|4q'7o^ o.Uξ&d5v 3_P MpĹVjlU  a^vqǹ܈\?虽쪰:Oob2AL29zXvQ VUq^k%@$Ǡ#o}TscFW}$yF$y^2:l4/maԽ&oL3ѤNIq!#ĺ~N>0=ٞbDAw Oh CTѡ ֩FI.M#Œ3ze{EvceR] ecsERn`{ahZ]'3W0vIxV[mQ8f64Sc%WrF.aR6aLv0n=,L ZBU\]aJXL7e銛 ljQƀcHj\}MGޛ [X@"WdNS<+#(;<"w~omyL'DpEbY?~{{,o,RD(JbC>ܶ_dՇwffsܦk3ގ&~L =$&Cyd"le؄ tQRʉ@*΋7JՄpC#5-Vgo !Gi 4&NpOo޴խ9k'y=JS4/;٬vY3MiB< (Yuv<9_m@|zU _<';^;#b})Kywno%6,i7-+v(k6ic"Ym=t#WRTmR[nafʭklW޼(IdrUU5=^Dfj}-:$rp( %\x+>wW؄ Ou gq/,W:˺/Ɏ+ y+&Lo) @[@exbiu;:Ykw[50x:rsS&_Xxf[bT:7ak}Yx<5r'(>q-proɴ2HU&I-Kmhɠ\YFY`|fM0]63Bw5%#'iH(8[*k.Etc&aNmVJQKTMbX4?#4c왓Q,<v5?J [Js'ڛiӒӇC>䶵hMz__m27b2HC' j ,JN؋ LuqMZW7'./^L^DL%S n4:OW^of߷Rпlq{\PȖ叙y4*xBav kx@͗qY’.3HQF|:rƔ9`P_SRL 6b|jAn~<DN"u0Q\ Wuާfn6oH玤N N'S;)̓vGvejOXJUPsps<׷4}am}SjTYCheubm20~t'r3:_H7M笜YrN:1!-z\MaP}l&pq6*_UYIG~O_KU8FT{t( av"CBf_F;QnqӳB$MU*rg,^GD,IH:7FD Jlk6c']u;& FbFiB"&͙MykUP\M]J~qZ JP$5K?1/,# K:I)DoY:Mg!'S$M }ÊN~$Ū3wm6]r׊sO^ ll 6H{RvBoLg(iZhVd˂]w!r<3H/7CyYN9Y@LceY֖Y $rz2dk`8v1gI1"0k~,c$ tyh2 ^/sv骩m{ TUM~{WÏɿmkUٹ?΅s4a:ZDg;@Vם4`gلw]x/goLvw'vڟڔyK<+Ǟ~NF=ΐ7.'hٖ}t)vSK4Yԉs]kWN-ЯK`~kR-^"9BF%`%5S'$^\o;NKM#_5yr֖ jKgMdn7Y n NlݮmGYN̂09E&WKbK|ĸJﱵWr{ݷkQcZ\2R؛Oۡ_h]Ըy&܈V;~M/׭n߮>_[./m2A qJ{ >L M8Af]'vHTUOμŃ̚u\eAb~u:ynwݥIٸ$j[QV*b 聇nEC*ZɭEo?҃&k=t#=KTrfWQjJN^yٔQW/Oo^rrj;NM4I`0wϚ _ߜ !Iouz#3tzi kjmfL'k ^9uDћVnǼ^߲rn_CSC "6Gi1#W0=p']@8z}Q/ F"̒ &=lFwdF3v1FuDFYV'F`.bNu䡁 Vl|I׀ɷ*~)Z*!+uQvCM/vԂ.qcYs, wDiN6 YrLU߲[crcq5)V!c031;B0ތeG͝UaVNUe (;;|d;_TA"?/}Mi ;]wt7WY㰛nNgh7EB7_RE=SxV5P sm`ržYazRat k_F= dVٿgCj߇%T}[n.Z$Uq:ۛ*<ggnGh (U?.b=Ђ z3ek 4 v^QVJRT+N1Ey D;YC+dNA݇n$9MAyhpJ=^蹭%[ҫ{\r8L^Rڠg8ޥ~ad8U=gP'1.#l =ΑѬzR6np~[EfnG+y|:fE˻~E׶Mʟ]f}jE3qMOϚ{d?]uU?#/;s~򹃫ؚǀK-6B'闘̵Lgcg&=G' }S唩VCIsyRCM)rd7&UC͝w4Nsca7fl]tTwݵFè4ou֍2B>#o7(J~jE(EM-P3/rQQ@Wヌ(QUm)!sG7ꜜZ4 …U lڟpd:Cce's2E;u*'$]" c4} vzyDzɨn4bTF.b4R#P*~6tjtŋdۥy1 W!ןD}glْW_A4R/u|]P Ǯ~:t[94{-.ǀyA0 x6-NMvM$c50ghQ61BnW_us;BEg}\"\aQ=#ͧվv1ŊSY(R.i[9 JdQӜ< 0@BNya)j0Vh2쬄sOeP5>I~1!-A8agjNq^76e/쾇ݳRuԢZ&UEJlpYo<2"_:979f阎.! hI4 RkCjGBu +btQPu/ А1TZ5V:+zp8jy\ST!zru8Y۸$ՅFuFY Tj +[kj`GŦ+yl֦Y닍4R,+h")=U>yV˕!V]Z8G_ jW pH ֬Q6P8=wQ9]W809{z$5p+҃D%ꔒ-R`5CbJihEI@xQ@-Jhnא!7#םY ѣX2MnƔi&#ix2nB~#}2n)Ͱ.woB( Yk"5nG PTF;NQ@(奣$%l7Q?lRPfB!wҤJƝaîGٍJ vKgWOӬL_$ta[!i&M>JLBfR% ۣ6!o "$,J{l2"Qo#BQ'!"# H:. o <9*a$ <1ʔ/- ᪠(J&$ f^o ћ}6,+7 g2.;H\Ұf,-JǒEw\Bwjǎ>fM..klDj.Xv}mW\:5֔jKضV3BS$l&ijDYdIO~q!rW)\3 H.iT2R ˔D'i>-(*Qoc$`g#Aꆘ0ߨn7.>x;w,yc?Ơ36I61q ($,Njwܴtr(yh2l{s\p@ 5H?]JHʽgIhhh{ ef zUs|+DWxst -}"<;p> #?X;$}upȖow/&ν'dޒM-3g֛떤$yIEuR ;5ItБfb{g-:6ާ>k0ڹQs.A,1xBU\tBBA= )~3.{ҍPa~OBP:sQS=:Ufs1KɗM @PsygQ')_@\l`|N16fpp3,Y,wZ1~טOnoy'ǗlfCW?Ot=Kz (UQCdPn.<=y]Sd2KZu{d^&P^ qhEAakFQ7><~̈^=QbyAsX Gr9Aժ` ΕMʆ돱, ,)4KݑYZ?0Jd\;|h~ki?ev宰Kv2)i9Jcj~Uivo V޴ʍX~eCkˆƆKڰZn߹ZXkon퀭:h7ΤG+Ș}I]Sfn"u!`*ئ(E3 M N4jnRXMGs/MtbRS{i+-v aJu3Z/WS9ZK]>Ɵյ68N^~i>v$$&x;ό/nTu _pdR7#ƌ]Kqk^:J1)Ǥ5$2 ;ʗ$X[Z(ޜhJ7*%2E叙#zg{hLK,M#ǤOkdւ nnVZĦپ[ȷkV%ʂ:@S>Զ}S~.vm[kl&żVLsHuvM[2/z9ն.S<#y\6 nGfmȬ@xʃEӻeiwXDv [#:bL_hkm[-NٌEZ~emM%Y뛮%Zbth%:9}6xn.^%,uXF>.1^xoUQO7}\1B,53V̒ׄ'Ōzw67Oi6o_rUqp,1qOi#*n;6F(Ny'+ܣcTq333~xh4[ A=,Oc⋢rx{+=.zfGA=SMϒk߉kѥ1|ug\==j=$rR3, xٰU`B!"LQ Jc@({˯F/43ibM6A >A 0Z( zcdI Q&Z+8LTW& aQ<a"*FS)1^T}uМ5`-q'6nh־ ڻO׬%3<h%rܿe :b VY zlN]6p/oyiOc5xrM{>_ؾv5>9Xruʓ3r0rdet|¶Ld_*5hct,g}Wi\<csp=iv6l۽N8E߹ٿ}aq̈́s+Wߚ DٶD^؉>[DPjq\j3th d[)7rhUW]jiK97 X|/>g],pK4YW_ځ/&-.S0+0:AH4bc7o|~۶FyWub^yV{1 o8S8#(緥~w޹jҢ6ĉ"h0PT u) $`]+E:Eq؎W7jD-7(3uŲ{Ql`Y$OCoɊ= ;h>E3g^tPeNB*ʘ!x % ֙Y}IK %epH ZR ́H+!)ʵ * 1B1ˬB`> &)ç & ),~)|H}ؚ"odA[aO:)禓GwLr(yļCgQ#[UN84~c!yzݰҔZ3;zss.FMؾ1 FSI`A 4QByE軼a"OiPSbnByḰXKG`SVЍC/|WM߫ʪkjv! :|uQ(UϜe׷]N#h<;vU{}fjH%X&? Vu~V~j6A'MYvM!GP۹re紳 Dk/s)kq8vI8#x G,c?;_?!syٯ3ηw>w`||tuP~IhhnE/&jy+ٸuTS6ooOoh-Np8ޗU2$u]v$0$ c ߂ST6hBڭw.ci[ҙ-: g*Khq{FA lW?}'MR~<3.([v 'Tgx4JA]ԧ?21:yAc4Qd8`b4Dlu*l.]&' NY ?_EJOG#yn ^TA/UB {dȎU}xX1r_i}~8b*=^]W*s->KdfgQU(s,ZeM\]2)1 $l!?OnG'o~P]h꙾V'E6Fo/q+Zj z*S`OƁ| MUa{o03g}(骪5J8+5OOWU$# +Z J,2Yin>ŖXp 'E!4l񺻜i S(߁TR_ʠ̈́$^ŊMOwޯ,cӊф惞\I`T)&IX3W Sv$Fݸ{e1fHțaw(Q \9u\Ox7NЍ%hۑ\WTT۪˻UmʂjrS-kU-nE*+g]4u,}뮻mfmsMX9UuuUNGQ>+UUG7O(YA!9ې#I%y\gf6)+{?DC<Ukmb~c|T`ᾮ& >E7"B1;/ ʤA$vBfYtجG_))P@ p7:z3hfa2 :v(^&m胍ɛ7Mi(&+;vv&1S {\ر%W[7mnYm}5qoqQˊc^nBq]dZCG6\i9I/`b}ޥ75!parHٰ) |\n@s؇Ӂfs޿jZV+m#~xd Iq|Y;$`kG^i[يFTX *QlN+xDՑ -ML[J ϧ},i.F,2"BGщ0~IeOÖ[咛o}Ta>ľ/oz>E}ʋ `vz%5QlҥH++l6gSÔ|Bh8ڱt}C_Ꮐ֣*=d[™M{WJfw.a44D o*VVA8sP-Ҟ}A" @"Ȥt0+||E4N Łݓ1 9)*YѶQoP@ J2::b?2Hϴ3Y_nx[b¼Y1-Mҧi.#?\!Бck3Fʷ׌8'חed($lٷYS hC:Sli,ɯ䝂Fi$柌tn_=PpT ;(3V{ID{iEZLI sҢc"3[*8#^NG#c`4cCf4q&E:r@B$=DMRI'04 'yP^?RxS^3Ԡj"!psmhg8G41$G>LxNy8.'RԇG@"LC8S1I.uߣBG?> sj6خ0FƆ{17qDXSJRʳR%FL!sM(~l^0av$.XV]Υt:Jt1"GЏeC7aR.#*fE|[rX\pM[\c3`Z*؇qfPW3f!u61SJrmoXQN[1c_.ʁ 6a<K#QGRs7gc7P߀sޝtos02zr {V{n͕{6>]yTЊX(|'׵h%" ׫{i`./Md!]Ђ[x C9w<XcpKCabP#lmПur8/^W`Mfs (=TA{r \X݃f?8:4gdYc O*EuDmO[, fs 6W X6 b%֢Bۇߕ"l?YkZ&|l !\I8 |`&11P/ IK)){@'ZYhv&g @6` wE&yIIJ9DI=Ab̚|/HuD@& 찇NQz^~y @^,, Q `qq__X(.l{^//T8 c#*bi&OaS l"y$&̲Ds7Pu =j\.Qܑ?҆|rz4ʻ}ǃ ufůsfBQBEv^M94$?8<"<.L3jL(L5FVw߽wpf.p©Mnc^8(Uν>n.Key@{SF׆{`| 737KݒpȕHdQ"p(@dY T cTYK KJ+VOwdC$ZѧtHοn w? &iG, 蛙|шD>yA-@K#Lҗ|sĩi@3@gM/<X6t\_ey̺q*+j/2+&Z=9s{] FlƎp7@Ŭ7G/Ð"^9M4%?}e %Ci*fFii&8{L?pG[mXګ`dl'k&cb5ncd`A0g -X RY< zŽU-̞w' v8 jBXV>גk5`Y TTj,OƧ. fء6;*;ZdNywM" 0ԈKՒ4D=#eLpEH6_-8(uwʫ%S$#0zޓd%NQoc[:@~ƹOqS>P 䬕}Ǐ{"f+wm3;a8Zx 9a>n  f|}XϓѸ?Gc"[yggYQ@z䛒K="aU5v:t op I+' /NAO٠#HzK/ ]^z 1Q80)]h" +_TaU8icm<ǥe}d@ųAc`h9NQS&ݫMXKX~ JЃ͠X)=PԯuM7:u&eVb{u+9denWjdSX 6>A8ozt+$5Fv_iN&,>V2 7>#_f 0ZҬ`>&$+H кeH!oڇևhN+?]¿0Ck~\,?0evgφ cuH`s$%C_V@DbQRUͫYA$|E{Z|uaޡU_CSnn "k ǥESʇ8A 2}桫j >M_dd2/?(Jt5XOwNn r>-|<+> z?=y W~><W䯀\0gj[yc~޷CՀCC<9OE2VnK+gj2*j~y\'oޱL+0+1{iuW7*voܨUjFc=|LƦ~߮e˴P9i̫ˉ~d 9yr }uf**?8?'a"U[/͑zyU@ʙpy=K.۳H+9ې3۽RNgQ l]}g+Dd3E d٠C|="猖D$1K/%cio&5OpFrrre+9Sn*YLID##@ fq 패a#'b}=I\̮' Zh|,=:=(T")F`EEVj,Q|FQ_/a| 2rKbIxX^bI&$Jt2(i]NEWؗ,ޥxVcmpF&+a) z؇d=>>1F_9=!~S`;{L|cpn|U^;-.߄m";aX(Ȑ1|YYz_-^U{3u!C+Hn9d>)Ȯ˵UIͧ@E$*}*~ V9_XAW6Я5DT@BlEM+Քd0X v mRfFu%Tc^*-q)tS9岠G)AojYJ}A8I}JJer(Z`Y~IrXimf)~U(0$(@z)p_\zvOw^9;]WU 5c(? z?ܶg'hNrG]ua!z"!`4yp A72E{\ G9 T2 ftBIQ WsxnRP> #G\(:4QSR 7~F9r@ :bQ&eP3RNZD%&J ~2{@1HrX/SV18cYϷw5m4y /T4"9 |O"u(M(֍nb.e1"r% ӆڠgt }*ݶ7DHBlg]rt9m72Z.T 6kuuN^=ŒBaF_lcY@2n6J Ea (z6id0[\IoھfЅ<jW}qG9aM\WWr!(^k=sF-멜 jH NQkpè],/?nMb=Zdy׻pQ/{B5T)~ +0cы[pkM[J%~uD.7Jwuw:l{ٻp=[amEeĉuB=\,UX簙ŀb\CӴq 倢#ҤZa͍ta[;OgxlLl {]WlwGO܏z a5xsbV3wgug=N~%8wo%q1c>(G3J&iJtX2E4} {ѯDVV"oN`4~[b1BM%CvL|"0-m}Fq$Y";(:jш-P=4]W im+wԀvZ9Zی|d涋]v8Uzxc]NnSz묝-'<ShC5j<Ҕ {=.t(F~>WZYfu3 i7QKT h2 SF}R&U*0, 61*ap2Հ::A/J\``AI _/qZΤoޒWz]aГ2KV@o/,hZ[8FCwЗ<O~pz7Q3;{aN jiZC1jvWqӰ^@ub w+#!δƮ2_Y~t$ّI)s";gZA IeߔZ=FaV;vkuvfe[ϳ}{XOV `^B5 5յvvNNyJ>)M`h3ͮsw׈sR7mKWlXu8wNYok׬?޲<;Y(6.x&U8ǹՓ9G̯/!?C#Fl ndB]]yu? y;x m/1HB D_A//Q!;tB!Ll 1q]ee%]/+ 8{k:|KVUY3i$ambAl]Vjoinݮr.xIA->9XhJf3UVa1s8ٗ7RmDC1/Th&Dc5[O`LoFE &_ugKy%:jz%!W`׌Ot\hԆMKMgZ" H{<ܲh䂥3BNOsimM6W˂͢oab x+@] &m 6bZؑʩ;G_^W"Z-FE/.[XGe#^eY3,1h@$NE `u:i4jAy : ~% |8@0mLtJ<,a ZZQ x7YfK'_6=iV;h vo8?i;ZWdu.;9 _H@X~w+*&V݄0ƳG3y&|fsGjlO8vN_Z?dy1BK:87+UZf{R[$Ґ&w(T5!=.MdnEk2M =2Mt,uEFq7-_ h᢯!ZESQ=w"6xoגyyQ;aZ@dԋc?ڭ% <%]C^%=Dhtw 2}Og+a9g5ԸA~ij]iXcǴXmŕc- kU¢HQ .aQiӍ.nz ~LC}SPaa#Tf-V5K-=?QUqxl#_X ,U{/~|ijQ?iځuo'?<]~dlp@`KysMI8pj 22 A8_;ͪKpAu|Q__nNg)!(NiU~[^T VmCg-V祯̌$eEz h΁v@bap([Ӣ~^՘)8oy#km>-<n~"5 > `,g0}`O1k(O1FN/2+lESs_*3 - D[H |$>h^zN R % xN!+ސ_SRCAp4Xetf+XO\7뮋/FähZ, :oEJRb[ hX`l @6)?llGz0=,El#;BcY[7?6s>9=1, ?䟃"zs`<h\Ȥ?,/gyLIhkh6ҋ;^ ׮}|GioH'anCҧvѻKNuu9/ mBrhSڱtb9y97e4O1 ĺb.yp vY&k[j_8ӟ籺\$%i2NC;q*O<$~J>oIzwm"8#e"L :R4pE\t#)_/9^\-}\_r9*GBpH~}>jƊOf/aAl}ع03wWrKDoSB﹄E;N#iQ"H܅ :33#^bZ=.* t7 /lN3/]#ԊYod/2'a-ra|ƙpg+}C2ٌ,KKK<]`mfkẔ&ˆ-NZhn;]-_TDךNjڢnNO]eOȽP4]}iCS]I_%VuY[ 4doD:9a*XP} 3FU. !nS`9^ik3XWG sJAyx4͢}}4WNIk{+B6c[z=kKLw|c\k)[#^ '?'xP:̚wkyݺ^tZ&gX^Z<4\kr|UrH`4͇ >pklw*iBU ~u㪗K:_m-\bl@jGC1`Y*IbQԟ X=G,=i[:[Y3 fȏgY\.۸EC铞|; FS[Z|QЁ> Y`-tSkESI]Sq ` k:/mդ7);psk~&*.(O^ްoPTQ1j}l~e6w댂NèZU@NfIbb0SB4TVq5H `9;Xed$i8p3!3@7f%St3w(7f*ojB(%&4H x*LTB<qJ7;xĒB1u9hԏ0P7@š!Ov)c?pY"h#^ކV!ю@JI+h Xjȏ3n AVpZC/LU:4qaEaa. `M18@ a)p#`DIqhފո>IP!`6N$Or[FY-aMz-JRƤsjh642@ =?4 yioO.6&@ƪ8 g/"*,vh_.@ku-X+v& N8,s{YkUCӂv#tᬘVf(:fi 46/9-ehtGS&T#h*zDlB J@]BZGzղ2Q\g9Fc6i, 2FV;䝎+ ( S@VL)ݛ%NV :aE(B?M'8iѪp|GA5A{z```]wxBaU&$nunw/E!ltg6tF^`r ΀vMs²=j_/ʷNS\ֶBrgUX49m_C{3 SjҚ=&@ h(6UCZEJ`pj&=`ZJBsŌ aL fɤee2[4_6{A\qڊ % k ^qTUJjZlpUHݖymĠWOY\jY`B xqz0 `4 ?1FQKnEF6Ȏz2zKg,zBy|Dk`t鳲T9 vCh hnBӺi~l/tkck6x֮r(rXc7L)D ElP{W(@*M1G3Q_\UܶeIsP( p[Ym\zipG>6o|vݫȃxHwxIJQ$*c|ZBSʳr_ tB[Q́F&FDǦ ݵ>FF^n4ĻHdZg03LE-6tmYQy[n[uZ]k]O-\JXwP4Qg8vi"3bN ~S QK.B.S(Wb d'~LYR4@lm$/kmȕX_51 isQ u Pf`>yIt/&NK4GK at=K2A≫ l6QK'? ݛR:!+ t³BGw$Iz508;6 ob-b!B6 uٳϢ) )egKY@\͍4VB}f$9zx+C#…{ i<AǜJ=żTgյ4kB(gjt7Lp:d<ÈSo^,齺S v5ku&sQ9QcsFlǜ- EЈ`s5DrYuo{wigamj `Ihf܄vSWzM?6YNB&Cm @SY:hk]һ 0b_c␾_]|Ik:dMZ#kv:##^55ZO]ƬNgcD#5XJxb[ZBPCcHTT 9FXe*:~gbmQ(-D6n]]}o #˧QA?W&Md8qWаcۼIS@.js1 /1 Ņ9l\>$6eb/_SfŲ'{n,8>;lO00-q`@6m5 zԡwգ2ӝX㬞VKuycRT9|b $OmkǤ%̣bgDܣ/</_ʷ_}~PDx5(߿|omC٫gߤ俾 F~VYCN$mk/4U9'(h, 6qpiĢU,i8hxk#9dwz-]|VٲY>rI@ڒ\0׷˷D]}JNJ9 W.h,cи H%,g5Px j̭fvU\hH[m\h5՘;;9i6_Q}֢c&;ڢ19-}>WAb .c)In%UD>,/h021:AJ1{+[{q`)~jocGj1iL b*idS!2}5ca2Zldiˊ9KqsTɴ; ;afTU>%+kbGYjQ,VCj)[eP G<\x՞[]jt=~'} 6*#A8ϭT 2 XbKpDZ(׷e!?x2K-_ȥ 5‚Ap ~Uj,{??Z/go~ڒ[ "m'N:La: hx>,jQ 8;Ѡ;_+BU۴}KPkj6uO{{iI= ?s~^X@,h**#Q԰Q3aXHp)Brk$,1J=$_ߥ9$t0us0(LL>(U3')˲X|bk{.$#{b*M 3R*V.+r?Q~{3FO]j\x _b}*JpPh=->"WT>#БZ: a^a"/9$3yɘHy❕;/)aPp-YVtEzk;KKCm?9 iN_u"iS"bPɦ˿ w:W(x 7(cغDdb Q"!24: nH%Ux;R<4~:wCr\32;^q]9;ʉ4q6{;-g*{tGwGUe{{7f'3Nzhw ahb(Qv,(YZPς sLt??0}s9eqr>rtA/;wS@ʇ*]Nr J=RҵԞguH(-]RR$l^ }{n"<̩'T] Gh=:6'cğ0J1HC1TOk0q)}F?H}wÊہ 4i؟qOm'ێj%#=k3:)%ї¾袺sql&{dܑxMJfW8O  %ET O'%_IhN$tϚ"58>sdO2~$3џ~烌VJLLLdRJjˡ\䰼N1=f21]8GЋARyã[f jSGZ3GZ ] &D g`6Ko$XL ZU}xRy$fsw,J6ؐR( K |FKdUX:4ri8Je~YhO!y΢R>zVtUGVw<0v&7TG8VlƢ!;^8OW/&H#LD90((ѓ? a)Am!L<| ئ%\ÌL4⏕`n?`VWkhb+iŚb%8ti5@/th$pK套sGXh%bɻb/u5K:`Ěcbֈ^:Mžrݹ׶gY5e\pA:K#xs"Nt;f dBC 3vDk/U1ղ9GsX-BC<27ǽ M.EguL͋\yY6{ZbuyE5%.wAP3}Snc ez52QYͫx`բ*'/ΗCi~E'`ciE*&9ҞKA# \:+/c)q!r^={pn7\ݱdq;zkڗ,\Ր9N.N[EZ4w^/<4z29愘+GU=0R= 9#}^)trgrt:".^Q~;3ʪrmNEE@~}Pf\tzMբI`/81iSNMPVv<_aO6)hNv9dyXOJA1`SNF 0d 7`z$ 8g0: aї Z\f0< \oqg~1?8`|l"[nb1 MysB'F~ZbvGN u_f͉kE/˚>6D٘HN T1P>GO6g\=WNeqot#uz:JO')%A]4QWCMR& $%j¢ 7Hl%GmPPF @9sBM\+,u`4cNZ#,U̥.aLQ<4I&ũ1@aWN]P9h^^=T0}\$y'ѾY!aED*nĈ\nE*eS4OpD1Kr2B}qj1Ʀ/T 78KYY&駵lWSJ9=4OG:ٝf+\*Z8Nʢ g^@$|%-ϦWHM VLR:/QJh{8s*dXJ5`j[pk&UYbd`l&LSTr@ tڞ){iEڲZw:0Th &!̀\V`);^L1C|]ߢr.-8eu J|W>RNr 8xA#b+<SfLM6e- !d#_ԚQ&qqPBkA(#ZqƗ!Jpl"1ײkIZVp@?-=6Ss,e:3eZ5R9+7N9InۇםXgCSٮ嫳lmu ,3m9zOPEǰB^rF&B^mc r4sͅj\g1H9T1rFBCZ0JPhwan]bյP5ނGnWgkuʥC?■ͮ |@-^%;x>@5eyAU954mƄWbp\!,GhD" 3! 鄛HT\6H8`9LE5tV\){`{ ꔻ@`N{9瞞ݷv5ٛ:WnYu?={%14*v e\{z?gme&b+hP9B{ OQ,mճU[`l\5zHṽu=`zrX ~UӚ gv^5y#Q(2'}CWKs륊O67Րo6kCD&PS㯳XNoQ5\8<On}թNh f ft+x2mS48vו2 )ѻ$:(Z1FbpB2kYcÐQ+Ꮏn#4wݩ/+kOT=#ʶN= ;33Q @&.֯ɗ/oD{ L=aMM=I;eχ,'d(E5^BK1gՀbAtp7oC/Ҳj8QQޢ>”YnPj.$Qlw[Dž@>|rFR=v?$ksH Lk꿿 N \|D gC ]ݭ~wS$cwT<б|"QDRMcjId*Y N5~wQHպAk3`$0 t1B(_%ZUh*\TzR׋PyRя9h`AsdӬb ဟRX| NjhZ; 'h0{*AZ+ehȦ`<r^PHm˄V}TWkO' #gmkOW.QZQ {p=4A6 Ҙ‹B3?#9Db%>OCxu'@<>W8-{j>9أW9.Yz&omC}s1e5\Z|犩] C-`.* 45K}_.]|[NIwzd 6?rp%K끼5kqAgZ 3g!BE RǕ>Cl)I]{km;sZ=-Cs[֯{l|~󪧭[OVƀ#@Ik<I{wKk[V?ZE?oxtϥA E?PR> Tk lR"7(/CmUe@$8} , a[ҳxq^Q:ZRPjVu t%n2f9ر]7~,Un6c6:gѫ +-.?M&fv߱s#zVwq:꙱m۫۷c$_g)O&&\@bd34n'BX̡1R;q"LN,`/mO䔰m8F0V\6&yhM&t3J0`g@5zzX—#Ն1oԠRڮT}V*yp-"D$ן2pԓ1 8G07Oy#xh(> MswLiw:&mH)yi*F)I$qKwN^~2I6JU`>u0P5mh9vyռ%M|Vεz0cQ[} Уcvg-3 盲^Y)Vؿ娢VԳVBa\Α.ї-&<_60¡0z̈B@} 0gI=FS]+(]` \x\J KRqbN38ʔʗ5 f jA3]֚@ZOjM$%RN Y[wzterZlJYV9q* N&[5L[2<2?Kl*}*g?je܏Id?r `^1}/U߃wyE|k4~ NT~WrZ@ څ _(Z VT%ZZ#X>u㲻^Eo2˽T'v <Ր*`cN-FK+P WAv4?JScF'c73 SRӀ\Q>j2;ⱳIܯ3s:,([.edW=s ~=; !FKl*`DǯP 1I𿐁I Ș,a8pc3X)WW`:5KQy7j$uE|pM5* `lh $J6R/#4*8BݺؖWX.m)R3fa-v4+JP%Fvځ'C78-6F @6aY9_,GoЧͳ%{#QkA6>ohͻ㥌d͟_G蓌/tk `RӍ) |:2r ⯿s<ʖ5E躉]]Zm/xƜO XR\roytX Q]$^Ӎiܠ*nR gf5/C7A5 (1Gu@|,J$4 DIIDmx8=9="zcq2wНvȅ GZ55!_u*ZmߴN3^#7$QLZu%!^A I1)91C|GDM߰A7Y݌:֨n;VBNRSq%yo|&5زgt1cL0o1Cٍe^w>½!6jf4K Gzi dߴL]/y rEF~ӛUQ@߉`1qUwb\L(bY%) ZRlҿ˪0-WiUФIS+_!y]+r=`'tv7{}1{\ǃ$ cϜZ; ;usg,kv۸U߻|ozrPQwGb "]lɵ\{h7{‡{8ֻo=`#vN_2}N$sSz̙Z 6t6@fn:6i!T$" W8=(}mZx}}5hKż{8P޾7yƾ7^:8,B7l{8O<Ĥlt jC`)7a9Jl6C/?4gZ+q+IaɅq&g w.yEZEW~q7 K&*/: ;,woܳeCk57nug͵&շ7ڱf}?uP;o>r;N}ztPu]C<֘јsUۧ. o bo?7gW ,I$Z* !N|˲f<s&|헪m:?^KgzQtc+kx>7n鸧H1L"bN65|#.hd `/0뉚]R>[K R;tHdNkVrh*<;?Gj3 d4 ьi1;^Cg&cP SV9y8xqcn蒳ѡϷ]j^ 閪8w<:ml튵ݳGVt*魏7Ϛq0Jg!=B_Sb>7LS*J&o#'q&]+F.O s!qLCDktK||4cLzbU[)3K!wY޶oXq¾é [?b(\5La乖/{s atq/RˀƓ/=V!疕 rR|BDPxt|߳eg)VA"#^A qF$ڻ"db&B%+ձa6U{nm0YoM}4Ғ|y|*I{6b =} 6d1yݰ=s/}qU|gFOS1 j~;q/^u 5eZXnKDkc`LSUxM֔v)#(&:!P UԤ:ˮ>eKqGe6(ABO3cC~QgTh&*F&ak[:V#UJ5.Ugp+* ¢*f=c(ךW1^4٠.QK wƐetC<(a,zB0V<[M>CwUc:y'܃i9}^< C08C\OPE^1sZR5Hvn}}n6mpb1, P ؊ A1eWv5wǽ# h#/_]ps3:u8ifٟ>0[v۶DY4ag "DR 9KvHR]SPŷzJƛ3в ?X§)VF 1Io0O%eœhyw xA;2ބI>gvz _ap^i5ҕp}ϛwJ9ˉlԔV4W5qH >.{C[|_B>N=^[r9^5bUΙvJڂk|߰8NgNJhJ,JA9*rDx0s{P6_WFjpm8Ϛl#)ku?!ḰГ V{=ӓi3a3 `F`vin`n7< 2n7unhC"$T/^BdG#yYl޼rU 5) 嘭C/YZ,[, rͱZhXqE~Djŗ=kqW[Y$9.v1rqj3܈m7%q\br2:.G!D8<%rըרi^`:X+r:]<cr6 yi䜂?DE;x6@KIhu϶aںqV-6 uU;V3 VZG>E ;B41zb_h {b#g¼ p9t(J8!RY'%saX{D_!"8dr50.&ʷӾ6ې9p:X qw3Ϡhu8eD07D{ s&Byfth sȤ'7VT lL./!”.75^FV= .H*^WR֮,_0.iW]ee+ܸ&wo]MP{(aW80=p\qZkք΁w3V]"Kf EJne*kT7*>q{-ȕ*LnwWXr. ҫ.z=b69bX`-Q @w?qmEp_|#KWW%eB3µ{ҷe(K@ږ ˃K{[@ Ǹys0df Q9)8{!p笯k.U }>}kk׳v@՗.q٥W&oE3C^?C?G[۷={b<}aA uip(uiW2JM_+X  ^]"~ǡ@)<MN=BóM-L!mL!]}c@ж\%:%Ko`**|3*]I˰@uXK {(|I|~_ hq% A_&A%D̠ڍޠ-hCxB>Y3=8:Y7bzS8?%,S/ҋ^$(3HݝH $#BL*f@pO UFٳ \@ݟ e EHquAo=SgDQ.b&.{f׋w Z%0.7s??~u?sȊ 'D;FFEl188:UgFͯ_6m 0cYV7wU֜'706L6rh+FZ|T~8155ipMVOKZ۲s6žbD K읁;!f I5k%fpoZNK$p܉7&x8"~}3c@qL4GK2m L5 TNy#4I <1BD,5X ay$yRcTPYLєP ZWfjzA3*SUs(go.KZ!Jڊ&A 0%Έ-B:)NゝKg u\6߸~-o_wSg+ggC.f$]Hx Ghc n@dV`2]zuܸVJ hsUW+w,WD}nOӤ тf}́Rj5NͧyO8<lH.6N;@{ È^x]8!Dh"=eN 23x,> I$,>扵pB]41+RKH)'!G,~%!z}< A &d!t2B &Jd41Q4yAI@6d=c2/c~{V̢4 WwvÑ@|']_41zJqKOtT)j$4+ӎ0KQ1sm|~2k5oZDnHg 1,:/X9c^k4yUzKqjNo6yu4vg(tN')&]tjJC!SF4!H!C3Ą'$O={bj6iA9CN@qz|jP8uMn˦{n2z$aF/K17~;D1cA2=|ɪx\T>m:Vb̗o}Yn[7}_Yj/c 7N\vu؆-5\ƭI~ĩ /,H]>|xq"vJϠ | .(D߼*+੧R\N?hp;$OUUӁzY&7uj^c`+)4U3ұsX&:tq{,8qd>IML]Z EM1V C9eV H꙾rJ XEE ֣o_rUxv|0'5#GTO|x\.PިDK8ćGKgd,Xo3.A 5 $@k37_ c%ByN;IpMhZUTM6 ;$==<RIR5cX6IQ!3;*j n^JCCYzAHElEz@.Y!ᩡlI%Y@Գ2+^D*ԿV" h2-0e򽻴2.tKUr]Uт@@]bҿk5ԥ-:TB nz҈܄ n"(E.VX䫋\I^X+PM2q2$ E)2(O\"DO}Q :Z B"g[?kDQ3[]Ь,eR*7j w킗ƤwFFP^A}AA=pQdrעļڲ33)wgys&p߷W7z0 D{satD ]3jA%S VW-80{WtNBD[|D`- BU0?1DɠXTFvKR8|dO2iMA9 6ز4OIwI~y~4=:"`h0* 64` F)br#!f"G#jS1s2_F8tr}]Fsu9bW&Se!n%~g!a?FD[&NתM8! !P+:lbmVֶ̯sYD󂼊%tH@`u* za-N2T_⾗+ZR>Y-{=MA<ɭ;S;xށ>\23 ['4'͝y6dF[Ha,rTH*OQW/JUZ<֋puBL!LHQXPu%!]Dkաm[")\0$R.w`бsZ"ebEVŸ]ӭ(8&t{+s^7{lyENK5c5*.J`sZϙmW'|/w;.Ѯx`mi3._#,9bnVw~6(b#0֟dD0Tپ0)H -^L*KlD?t0̹Ep|e ,uO =kv g8b#+6B'G|bLzpӓ ʜ%?ϔO31d~rQ|ϻ~!*LGZ<C-%< 2ɴxXnW<{;dmKQU&!h9W!sDߣ7#w_@ '|Ļ_oPF>K *5D"ђb2x8@ Yx ">!~S&JZ4O>ˑ!ټ;֗ eMkd#+MO#@ *)T=/9NW 1ńA)_$7">sZ̔JSrmXē`;o]5'\G] O3`TD.ķҕ'130#nCXoa.& aH% & )!i-{`D6 P fӌxI;RRw%cÆŒN^^n[^Y օ+p [0-XE=J0#,!1@Q8T #~!?؄~<!vCq_&`f} 󆂭t~5d&{ZpNMWd]iV\WBQFID$#N$5L ]qPXTMjVDIh>d]2tx9>>]rհ"0|fڜ ; ۬n-{w*EXP*sǎpj9V8jhJG;H[K·%';VW9hJ wTOoϢ1Ҿvire/g}}?\cS[ڲڧѭ5^sZ18x3N]3L5i'O݅$ #럍 8\|Տ,t' z"`Հ4,{K};?}͍^ge5r[<4LLuB Н/8ԭkGV$ʗ͒<pX֢c \?SP{zmZhH Zx*RkjJZ;oR%UYOVV*__?M̺vvqRc =80jY3}B-Ӎa{- VTD8h{} e9$![N;#gV[eɲ$WȒle٘blf馛N$@BO@R)0KB A84\KliJl}̛7oDNOŦt^'`HT.MҀF -' =I$ݨPWشY0V3V"ར4h=sF1\U l?|U'EX^*ՓbhV |(S16mZy|^v'`K€ ,,,/_>_G_?)egΌ1(; xϯMϯ}Bh* !(0zOެGvJJ<{cy K1qA| ^t@K9 #72e|:?\}c` G0%S вO?\0=C}%76 OuL:{gp1`]LKXcr,w'cAL /?d${mX3x9OC&~ϜbϞ/N W {C{m߾7[5ƼsO?ӧ,\x]!.gRښY:*doarrs3[{VEy>v[ˡoXM@Z! +VxV4Fxanwud<,>8d7[1j:pBZ~f3B5S~VrnV n# ~0,/x聞?^ԙ3e /]wuow$3gbj4ר7!*FyjgQ;9 ?2~~hўtO:)t='݃==CuY4$[:, tBoEԘLoHMe@-5 ,Bo;{q^̍,f4&vphȻv)"< '*|0Nز0[JnEE.W :LD.D8ߵ?ODPI1Wes烏8bavzigk6~[~΍qD >MfU^OM8Ru6.x~jTAkMgzև:j崉aU3iPRtLUxY`(@|R* EDzgcg@ 'uA`2+,vЋć/ DtUwmKbI"et'&d{bDrRINf$U`>[2ThӌNՅk-z*FO<(:sXv7b2uTt\k.7ǻt(?GC߱7N95Ct%igC̉gS`/@χU0>`;lc(|0v0:Җi#!5a *:0,O <R|MYJ)llj*SnE뇀`ODokͨCb +z%089fx1ÆiaPp_?=/!Uz2,lOZt9@`~mnCNNPf.l/IMlLX\ܗKj)Eu%u*bN c 7kg1(  ;p{1-g1@\2t 7D P4-oo')%z29L5)2<:B&):O¤T]EݶK~M [uN9\[F_)6TVpHtKu4ӬV6_WʧU;(+4%ɤfei^oH$S;C!; 竭>N5)D{ʎ! K} rљyVЌw1Hde;N \DFChWvπw;ty9rӹp \;>#~`)ahZbizYjq;~\lЛS +rjBkoPl )^NA]'ޮh}f"c.!ok岭o<PB{?L'Eԗ D =]*.gJŶ}Bot&& e\E^׭{/NK޽DX9#^4xC_ jK"wCjM{.(,ր+MsQD QcTP^/4y5@^+/'w4} Zsũ"`W% yGIpC0:E?kݺYɎ+ U"5U@SxW.0pKaX}:]zInN6C̦߾uQ'|䘔UVєN=?v7 9l&mONb{#pG^]/ SJVN\*T-@vfVO!h4RhtLaH\d,Ӏ"F'aKDPo(z p=cwd7b]Z8p`"2X:"ŋ׃'H-2s֯{/Ǿh{ThrĐ!CT0b/b  Ԝ[9>(^0atvav؀ńQ1So4Vx E Nln=˜zxϒŒ;ؼѤ$. )_$1(}5$ӊEP۔&~F̩8ޫ`(1E(ѻ&G"T¹|b,i((18W0w#BSGXK{_gS.ф6g?{i֛뷛⥶v=vlTRa dځӖȔ \v힁UU7V͋ *5}$2uC0w҇AåήCvELSY>{4&~MjF %ۇt_O\',}%l)h z%ۺZyIF]݂Շ_'7~U) <2N(;h-Pq]aV%?yyNM َy[{[h1r#}B+:>̮ׅ N " ܖ7Aq0t#I$O*}~TwDE 7^ ٝ#D(%M*6X>$@p^ ") zAG% b>>T^}; OǘQ;c-/ ^#7wVt s&G'*-#צQ%^M'pc"-W+*m9zLԎp힒{ɑ]}}(b0};ax]t[)Q@]gД vÉ7g㮆'fToJfȬ"Rۚ˫DŽ* S?u=95jU!9F9j.4p|P{wΔ"Nz(mW`yخ`ŰKf?~Fm(ȑX0sr6D#P2 ='HBL"-0j0dNG̏rF=/tu?"Ju*/^]2Q.Uԩ\|OYw/^p9ߡ%Ԟv%( -FʋkBeNk=vuP37g, }QįK L Z>:MN⏆/"[I}II}{R…wu R_KnxRFmX`HS]}Gŝ-g(KqAM"qpn 8o|5Rg1:?M N 1a%O0<;,A[w* X '!(=i}&?#^$ ^2)m4sDE|gPb2Dq>n.*?W̸x(Ļ8sDSD<\"53PsA907@R Fq 1xodYХ&]bnʁdbzya(rj~}@8  >>4J.]RRŨ 2*F A6r]eH}KK۔JҡObƆL G hN'%+Sx̒jU,V/}2D5NwY8G,JeAh*c幔‚wޡ.0{DxSfѢ2w$F-:WY\D,oIyךnNI ,i)m#YǪjU-3Y$v%%3ZpV򒲗.#cNf.5 d$C},KSצIX$fX͊DM^uVJ0Rs0=t@kToRZ$bX*eVEWϕ5T0Tnkޑ 7&$2iyThF7ubqey#lR*[)IMk\a#u[N^3VqאnL(v\fTGQI7p=3?קw(snYISMg''gaFmL*1JJ2U,O}}]&k9-Di-%}jS*0XXWb%cRLR)$MNK,NcإUdfI$DĢ*$R fLMMuLձK7)lJehZ%V1՛ ڒS.u4elJ=RSj>rlڮb4%ǎ-Y ]#,EJ ؈]?Sgz-K=:b+ 4A|hFCR("F'ch)= EjjR7﫧W*JoJL2lXBa ar:ZcůM?'-V xn ]mPQY 5eS0 Ư_?^:w.rMP ToܞL"ʛ_b^GS7eZUd lX>ͧAGM1 0Bǖc(B0lEguK Ppl G»vh[!A9v qo9b\#}v@04> B4ZQ)?ݘ:>uX vn(zHE~Jńs(7Pz Xx@?n;E)҃4EJACuJyc>,FuUiZ: ^{P?cYոOBk3Xt5PTErׁn*~)pD M0;bMA폨p[인ւ 4]Lvky4a.YB\UE/5lbK2#M%PJvWθnpk'`@ɴ`iʌPW8Ġl%t %ʌSQ~Vpj*$w^#G1i6}"vw"bzrMZښ]].?+;z##Jz~:vvۻ$31~eݹ+tJG;I mWyؤqk*dƜ^VX_<:7''wtq}aYa#TH 3:#CyVZWjU֕?;AY|.d7R]&ODh<*z@ i݉AwNA%L @vI0c*T.39R[VJЩ,՜bM1WR ߫>EƉN, `õ>U8z/{23Yh확b^āpQ{/RX_߲d8Ȭ6e;зk }B rfq HˠfŬD ζ%,Ĭm ?sx\j\WWUqCS~mlY3M>qs3`ػoSL4.\剶jlu[I77쵥S4m323ȧꑳlg@ ͢؏1W%`T;ω ExCt#8*g30Gx{!w>滢xi$plɣ` ;f7kAfyh3>>GU4VO-HM֌oK<')m? %{[2p;>κK>e}}ڸ0D2`TIHnP(A!6Ƣ2hk}U3Yެșt#d}s|'s|\P_ξGփ$į8;BhQ",Ƙ{ 5k'ZUָߚ8~)A^R--.fGWԋZGE*.FzӘP.$-J}&\VTTnv?a/'n-{4yʐ`ʡ5e9<4eU斕dT U6?AX&튨Řf5?MA6eb$d`t%Qp3`sb3NnMSpU5G [6CnqҀ 0y"U(tK\SR*1S$AW~gSvtQR[ %ZԛgXo3c(|:c(sVl` nHz*_~uzP5X"ݫ~P]#jDy%Kj $-v!F~32ܪQ5`.|ap>nw/y#?X##Jw5( Nx4슩qV^=~R'Ҫe,ҧXM}jJ-)T:אw3rT'x}scFy7k V0\SM(2@u:-YzǮS8W[4;0qƷr6SBIXqLt&t&#M G#&t ڠ470݆IpX2M LuwDo2` %\7߳g ^mlmW)sX7ao`BfbnQ1J)?FT7ѣ;C6XV}EBq:ٗzhW*S/'W I~F,앀 Ud A:ɫ+z:b4'Ŵ؉szkܮ.08q/8kYHE>QvŋgO~aժ bx.쨽'TY&7(w^;[Ս$\0w/6p'">@'w.XHZɋ(jXyc\X{'Dy>z-zxy>xm˔ۜS^O]Ђ{E&``w)+ySL>cua=$+h)V,7RH֯a=U<35@fF9Ni@6݅LDQs-cr졂 z W^׏~чS25$Z}݊#q~d{VF^ުԚYl&'Jk~O V{W|šG&$d]8/vDj&7xҤU떦ʐ3 {W(1O-T}2k@NH:e i|},Nj$}^\X,_+Vr{-sv7d/zkuxC499/%Vϕ4] j3=/#TQcϱͫHBw _Ee^f[џ3 76N3w\"R1v/}}"O{?1 E>9|.mV 40 lK҇k|2A?g`f.}WF\[XQ:J1D~NN*(|C^&@Gj1:;kN\ 0ƅfӨp?$0oGG߽0Cは/zF4X~dIE[.9љwI` 샧'ab$~+/m`.- Qb'͛"+6XJ̓n+fA0H+l_sʴ!-TdؿOdɜiLjNqJɘeO;;%G'o;"),=K ][ g|Mo<< 4/c遷xj~ܱja>txkla^3qniiЗ1MɎH͌و KQj1$ag2g#K|!yeDQLxX{i4{{VNl Ѩr|_IG$iu,N?TW߂bt*xAutAՏ7Ѐ \84dه&I~Xsul0eZ~rsUJkG )2S~mVyn#~chVA+c%YY Z!W1tA1y51+AE8ICo.V3[ '1;Sv2Q:pؽ{/fb/vܽ1l^:fy%6?a2Gy8rmngô0.ׂ~XnjcpD1N70%p{ UWܥ҄oS(آ  v-6=C=s"n"^D͐8'ݿ ڊEBTPAEU!DwUIOep$FZo|놪'܈s!}q"TPd(le+ VW^DlYs:ahI`XkUq&HIR& 5 R r#F-M>/?}DLeJ{L':y!=lgwKsC83jwV˩}. 'v cU Q)I{W-Ly}0W_훰S%  YIV١gD7;;ZX4vhH;n}5>J13U!P3xd}?1mډwER`*A 36?M~hIxY= 28Lq,6h=΅Pt{k0f7?rFR8`vG<ؔk TzgL+VaLwp # &ɼS,Y~>o~3b!wcE. k,)O>e 1z<gT%5" V*1'_nFBQX !I'P!q`3QltStb‚ /<;ɖ?&%yD,eOp8jb> @Tᄊcη歿Zyw~?zEgZsq snݴŖ'2;͹Gz,>#QQ?_bNɆӍivnjj~w`GS^`=O3cM#!ȧtxۄ~.k:D!,茮?:At$6p9*> bi([nϠA#鰺Ih*~[Dqt珓j`my. 7e5/6u_T BXa ?-t :Ufr4RJJoE--j#髳,*v>&$Q?㰗.;Q ]'׬=f͚S' 3rxW˯f8{)VLo0床|`;& ޱ~Riqì^OMNTuG:I.AR(_Mo=pNtMj7#~s&#K( =q0:]pN8DG^>HY4׻]F# ÷,FhLuO'zܴ%*cvvd Elg:1hr35kgFatu~ˆm>џz9qLI)U<gx _ifmљ `.l8 sdg鶍yXWx6ݴ e}ư_("/[0:ӻއ6: l6%P,4 P8u,:N/6Ƿ7.Aߎgd 6{r0x؋LF"\b6(%D"`Fvpg!b` _ J*eK83|q(ԦJ>WR!&)A|r*2H8%ݠJe[|MojP?C[8ra93{cbqo5&0 4%eٳw<<` [S7߇?CӞ̶{"yPn)hAcWzZ*yb.urܚ[%XqᏣ605n'Ny'ND~ ^%s%藂]ML cBuJDO_D~_8;U\W#'soMgC=P9NWǐu0-ת׶Nnk9tz9MF̍("QIS?E@!&O">H@!}Z%? ? qx6rD.L0"*r 8"GO5E7 9?Е)Aֆu)~Q}@l Lrz\'I,\zӷyMڞ0`V+έxFGO_C?ҭm 2h0~|lClq槇L?dnOuD`mptGDVf롷G3H >F`h㖋mpM6\.f/ђE8 :|12ؑ92^ ԍ5k F?pA Иwd< w=6J@l^}SCGmr f%[ϧgi\ [x,ރ u *Ժ0: |WlrJi6}w ,i2ִi& ׈y|[I0C^ymr򑯎i&"Hm$ۖOvyxt)^F( buroQ i7c#RsMav))fDjL(sb&[sdTb1s_7牀:U_UX /ϭXqX@ Й[FAQJq#?)ߺ|V}+-H6aGtSxYq~ㅰVjhW#r#1!w48Q{n/i=( U-zFnU5˖gRqw`c4gej+6C9 ein33Ѭ1[wc⭽ҿˏ^.L\xK1ms\rGU5^4Z!Oѷzh3Φwyeƹ;R=}&z(6It} |ZieݲNˇdKۊ8'slj 9I!R jp%p%HZ޶(hʎҾ~ߗX;;<<4kA`6KTV2^4"?K/AnyܵE!JbG*/JZX?3ҹO;OCBp`D8or[Lf5~V;>QqJD>C\K7]A-aoy@] " ;vsHH'&!zXX5gԞNpCMN14^4xF~Fe21)^p?#fJZRԙ1]顕j3R%i5!̐?B{WJ-sva{> Zi9O?W'+ӼQ J0]zLBVQ= > J}FS*)ƉFZ5˨Vj p4]!n sDs43Q:pӞ# 'N%;g_= .2I_Y-,VH>{LBg6ep;kJW"u.#| ]H(PڰFtoQ,VXSTfAápuN\[;olBMEhZة>g 6 %ؑY$h0ggyX$^TDVÅ b$RrIh;,J>`i9 P*NJ}׌.GBei:㳙CB01Z[-OL|9uG̘1G\~;]kLCSYbz ɪ:QRnNH_X>҇BB),l}U1ƙ[ jV]Ҥ]/?ϝ8i ~%I7モl4Ub5˨5Q7Sߣ;{ȅ0N|v4-]$eq2\Ni%bd.3]@8m@n|7\9+إ29e9?G-n@@RHTlI[RV w=bCA9MVꐗ#bPƝ &bf.A@c5Iؚ =>,/eM|ဌb7dI~ЌӦ^@5p|n`LZAŦ*C}d.y<5PU=kR,5D«2 +g/ G32 S}r .qnƬ(^*pٍ9=\<,Q?"|p)+Fkrxo>.|4߅Ad )S:ƦI|*Έ qGs6;^O~+r.uD 뻐%WCAQTیuրW3egչ+HD))0:&p L Nt~NmyFyOs[ `\ky;h_e0@.ӿx9? f`/Z^}WBHRo7z`@Q4ΆбLwl_7^=t=SUZ7HGqgEGJ}9RcjB=)Ĝl #=v~xqvwoDk(k. @@ºk!}!HZ;wg_8}Vܯpt>׵>x4G;r>p<8"d4\:~FB/PGbfUޓJi8ۆݹuM5|35.axnoX0f1K4?szRG|{GgjCB*:m6H}Wu{ˁ6֒B-yC=Jۼ;&[8ի4|rq^9pH/U`mP<=cxOAX^kC]MIh'P?LqAC`S6ħR_h fA tL2jXBZ`͘piDlJALxfˮѺԘUА1 3CO9Ka|{۾Tz%E"˫T*7Cxvi2Vd9'a=zˣVIxF:x- i !p;m/Yp|x(~B%W~FA)1S~?E4=KR0j*^FR0*9GHg PR ArX㲁xk ҽ쯎[q-E%C!P L4"zڲ\̛_L#e"քDWTSҁP)ǥ `Uo~گ9,O`g ^O&WK50<0Ħ]oGp + *HEL b5pdL_RӥJ`wDcCl  n%-u'w8_iJqXl0kD>%K>gg^Қ(a 󬬔H΂l#*~)e,3L],.p`v:W62|]ţ^J+qXrJŰ/ab `ݰZ|tyֵB׭Tupm_%mzcNE(OD}˹ 8%ٛ /VaMr8NJ ,3R,w_V^Xk a'VZ,CL{TpU"2vh{^scS*1b#OQCmxf.{@(*Fz孷A6/Vfp'wG`)gI %[ ?hN}Do.ۇ̡cܴm}J'cy *2u=/6uX8hk lleTŏP7h:xXhxQƯKh :a׈~RF% 6.x0Fsu.VltOa.`Epv:VvqdE&;HpYs`Pk3$7LXʎ&x9ݾJR35\zMphg>0[Ġ[JNMyFYԏO fNȼ믨Zwb!;;kԜ9_]Բ?RpD,V]Zn 6yA;SkWi` @]!teKm&N̈ tpT ڄ?D!~mR+u& Z9"O "FBM&A J&PDzP_N"ce`:PK'  `. c YDDg:1JjrQU yH"6_zH7c aO2is+szDm^uK~ I\J lذSG8ӧQW}{Jޠ9Q-ry!pF}FKA P}%#2mW2cMK~??X͈gf63F{/CxU~hx_D0 D/(g[~=jGօFtZ.;NX8)˞93DkkpHα6A #}w{{Nޚ@gDvYv,[a%ģ5 ;nPs;sZ(xpѐ+ uG4߇s>=%s8Vo~Q:Ot?5'f=tgt%_4-9 \GpOϒE7s0HuLcW@BT]nyKfm-1V|u+fÏ'76g#wv7 /F)ˇ/Nw'gH\Ǩ^_9]>3OPh4\JnxIA4]:2p97i4TzYSFMa,qXKAJ9%+dDFرDBFt(LF_2du"ၝE9*D\5A5ЌoaZwmۛF^wLꛆScX6K+5gffgUߛvKsn1Qδƚ*L'S]+ ~)WOK%W '-3 YP- VhU<įV-"aO_*}3nȽ]\g=tr ?|[s*Z9 7ݶwͥp|xbhd}-P*vsӋ+I4dʢ|ciS;<|ʊ}帤F9}4d^v dy֨A2 -d8ߒS80DeDo[Ā=9io4gpìi5߾L^d)LX&s7tsX5KIՃ<7seajEo9'F^1# L9>kGYܝf^LMR_gSduvmySgOOgr[SFL8JFQx u6ʆez>z7Ʊ1ɰ]5CքяҡLؤMf)7&\ Cʓ'kyD=X!.MXuutpsر^oS*qT8l{%zT TOmػj:D.[>*VRnBU~Q{ڞy&W(Z ɮvk: (R,P( 5\T:%E5 k2U::fgR޳!Гd8m/St=Z `I;BVUafte 0)/p!cUJƧ7ŀ=d!]3iu+*4ƀ3s$\(Rg EmpX7yLCZQgin^Rvzi{U{|*͖::+wiEHaWq9UuOQQ=>mLi\@WicUu`̶V^eL?UITch|58rTVRmSTQ+Ř~cՎ%p"覫!VS`D/\d߄[ Vy!UEd…[[Fص¨ACV<4m,i)C;wf\Nr+K\ ֊lmN}W͠޸0Ӯra#2uSǼT!z؊?n+ks~WV_Ww>ҁɅRSI?;|Tɢqj5"#k U++A14rFty+INy0MYcXpdW>q++Zbmbilˊ]m`A Z^Lޒ|Xb"ku~pt8Bfx>[&cf0{ ]3 ̟y~&H3P|m][`7TGYrfn,kfx/oK_ *{t@2#g=/{Lg5S?(lK?òc!_03 γ%  ɰRO׎- Sm r;< ɪ)1Xɫl ̊%"a  ΘG՞v'bXZȝ܉l fm"&}GPX9{ΰ&ߐRasfW1^|q4t؍Dӻ'w'wTREdji}GU7c..}!.zsEmj1ݐ=0Z,SqK+J,q&ʹV )A{07Ы.B,=1ydq޼΅mIƣ*? 2|*0VB'G!$hBVa{(HeRzq#.Ob{o2E+RGqaaalZRJ-[~[ٗV-Tl"C",zw0gѬJƩ7+fg<Džo*pRGoҟ&%c^~[$[⑩.wػ<Gwąu  aDZ.n&EuFC~L_3ϐv5䙾/\! ̫zBkhy8! GJR^ό*_4>Sk6 A \6nLz#UCر-Wwa HII? 2Pj&%v sh1[M ћr%݈$wHd~A7ś? WaºG~*|M^nYRo^zzj=#[ۀC^WbHRo0 sdy46~ZC7{Ɨsݳǟn 8d]IU֝{6NJgnys]7,m9F7 |s湟3i/峹7fe 6ʏz&1>+aK;i c*kپm۞Ρѕs0HzBτ =gWVOR>#9~Vs#y nIUMR<}H$ո6K.^P}M̓XO__ ,!0rI]^H@Ld\LӤ)5mbIV-ZP+B35p%oNਟqoD 6q+uVhYᔅёBVӊ*b Kh.8̲6_^ddyԠԘ]B"ђ),i37ܿM:_i~X@,-Ѭ,}pa<2 8<|{ޝʰ~Ő;,j^-@d.=4cj u V%]8})Ϸ$'*K X1l8HH̛J41E!gy,U=U=M5账zGV!=G?l^3B_nevMIYdkۖg5:ñlfpl\C l;>mJ_$\?7wj=zŊq }Lx {oFQ.j.ZM]ImnvQ{eW`el|cΑJJbLsIR0)- ;UM*C*.T]< z]ʗu@VޗSޕ53J'Grd ),ꁪaWwiְ] "Fs-aאbJ:Dr1I'.J ]-[|:j6"yFvju/cYx|P/Aޡ\(.]VH!O6qrqGvX?$K q3̘&丣߹|d:dnI&.BZzb@ &[1㹞~_OG>բh^Q|w4]`]w`増s^toǿLψu)VBlNux$V 6}yqc<$^GVM)$Ue_y[ń$`xK)J_Sn@6zD霘1-=F]` P{7>0!Mzm)?7?yi XyUUêVl9U5Qy,4(/5\}?o&,{w)3]:~@}.m@k&^I'%ŏqi%O(5LA١zjq ~q U@JX g[_REJrbrֿ|v e4LECލf ?_^r9-R7~'rfna@S4S`@4z9 Me`(x$ [vrQ p AW_v.L1@!Cd/;)̡X?x{;T?Vvavՠ8mrqFߦt>_A?P5(~N{'\:o_\zʬc<% }[J5<< _yR6$kj~FLtɦqNDrÄ{ x!E:0r D8ҡhWaY[pq.pQrFv: :&!=QΊPXǠ&e":آ}0hԺA oU{6:+D޷32-my,ͿH[>`PPtQZ8f :gA QV*)Bȃ&1^o)* kVy,Z/XV˸EJ?mN+gjGlч| }kC_s&`4l-B!W;ZmH5ƿ+qJ(l9@ gQY9O2]:jXڠUPRbTyq[T|,1%g2WZBbhuaI,{bA1٪DP놜z|$X>tBwʞNjaNn6~, KڠuXh}y=HЂh$ATgwLa엪͏1axr Jt<&5Q)`6/4M%gooj, Z cMZpLh֩gGdWa75Ł"֨VFm :jYhڴi6͛q4eMݰn1Bt\T1Ux;$1HkhbĄЏH 1S[.s Kګd:IJ, ~~=8pӬٻddx &%b(Ns ZFsE=Xx-9FTx ʡ6usJnԬ xO*(^Ffа4JH۷}wI@-mR硢',(1&^D +1/J_i^F"5P0c#ۜzw/]=s@+ܳ<4-#Hw4fEEixk!+T- m5_Vq&[A)fӆ5,(>,_mW` Ђv9t͛ Eos84*O{lӧo LjF/x^ý^&SP8>A&::ف V7C3!D6d!X|y:E_%7gk]&TmcVO#P_3k*"_/o>| 1r'X>ҧ/%Hyӳ>Zj4һT@hnu/~LyCaaU4Wi@~dyGZqi$ݥ9pC@&sr<>K1ѿK;JD,~t&@84 -9Z.n}:Εz#dh! ǥkO[:!]Y) tdOrrvP2+2*TEڄUjPBwKΘ =|Ǥ<3n魠*ڿfMhsX>WgON'$u7tAұAqh͌̇D0'*&40< BXFFV}oq|߻Gg^äkשGNrJws`ϏUL:J^ ck@ }ߓM$?t^"YSN[yļ+]p}LFY>HCAqpyM?x MzA >Dm7r)y蒾V͍l1ύ"wm_\s ɬ?=OMfR5UC ԫ{GeHa[y =sD RUW%Rd1'=uR(/_ 9ַܺI "%;0ݎb+MG`p\ {?sX΁RKV7M3y> sh)wdc yt\̌m7x5~ngl4mp‰Ѩ!k ԣIdBG4CBs5COYbjo۰8=vMa./lnMqfJ,ias2`0:{Y),fs~vAt T12?+E1VhcO=B@U Xy$c9h hׂU ׇL_CAkHq> yJ--?I'<TJ#2v$d1h0 Y!}=nbJ0dN݊Tl_9V9Jkm{\n.ӡ>AB0fsfX |,c:k;u>CvFގsZLWT xc`d```a<=|EdՓg_(ETu=O'{?Law]+tw^nD.}kzՇ 쯍U}ɩo9:΋;FШO;XSB[xe#2UoاC??✼ 9Xz{w> O3E*De[=픖wE:seI5oÞR݇G=SBPs|W+Ⱥ }[0l]1V~ٴFoMr;'O^gLyhol7/ӌrq3}=vCCHF=ǡv @ilr.r4CүVldV¬L[eN0WԿoϓiosWwz:zQYY3RyK >?+#B|Jzj6]@UD-Pv>n໌u;WOMeFYг\l@*!u?'m '18 >wCÚ\fMc}~5lmo,.}Yr[Kf\yBGyoC[ |EE@ \}d<z/ |x{TgN.iBdb!3iMe$׹4M='4ri!e}Nҿ1H6dHAT8T* HGJ%K^ 2 RYHYRyr*УBTq"(*ѯTDSTuT-Iz jpE/N:R]ɕW gKnl7wSGG{oxDJ=é =Ż7,5w0@N386C&9^5;J-H~i >j^+zOPu//wR+=q v@GSLLgr _:KຈLzK[w˘Yu:sGXK˟Qt8;*3 s3=6(T~G77L4YCٜ9񜋮z]%q  ϖ1TeWe}(=drwsoWse \迎$H} nEc2pϘoKS }woZ{/o?9w*z % އaa/G|wywᘋɀu}є<m󐼇O~p)>kyg{ü,Ǜuβ(MxjAƿݤMk`RADݴ7?MhbW6;I&avk_@+@Uo'cBMH7g<dE ,p?-QvZ^SJr /gp}oyw/xGY:wLƜle>[.1[.bq- uyזK輵mwfyx~bbЇ1BL IvQ K^Ik&LŽD0fb`0(JfRMdDI/DK1Z`*tMƬ d.do<UڨUڴMr;gzpXmk'F}FUF]=j;௲Ki"bD.xB$dy&_jQ>º\ՒO-9"ZmWj\DI滎SidIΩ+Щ})dG»2']ZJZrl$;2VznM"L4R+_ ek=~^^8D9yWy1E& ϋx}WtȲuUb'X̔ؖ,O`ݶ5- 0̏1}̰Ls~N$ݾ}oW))L?nJ].ucԭRn4d 90 X ư l l [ְ `{v`gv`w`o1P `8`8VL ¡pGp p'p pgp Pzj4Fj-hClX ]p}p5C!D0· B.KR .+J kZF n[V n;N {^AxGQx 'Ix gYxEx ^WUx3 o;.x7 !0 $| > "_/W5:| ߂ow=>~?O39~ _o~?Ÿ+ ¿/0bp XaQ\qčpc7psĭpk߄v=;N3n;{^7c XAMN~?Ax0p qgP< #H< cX<D<):xgxX:6 [ڸ`袇kCpqq-x^x^Wx^x^7xތxގwxލxޏ>>O>>/f| ߆ow;]n|߇Ca| ?ŏI~? E|_ƯWku~w{}?ƟOgso ?/W?_JQ2i TaQZFihcڄ6hsڂhkچDv=@;N3Bn;A{^7CST!LM~?@At0BhifP:#H:cX:D:NST:N3L:Φs\ydQ$E-jSlZM]rG}rɣ5S@!E4G@Χ B.KR.+JkZFn[Vn;N{^AzGQz'IzgYzEz^WcAv#(ot?StZ~Ayb: nN/vj DUϝS۫|\QHn vr3ot<ϦjCҾk5| lIuw9ba G10竖N^O踍nXouܾ sTSM!ˮnSV\ShKѳn~mX=[ڡ؍bZGNXv3Y_sT+N _L:>WGAhӲo{ NwG[VCɩrs#_e=oNgy5YVS&ufLD T^n5iY|^~Hˡgs;'MI#I3>+7A:p}=[|y-N*y.orJqQYX;(Ck8>koqDWpd5E=qunk 6t$z"cÎ|١(S cJ)0.Geɔq:-# $ Y=f f-YVtyXKhQ]ԗH e_`~(5TAFֱQijhr&|`DC {nA9YH61G&Ύm/% iźAJcO wtCŗ^l4b&ψ8WV/g|%%Y]%Ԯ{M>ɏ63Y 8Tcx7V.M\7r8G 6CpWlЋcS\Ha /r6z#^`ޑ5,Q!^ߴ]&h#*ZL>K,GҧK\w>5]-2䖠qRs#?Xb9Vq-ˎJK! <= "4sύ=qWv/TKkXedI$9GM7\@&SJ5H⁚+C%)RVU)&E}Uc|8L h,]M hR@dVui(KQIf)EU )4>&<и+RRb\kӵJ+ $J+ $0, ʂ( gu!в1tmZ&akEX+V4tV !6dZC@ 2dȐ0a zhL@fϻ?PUTTPUT*4US^nHKhĄ EE|Q_TEE|QĤ &!L bnb܊BLa)$EYU)&)K2!0XKb C,a IIHJ3bC` 1!f0 3bC` _FYeA!0ʂ" DzC7DzC7DzC7*0!!!!!!! LA)S,z.sK"!UAT!"!"!"!"!"!"!"!"1)DC"JU۴41kƙ")қ:& ]2XbB 3Kooooooooof)Uzu]uYzRWzB׃VzJӺlROi);y4ҼSwJNi);y4ҼSWҴּӚwZNki;y5ּӚwZNkiͫckIҌѼ3WGؒ;yg4Ѽ3wFhY;yg5ռwVΊS&5&դtVj PK<\;_;assets/lib/bower/font-awesome/fonts/fontawesome-webfont.svgnu[ Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 By ,,, Copyright Dave Gandy 2016. All rights reserved. PK<\\DŬ;assets/lib/bower/font-awesome/fonts/fontawesome-webfont.ttfnu[ PFFTMkGGDEFp OS/22z@X`cmap : gasphglyfMLhead-6hhea $hmtxEy loca\ maxp,8 name㗋ghpostkuːxY_< 3232  '@i33spyrs@  pU]yn2@ zZ@55 zZZ@,_@s@ @(@@@- MM- MM@@@ -`b $ 648""""""@ D@ ,,@  m)@@   ' D9>dY* '    T     @ f %RE    $!k(D'  % %  0%/&p@0 !"""`>N^n~.>N^n~>N^n~ !"""`!@P`p 0@P`p!@P`p\XSB1ݬ        ,,,,,,,,,,,,,tLT$l x T ( dl,4dpH$d,t( !"0# $,$&D'()T**,,-.@./`/00123d4445 556 6\67H78 8`89L9:h:;<>?h?@H@A0ABXBCdCDLDEFG0GHIJ8KLMdN,NNOP`PQ4QR RlS,ST`U0WXZ[@[\<\]^(^_`pb,bddePefg`giLijDk klm@n,oLpqrsxttuD{`||}}~Hl@lH T H`@$\XDTXDP,8d\Hx tXpdxt@ Œ\ ļŸƔ0dʨˀ͔xϰЌ,ш҈ ӌ8,՜`lHش`Tڸ۔@lބ߬lp 4X$l( ` d      ,,8(Xx|T@| !"x##l$$'h(*L,T.L1t1230345t6T7$8 9H::;<<?X@ABCDEHFHGpHHIxJ JKLMN@P@QRSDT ULV`VWXX4XZZ[d[\|]^`aHabcXdetfhghi\jxnp@svwxyz{h|}}\lt4t88LT|| 4xLX(  @lt$xLL HĠT(  ʈˠϔldPՄxpڬTT ވL <H$l4 Pl ,xp,xt d 44,hP 4   4<,,408$8T |!h"$L%0&H'()*0*+,.$.012@234t5$69 ::; ;<(<=4?@ACDFH`HILLLLLLLLLLLLLLLLp7!!!@pp p]!2#!"&463!&54>3!2+@&&&&@+$(($F#+&4&&4&x+#+".4>32".4>32467632DhgZghDDhg-iWDhgZghDDhg-iW&@ (8 2N++NdN+';2N++NdN+'3 8!  #"'#"$&6$ rL46$܏ooo|W%r4L&V|oooܳ%=M%+".'&%&'3!26<.#!";2>767>7#!"&5463!2 %3@m00m@3%    @ :"7..7":6]^B@B^^BB^ $΄+0110+$ (   t1%%1+`B^^B@B^^"'.54632>324 #LoP$$Po>Z$_dC+I@$$@I+"#"'%#"&547&547%62V??V8<8y   b% I))9I  + % %#"'%#"&547&547%62q2ZZ2IzyV)??V8<8)>~>[   2 b% I))9I %#!"&54>3 72 &6 }XX}.GuLlLuG.>mmUmEEm> /?O_o54&+";2654&+";2654&+";264&#!"3!2654&+";2654&+";264&#!"3!2654&+";2654&+";2654&+";267#!"&5463!2&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&^BB^^B@B^@&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&B^^B@B^^/?#!"&5463!2#!"&5463!2#!"&5463!2#!"&5463!2L44LL44LL44LL44LL44LL44LL44LL44L4LL44LL4LL44LL4LL44LL4LL44LL /?O_o#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!28((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(8 (88((88(88((88(88((88(88((88(88((88(88((88(88((88(88((88(88((88/?O_#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!28((88(@(88((88(@(88(@(88((88((88(@(88(@(88((88(@(88((8 (88((88(88((88(88((88(88((88(88((88(88((88y"/&4?62 62,PP&PP,jPn#$"' "/&47 &4?62 62 PP&P&&P&P&P&&P&P#+D++"&=#"&=46;546;232  #"'#"$&6$   @    @  rK56$܏ooo|W@    @   rjK&V|oooܳ0#!"&=463!2  #"'#"$&6$   @ rK56$܏ooo|W@  @ rjK&V|oooܳ)5 $&54762>54&'.7>"&5462zz+i *bkQнQkb* j*LhLLhLzzBm +*i JyhQQhyJ i*+ mJ4LL44LL/?O%+"&=46;2%+"&546;2%+"&546;2+"&546;2+"&546;2`r@@r@@n4&"2#"/+"&/&'#"'&'&547>7&/.=46?67&'&547>3267676;27632Ԗ #H  ,/ 1)  ~'H  (C  ,/ 1)  $H ԖԖm 6%2X  % l2 k r6 [21 ..9Q $ k2 k w3 [20/;Cg+"&546;2+"&546;2+"&546;2!3!2>!'&'!+#!"&5#"&=463!7>3!2!2@@@@@@@`0 o`^BB^`5FN(@(NF5 @@@L%%Ju  @LSyuS@%44%f5#!!!"&5465 7#"' '&/&6762546;2&&??>  LL >  X   &&&AJ A J Wh##!"&5463!2!&'&!"&5!(8((88((`x c`(8`((88(@(8(D 9 8( ,#!"&=46;46;2.  6 $$ @(r^aa@@`(_^aa2NC5.+";26#!26'.#!"3!"547>3!";26/.#!2W  .@   @.$S   S$@   9I   I6>  >%=$4&"2$4&"2#!"&5463!2?!2"'&763!463!2!2&4&&4&&4&&48(@(88(ч::(8@6@*&&*4&&4&&4&&4& (88(@(8888)@)'&&@$0"'&76;46;232  >& $$ `  (r^aa` @`2(^aa$0++"&5#"&54762  >& $$ ^ ?  @(r^aa` ? (^aa #!.'!!!%#!"&547>3!2<<<_@`&& 5@5 @  &&>=(""='#"'&5476.  6 $$   ! (r^aaJ %%(_^aa3#!"'&?&#"3267672#"$&6$3276&@*hQQhwI mʬzzk)'@&('QнQh_   z8zoe$G!"$'"&5463!23267676;2#!"&4?&#"+"&=!2762@hk4&&&GaF * &@&ɆF * Ak4&nf&&&4BHrd@&&4rd  Moe&/?O_o+"&=46;25+"&=46;25+"&=46;2#!"&=463!25#!"&=463!25#!"&=463!24&#!"3!26#!"&5463!2 @  @  @  @  @  @  @    @    @    @   ^B@B^^BB^`@  @ @  @ @  @ @  @ @  @ @  @ 3@  MB^^B@B^^!54&"#!"&546;54 32@Ԗ@8(@(88( p (8jj(88(@(88@7+"&5&5462#".#"#"&5476763232>32@@ @ @KjKך=}\I&:k~&26]S &H&  &H5KKut,4, & x:;*4*&K#+"&546;227654$ >3546;2+"&="&/&546$ <X@@Gv"DװD"vG@@X<4L41!Sk @ G< _bb_ 4.54632&4&&M4&UF &""""& F&M&&M&%/B/%G-Ik"'!"&5463!62#"&54>4.54632#"&54767>4&'&'&54632#"&547>7676'&'.'&54632&4&&M4&UF &""""& FU &'8JSSJ8'&  &'.${{$.'& &M&&M&%/B/%7;&'66'&;4[&$ [2[ $&[  #/37#5#5!#5!!!!!!!#5!#5!5##!35!!! #'+/37;?3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3???? ^>>~??????~??~??^??^^? ^??4&"2#"'.5463!2KjKKjv%'45%5&5L45&% jKKjK@5%%%%54L5&6'k54&"2#"'.5463!2#"&'654'.#32KjKKjv%'45%5&5L45&%%'4$.%%5&55&% jKKjK@5%%%%54L5&6'45%%%54'&55&6' yTdt#!"&'&74676&7>7>76&7>7>76&7>7>76&7>7>63!2#!"3!2676'3!26?6&#!"3!26?6&#!"g(sAeM ,*$/ !'& JP$G] x6,& `   h `   "9Hv@WkNC<.  &k& ( "$p" . #u&#  %!' pJvwEF#  @   @  2#"' #"'.546763!''!0#GG$/!''! 8""8  X! 8" "8  <)!!#"&=!4&"27+#!"&=#"&546;463!232(8&4&&4 8(@(8 qO@8((`(@Oq8(&4&&4&@` (88( Oq (8(`(q!)2"&42#!"&546;7>3!2  Ijjjj3e55e3gr`Ijjjj1GG1rP2327&7>7;"&#"4?2>54.'%3"&#"#ժ!9&WB03& K5!)V?@L' >R>e;&L::%P>vO 'h N_":- &+# : ' +a%3 4'.#"32>54.#"7>7><5'./6$3232#"&#"+JBx)EB_I:I*CRzb3:dtB2P$ $5.3bZF|\8!-T>5Fu\,,jn OrB,7676'5.'732>7"#"&#&#"OA zj=N!}:0e%  y + tD3~U#B4 # g  '2 %/!: T bRU,7}%2"/&6;#"&?62+326323!2>?23&'.'.#"&"$#"#&=>764=464.'&#"&'!~:~!PP!~:~!P6 ,,$$% *'  c2N  ($"LA23Yl !x!*%%%% pP,T NE Q7^oH!+( 3  *Ueeu  wga32632$?23&'.5&'&#"&"5$#"#&=>7>4&54&54>.'&#"&'2#".465!#".'&47>32!4&4>Q6 ,,Faw!*' =~Pl*  ($"LA23Yl  )!* <7@@7<  <7@@7<  pP,T MF Q747ƢHoH!+( 3  tJHQ6  wh',686,'$##$',686,'$##$/?%#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2&&&&&&&&&&&&&&&&&&&&f&&&&f&&&&f&&&&/?%#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2&&&&&&&&&&&&&&&&&&&&f&&&&f&&&&f&&&&/?%#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2&&&&&&&&&&&&&&&&&&&&f&&&&f&&&&f&&&&/?%#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2&&&&&&&&&&&&&&&&&&&&f&&&&f&&&&f&&&&/?O_o%+"&=46;2+"&=46;2+"&=46;2#!"&=463!2+"&=46;2#!"&=463!2#!"&=463!2#!"&=463!2        @     @   @   @   s  s    s    s  s  /?O#"'&47632#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2     @     @   @  @          s  s  s  /?O#"&54632 #!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2`      @     @   @  @     @   s  s  s  #"'#!"&5463!2632' mw@www '*wwww."&462!5 !"3!2654&#!"&5463!2pppp@  @ ^BB^^B@B^ppp@@  @    @B^^BB^^k%!7'34#"3276' !7632k[[v  6`%`$65&%[[k `5%&&'4&"2"&'&54 Ԗ!?H?!,,ԖԖmF!&&!Fm,%" $$ ^aa`@^aa-4'.'&"26% 547>7>2"KjKXQqYn 243nYqQ$!+!77!+!$5KK,ԑ ]""]ً 9>H7'3&7#!"&5463!2'&#!"3!26=4?6 !762xtt`  ^Qwww@?6 1B^^B@B^ @(` `\\\P`tt8`  ^Ͼww@w 1^BB^^B~ @` \ \P+Z#!"&5463!12+"3!26=47676#"'&=# #"'.54>;547632www M8 pB^^B@B^ 'sw- 9*##;Noj' #ww@w "^BB^^B  *  "g`81T`PSA:'*4/D#!"&5463!2#"'&#!"3!26=4?632"'&4?62 62www@?6 1 B^^B@B^ @ BRnBBn^ww@w 1 ^BB^^B @ BnnBC"&=!32"'&46;!"'&4762!#"&4762+!54624&&4&&44&&4&&44&&44&&4&&44&&6'&'+"&546;267: &&&& s @  Z&&&&Z +6'&''&'+"&546;267667: : &&&&  s @  :  Z&&&&Z  : z6'&''&47667S: : s @  : 4 : | &546h!!0a   $#!"&5463!2#!"&5463!2&&&&&&&&@&&&&&&&&#!"&5463!2&&&&@&&&&&54646&5- : s  :  :4:  +&5464646;2+"&5&5-  &&&& : s  :  : &&&& :  &54646;2+"&5- &&&& s  : &&&&  62#!"&!"&5463!24 @ &&&&-:&&&& "'&476244444Zf "/&47 &4?62S44444#/54&#!4&+"!"3!;265!26 $$ &&&&&&&&@^aa@&&&&&&&&+^aa54&#!"3!26 $$ &&&&@^aa@&&&&+^aa+74/7654/&#"'&#"32?32?6 $$ }ZZZZ^aaZZZZ^aa#4/&"'&"327> $$ [4h4[j^aa"ZiZJ^aa:F%54&+";264.#"32767632;265467>$ $$ oW  5!"40K(0?i+! ":^aaXRd D4!&.uC$=1/J=^aa.:%54&+4&#!";#"3!2654&+";26 $$ ```^aa^aa/_#"&=46;.'+"&=32+546;2>++"&=.'#"&=46;>7546;232m&&m l&&l m&&m l&&ls&%&&%&&%&&%&&&l m&&m l&&l m&&m ,&%&&%&&%&&%&#/;"/"/&4?'&4?627626.  6 $$ I     ͒(r^aaɒ    (_^aa , "'&4?6262.  6 $$ Z4f44fz(r^aaZ&4ff4(_^aa "4'32>&#" $&6$  WoɒV󇥔 zzz8YW˼[?zz:zz@5K #!#"'&547632!2A4@%&&K%54'u%%&54&K&&4A5K$l$L%%%54'&&J&j&K5K #"/&47!"&=463!&4?632%u'43'K&&%@4AA4&&K&45&%@6%u%%K&j&%K55K&$l$K&&u#5K@!#"'+"&5"/&547632K%K&56$K55K$l$K&&#76%%53'K&&%@4AA4&&K&45&%%u'5K"#"'&54?63246;2632K%u'45%u&&J'45%&L44L&%54'K%5%t%%$65&K%%4LL4@&%%K',"&5#"#"'.'547!34624&bqb>#  5&44& 6Uue7D#  "dž&/#!"&546262"/"/&47'&463!2 &@&&4L  r&4  r L&& 4&&&L rI@& r  L4&& s/"/"/&47'&463!2#!"&546262&4  r L&& &@&&4L  r@@& r  L4&& 4&&&L r##!+"&5!"&=463!46;2!28(`8((8`(88(8((8(8 (8`(88(8((8(88(`8#!"&=463!28(@(88((8 (88((88z5'%+"&5&/&67-.?>46;2%6.@g.L44L.g@. .@g. L44L .g@.g.n.4LL43.n.gg.n.34LL4͙.n.g -  $54&+";264'&+";26/a^    ^aa fm  @ J%55!;263'&#"$4&#"32+#!"&5#"&5463!"&46327632#!2$$8~+(888(+}(`8((8`]]k==k]]8,8e8P88P8`(88(@MMN4&#"327>76$32#"'.#"#"&'.54>54&'&54>7>7>32&z&^&./+>+)>J> Wm7' '"''? &4&c&^|h_bml/J@L@#* #M6:D 35sҟw$ '% ' \t3#!"&=463!2'.54>54''  @ 1O``O1CZZ71O``O1BZZ7@  @ N]SHH[3`)TtbN]SHH[3^)Tt!1&' 547 $4&#"2654632 '&476 ==嘅}(zVl''ٌ@uhyyhu9(}VzD##D# =CU%7.5474&#"2654632%#"'&547.'&476!27632#76$7&'7+NWb=嘧}(zVj\i1  z,X Y[6 $!%'FuJiys?_9ɍ?kyhun(}Vz YF  KA؉La  02-F"@Qsp@_!3%54&+";264'&+";26#!"&'&7>2    #%;"";%#`,@L 5 `   `  L`4LH` `   a 5 L@ #37;?Os!!!!%!!!!%!!!!!!!!%!!4&+";26!!%!!!!74&+";26%#!"&546;546;2!546;232 `@ `@ @@ @ @  @  @  @  @ L44LL4^B@B^^B@B^4L  @@@@    @@   @@    M4LL44L`B^^B``B^^B`L7q.+"&=46;2#"&=".'673!54632#"&=!"+"&=46;2>767>3!546327>7&54>$32dFK1A  0) L.٫C58.H(Ye#3C $=463!22>=463!2#!"&5463!2#!"&5463!2H&&/7#"&463!2!2LhLLhLhLLh! &&&&& &4hLLhLLhLLhL%z< 0&4&& )17&4& &&#!"&5463!2!2\@\\@\\@\\\\ W*#!"&547>3!2!"4&5463!2!2W+B"5P+B@"5^=\@\ \H#t3G#3G:_Ht\\ @+32"'&46;#"&4762&&4&&44&&44&&4@"&=!"'&4762!54624&&44&&44&&4&& !!!3!!0@67&#".'&'#"'#"'32>54'6#!"&5463!28ADAE=\W{O[/5dI kDtpČe1?*w@www (M& B{Wta28r=Ku?RZ^GwT -@www$2+37#546375&#"#3!"&5463ww/Dz?swww@wS88 ww#'.>4&#"26546326"&462!5!&  !5!!=!!%#!"&5463!2B^8(Ԗ>@|K55KK55K^B(8ԖԖ€>v5KK55KKHG4&"&#"2654'32#".'#"'#"&54$327.54632@pp)*Pppp)*Pb '"+`N*(a;2̓c`." b PTY9ppP*)pppP*)b ".`(*Nͣ2ͣ`+"' b MRZB4&"24&"264&"26#"/+"&/&'#"'&547>7&/.=46?67&'&547>3267676;27632#"&'"'#"'&547&'&=4767&547>32626?2#"&'"'#"'&547&'&=4767&547>32626?2ԖLhLKjKLhLKjK "8w s%(  ")v  >  "8x s"+  ")v  <  3zLLz3 3>8L3)x3 3zLLz3 3>8L3)x3 ԖԖ4LL45KK54LL45KK #)0C wZ l/ Y N,& #)0C vZl. Y L0"qG^^Gqq$ ]G)FqqG^^Gqq$ ]G)Fq%O#"'#"&'&4>7>7.546$ '&'&'# '32$7>54'VZ|$2 $ |E~E<| $ 2$|ZV:(t}X(  &%(Hw쉉xH(%& (XZT\MKG<m$4&"24&#!4654&#+32;254'>4'654&'>7+"&'&#!"&5463!6767>763232&4&&4N2`@`%)7&,$)' %/0Ӄy#5 +1 &<$]`{t5KK5$e:1&+'3TF0h4&&4&3M:;b^v+D2 5#$IIJ 2E=\$YJ!$MCeM-+(K55KK5y*%Au]c>q4&"24&'>54'654&'654&+"+322654&5!267+#"'.'&'&'!"&5463!27>;2&4&&4+ 5#bW0/% ')$,&7)%`@``2Nh0##T3'"( 0;e$5KK5 tip<& 1&4&&4&#\=E2&%IURI$#5 2D+v^b;:M2gc]vDEA%!bSV2MK55K(,,MeCM$!I@#"&547&547%6@?V8 b% I)94.""'." 67"'.54632>32+C`\hxeH>Hexh\`C+ED4 #LoP$$Po>Q|I.3MCCM3.I|Q/Z$_dC+I@$$@I+ (@%#!"&5463!2#!"3!:"&5!"&5463!462 ww@  B^^B  4&@&&&4 `  ww   ^B@B^ 24& && &%573#7.";2634&#"35#347>32#!"&5463!2FtIG9;HIxI<,tԩw@wwwz4DD43EEueB&#1s@www .4&"26#!+"'!"&5463"&463!2#2&S3 Ll&c4LL44LL4c@& &{LhLLhL'?#!"&5463!2#!"3!26546;2"/"/&47'&463!2www@B^^B@B^@&4t  r &&`ww@w@^BB^^B@R&t r  4&&@"&5!"&5463!462 #!"&54&>3!2654&#!*.54&>3!24&@&&&4 sw  @B^^B  @w4& && &3@w   ^BB^    I&5!%5!>732#!"&=4632654&'&'.=463!5463!2!2JJSq*5&=CKuuKC=&5*q͍S8( ^B@B^ (8`N`Ѣ΀GtO6)"M36J[E@@E[J63M")6OtG(8`B^^B`8 ',26'&'&76'6'&6&'&6'&4#"7&64 654'.'&'.63226767.547&7662>76#!"&5463!2  /[  . =XĚ4,+"  * +, 1JH'5G:: #L5+@=&#w@wwwP.1GE,ԧ4 4+ ; /5cFO:>JJ>:O9W5$@(b 4 @www'?$4&"2$4&"2#!"&5463!3!267!2#!#!"&5!"'&762&4&&4&&4&&48(@(88(c==c(8*&&*6&4&&4&&4&&4& (88(@(88HH88`(@&&('@1c4&'.54654'&#"#"&#"32632327>7#"&#"#"&54654&54>76763232632   N<;+gC8A`1a99gw|98aIe$IVNz<:LQJ  ,-[% 061I()W,$-7,oIX()oζA;=N0 eTZ  (O#".'&'&'&'.54767>3232>32 e^\4?P bMO0# 382W# & 9C9 Lĉ" 82<*9FF(W283 #0OMb P?4\^e FF9*<28 "L 9C9 & #!"3!2654&#!"&5463!2`B^^B@B^^ީwww@w^BB^^B@B^ww@w#!72#"' #"'.546763YY !''!0#GG$/!''!&UUjZ 8""8  X! 8" "8 GW4.'.#"#".'.'.54>54.'.#"32676#!"&5463!2 1.- +$)  c8 )1)  05.D <90)$9w@wwwW  )1) 7c  )$+ -.1 9$)0< D.59@www,T1# '327.'327.=.547&54632676TC_LҬ#+i!+*pDNBN,y[`m`%i]hbEm}a u&,SXK &$f9s? _#"!#!#!54632V<%'ЭHH (ںT\dksz &54654'>54'6'&&"."&'./"?'&546'&6'&6'&6'&6'&74"727&6/a49[aA)O%-j'&]]5r-%O)@a[9' 0BA; + >HCU  #  $  2  AC: oM=a-6OUwW[q ( - q[WwUP6$C +) (  8&/ &eMa  & $      %+"&54&"32#!"&5463!54 &@&Ԗ`(88(@(88(r&&jj8((88(@(8#'+2#!"&5463"!54&#265!375!35!B^^BB^^B   `^B@B^^BB^  ` !="&462+"&'&'.=476;+"&'&$'.=476; pppp$!$qr % }#ߺppp!E$ rqܢ# % ֻ!)?"&462"&4624&#!"3!26!.#!"#!"&547>3!2/B//B//B//B @   2^B@B^\77\aB//B//B//B/@    ~B^^B@2^5BB52.42##%&'.67#"&=463! 25KK5L4_u:B&1/&.- zB^^B4LvyKjK4L[!^k'!A3;):2*547&5462;U gIv0ZZ0L4@Ԗ@4L2RX='8P8'=XR U;Ig0,3lb??bl34LjjL4*\(88(\}I/#"/'&/'&?'&'&?'&76?'&7676767676` (5 )0 ) *) 0) 5(  (5 )0 )))) 0) 5( *) 0) 5(  )5 )0 )**) 0) 5)  )5 )0 )*5h$4&"24&#!4>54&#"+323254'>4'654&'!267+#"'&#!"&5463!2>767>32!2&4&&4N2$YGB (HGEG HQ#5K4Li!<;5KK5 A# ("/?&}vh4&&4&3M95S+C=,@QQ9@@IJ 2E=L5i>9eME;K55K J7R>@#zD<5=q%3#".'&'&'&'.#"!"3!32>$4&"2#!"#"&?&547&'#"&5463!&546323!2` #A<(H(GY$2NL4K5#aWTƾh&4&&4K5;=!ihv}&?/"( #A  5K2*! Q@.'!&=C+S59M34L=E2 JI UR@@&4&&4&5K;ELf9>igR7J K5h4&"24#"."&#"4&#"".#"!54>7#!"&54.'&'.5463246326326&4&&4IJ 2E=L43M95S+C=,@QQ9@@E;K55K J7R>@#zD9eMZ4&&4&<#5K4LN2$YGB (HGEG HV;5KK5 A# ("/?&}vhi!<4<p4.=!32>332653272673264&"2/#"'#"&5#"&54>767>5463!2@@2*! Q@.'!&=C+S59M34L.9E2 JI UR&4&&4&Lf6Aig6Jy#@>R7J K55K;E@TƾH #A<(H(GY$2NL4K#5#a=4&&4&D=ihv}&?/"( #A  5KK5;+54&#!764/&"2?64/!26 $$ & [6[[j6[&^aa@&4[[6[[6&+^aa+4/&"!"3!277$ $$ [6[ &&[6j[ ^aae6[j[6&&4[j[^aa+4''&"2?;2652?$ $$ [6[[6&&4[^aaf6j[[6[ &&[^aa+4/&"4&+"'&"2? $$ [6&&4[j[6[j^aad6[&& [6[[j^aa   $2>767676&67>?&'4&'.'.'."#&6'&6&'3.'.&'&'&&'&6'&>567>#7>7636''&'&&'.'"6&'6'..'/"&'&76.'7>767&.'"76.7"7"#76'&'.'2#22676767765'4.6326&'.'&'"'>7>&&'.54>'>7>67&'&#674&7767>&/45'.67>76'27".#6'>776'>7647>?6#76'6&'676'&67.'&'6.'.#&'.&6'&.5/a^D&"      4   $!   #          .0"Y +  !       $     "  +       Α      ^aa                        P   ' -( # * $  "  !     * !   (         $      2 ~/$4&"2 #"/&547#"32>32&4&&4V%54'j&&'/덹:,{ &4&&4&V%%l$65&b'Cr! " k[G +;%!5!!5!!5!#!"&5463!2#!"&5463!2#!"&5463!2&&&&&&&&&&&&@&&&&&&&&&&&&{#"'&5&763!2{' **)*)'/!5!#!"&5!3!26=#!5!463!5463!2!2^B@B^&@&`^B`8(@(8`B^ B^^B&&B^(88(^G 76#!"'&? #!"&5476 #"'&5463!2 '&763!2#"'c)'&@**@&('c (&*cc*&' *@&('c'(&*cc*&('c'(&@*19AS[#"&532327#!"&54>322>32"&462 &6 +&'654'32>32"&462QgRp|Kx;CByy 6Fe= BPPB =eF6 ԖV>!pRgQBC;xK|Ԗ{QNa*+%xx5eud_C(+5++5+(C_due2ԖԖ>NQ{u%+*jԖԖp!Ci4/&#"#".'32?64/&#"327.546326#"/&547'#"/&4?632632(* 8( !)(A(')* 8( !USxySSXXVzxTTUSxySSXXVzxT@(  (8 *(('( (8 SSUSx{VXXTTSSUSx{VXXT#!"5467&5432632t,Ԟ;F`j)6,>jK?s !%#!"&7#"&463!2+!'5#8EjjE8@&&&&@XYY&4&&4&qDS%q%N\jx2"&4#"'#"'&7>76326?'&'#"'.'&676326326&'&#"32>'&#"3254?''74&&4&l NnbSVZ bRSD zz DSRb)+USbn \.2Q\dJ'.2Q\dJ.Q2.'Jd\Q2.'Jd`!O` ` &4&&4r$#@B10M5TNT{L5T II T5L;l'OT4M01B@#$*3;$*3;;3*$;3*$: $/ @@Qq`@"%3<2#!"&5!"&5467>3!263! !!#!!46!#!(88(@(8(8(`((8D<++<8(`(8(`8(@(88( 8((`(8((<`(8(``(8||?%#"'&54632#"'&#"32654'&#"#"'&54632|udqܟs] = OfjL?R@T?"& > f?rRX=Edudsq = _MjiL?T@R?E& f > =XRr?b!1E)!34&'.##!"&5#3463!24&+";26#!"&5463!2 08((88(@(8  8((88((`(1  `(88((88(@  `(88(@(8(`#!"&5463!2w@www`@www/%#!"&=463!2#!"&=463!2#!"&=463!2&&&&&&&&&&&&&&&&&&&&&&&&@'7G$"&462"&462#!"&=463!2"&462#!"&=463!2#!"&=463!2ppppppp @   ppp @    @   Рpppppp  ppp    <L\l|#"'732654'>75"##5!!&54>54&#"'>3235#!"&=463!2!5346=#'73#!"&=463!2#!"&=463!2}mQjB919+i1$AjM_3</BB/.#U_:IdDRE @  k*Gj @   @   TP\BX-@8 C)5Xs J@$3T4+,:;39SG2S.7<  vcc)) %Ll}    5e2#!"&=463%&'&5476!2/&'&#"!#"/&'&=4'&?5732767654'&@02uBo  T25XzrDCBBEh:%)0%HPIP{rQ9f#-+>;I@KM-/Q"@@@#-bZ $&P{<8[;:XICC>.'5oe80#.0(  l0&%,"J&9%$<=DTIcs&/6323276727#"327676767654./&'&'737#"'&'&'&54'&54&#!"3!260% <4"VRt8<@< -#=XYhW8+0$"+dTLx-'I&JKkmuw<=V@!X@ v '|N;!/!$8:IObV;C#V  &   ( mL.A:9 !./KLwPM$@@ /?O_o%54&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!26#!"&5463!2@@@@@@@@@^BB^^B@B^NB^^B@B^^#+3 '$"/&4762%/?/?/?/?%k*66bbbb|<<<bbbbbbbb%k66Ƒbbb<<<<^bbbbbb@M$4&"2!#"4&"2&#"&5!"&5#".54634&>?>;5463!2LhLLh LhLLhL! 'ԖԖ@' !&  ?&&LhLLhL hLLhL jjjj &@6/" &&J#"'676732>54.#"7>76'&54632#"&7>54&#"&54$ ok; -j=yhwi[+PM 3ѩk=J%62>VcaaQ^ ]G"'9r~:`}Ch 0=Z٤W=#uY2BrUI1^Fk[|aL2#!67673254.#"67676'&54632#"&7>54&#"#"&5463ww+U ,iXբW<"uW1AqSH1bdww'74'!3#"&46327&#"326%35#5##33#!"&5463!20U6cc\=hlࠥYmmnnnnw@wwww&46#Ȏ;edwnnnnn@www ]#/#"$&6$3 &#"32>7!5!%##5#5353Еttu{zz{SZC` cot*tq||.EXN#?? ,<!5##673#$".4>2"&5!#2!46#!"&5463!2rM* *M~~M**M~~M*jjj&&&&`P%挐|NN||NN|*jjjj@&&&&@ "'&463!2@4@&Z4@4&@ #!"&4762&&4Z4&&4@@ "'&4762&4@4&@&4&@ "&5462@@4&&44@&&@ 3!!%!!26#!"&5463!2`m` ^BB^^B@B^  `@B^^BB^^@ "'&463!2#!"&4762@4@&&&&44@4&Z4&&4@ "'&463!2@4@&4@4&@ #!"&4762&&4Z4&&4@:#!"&5;2>76%6+".'&$'.5463!2^B@B^,9j9Gv33vG9H9+bI\ A+=66=+A [">nSMA_:B^^B1&c*/11/*{'VO3@/$$/@*?Nh^l+!+"&5462!4&#"!/!#>32]_gTRdgdQV?U I*Gg?!2IbbIJaaiwE3300 084#"$'&6?6332>4.#"#!"&54766$32z䜬m IwhQQhbF*@&('kz   _hQнQGB'(&*eoz(q!#"'&547"'#"'&54>7632&4762.547>32#".'632%k'45%&+~(  (h  &  \(  (  &  ~+54'k%5%l%%l$65+~  &  (  (\  &  h(  (~+%'!)19K4&"24&"26.676&$4&"24&"24&"2#!"'&46$ KjKKj KjKKje2.e<^P,bKjKKjKjKKj KjKKj##LlLKjKKjK jKKjK~-M7>7&54$ LhяW.{+9E=cQdFK1A  0) pJ2`[Q?l&٫C58.H(Y':d 6?32$64&$ #"'#"&'&4>7>7.546'&'&'# '32$7>54'Yj`a#",5NK ~EVZ|$2 $ |: $ 2$|ZV:(t}hfR88T h̲X(  &%(Hw(%& (XZT\MKG{x|!#"'.7#"'&7>3!2%632u  j H{(e 9 1bU#!"&546;5!32#!"&546;5!32#!"&546;5463!5#"&5463!2+!2328((88(``(88((88(``(88((88(`L4`(88(@(88(`4L`(8 (88(@(88((88(@(88((88(@(84L8(@(88((8L48OY"&546226562#"'.#"#"'.'."#"'.'.#"#"&5476$32&"5462И&4&NdN!>! 1X:Dx+  +ww+  +xD:X1 -U !*,*&4&hh&&2NN2D &  ..J< $$ 767#"&'"&547&547&547.'&54>2l4  2cKEooED ) ) Dg-;</- ?.P^P.? -/<;-gYY  .2 L4H|O--O|HeO , , Oeq1Ls26%%4.2,44,2.4%%62sL1qcqAAq4#!#"'&547632!2#"&=!"&=463!54632  @  `     ` ?`   @  @  !    54&+4&+"#"276#!"5467&5432632   `  _ v,Ԝ;G_j)``    _ ԟ7 ,>jL>54'&";;265326#!"5467&5432632    v,Ԝ;G_j) `   `7 ,>jL>X`$"&462#!"&54>72654&'547 7"2654'54622654'54&'46.' &6 &4&&4&yy %:hD:FppG9Fj 8P8 LhL 8P8 E; Dh:% >4&&4&}yyD~s[4Dd=PppP=d>hh>@jY*(88(*Y4LL4Y*(88(*YDw" A4*[s~>M4&"27 $=.54632>32#"' 65#"&4632632 65.5462&4&&4G9& <#5KK5!!5KK5#< &ܤ9Gpp&4&&4&@>buោؐ&$KjKnjjKjK$&jjb>Ppp %!5!#"&5463!!35463!2+32@\\8(@(8\@@\\@\(88(\@ 34#"&54"3#!"&5!"&5>547&5462;U gI@L4@Ԗ@4L2RX='8P8'=XR U;Ig04LjjL4*\(88(\@"4&+32!#!"&+#!"&5463!2pP@@Pjj@@\@\&0pj \\&-B+"&5.5462265462265462+"&5#"&5463!2G9L44L9G&4&&4&&4&&4&&4&L44L &=d4LL4 d=&&`&&&&`&&&&4LL4  &#3CS#!"&5463!2!&'&!"&5!463!2#!"&52#!"&=4632#!"&=463(8((88((`x c`(8@@@`((88(@(8(D 9 8(`@@@@@/?O_o-=%+"&=46;25+"&=46;2+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2+"&=46;2!!!5463!2#!"&5463!2 @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @ &&&&@  @ @  @  @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @  @  @   `&&&& /?O_o%+"&=46;25+"&=46;2+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2+"&=46;2!!#!"&=!!5463!24&+"#54&+";26=3;26%#!"&5463!463!2!2 @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @ 8(@(8 @  @  @  @  @ &&&@8((8@&@  @ @  @  @  @ @  @ @  @ @  @ @  @ @  @ @  @  @  @  (88(  @  ``   `` -&&& (88(&@<c$4&"2!#4&"254&+54&+"#";;26=326+"&5!"&5#"&46346?>;463!2KjKKjKjKKj&ԖԖ&&@&&KjKKjK jKKjK .&jjjj&4&@@&&#'1?I54&+54&+"#";;26=326!5!#"&5463!!35463!2+32 \\8(@(8\ \\@\(88(\: #32+53##'53535'575#5#5733#5;2+3@E&&`@@` `@@`&&E%@`@ @ @      @ 0 @!3!57#"&5'7!7!K5@   @5K@@@ #3%4&+"!4&+";265!;26#!"&5463!2&&&&&&&&w@www&&@&&&&@&&@www#354&#!4&+"!"3!;265!26#!"&5463!2&&&&&@&&@&w@www@&@&&&&&&@&:@www-M3)$"'&4762 "'&4762 s 2  .   2 w 2  .   2 w 2    2  ww  2    2  ww M3)"/&47 &4?62"/&47 &4?62S .  2 w 2   .  2 w 2  M . 2    2 .  . 2    2 .M3S)$"' "/&4762"' "/&47623 2  ww  2    2  ww  2    2 w 2   .v 2 w 2   .M3s)"'&4?62 62"'&4?62 623 .  . 2    2 .  . 2    2 .   2 w 2v .   2 w 2-Ms3 "'&4762s w 2  .   2 ww  2    2 MS3"/&47 &4?62S .  2 w 2  M . 2    2 .M 3S"' "/&47623 2  ww  2   m 2 w 2   .M-3s"'&4?62 623 .  . 2    2- .   2 w 2/4&#!"3!26#!#!"&54>5!"&5463!2  @ ^B && B^^B@B^ @  MB^%Q= &&& $$ (r^aa(^aa!C#!"&54>;2+";2#!"&54>;2+";2pPPpQh@&&@j8(PppPPpQh@&&@j8(Pp@PppPhQ&&j (8pPPppPhQ&&j (8p!C+"&=46;26=4&+"&5463!2+"&=46;26=4&+"&5463!2Qh@&&@j8(PppPPpQh@&&@j8(PppPPp@hQ&&j (8pPPppP@hQ&&j (8pPPpp@@ #+3;G$#"&5462"&462"&462#"&462"&462"&462"&462#"&54632K54LKj=KjKKjKjKKjL45KKjK<^^^KjKKjppp\]]\jKL45KjKKjKujKKjK4LKjKK^^^jKKjKpppr]]\  $$ ^aaQ^aa,#"&5465654.+"'&47623   #>bqb&44&ɢ5"  #D7euU6 &4&m 1X".4>2".4>24&#""'&#";2>#".'&547&5472632>3=T==T==T==T=v)GG+v@bRRb@=&\Nj!>3lkik3hPTDDTPTDDTPTDDTPTDD|x xXK--K|Mp<# )>dA{RXtfOT# RNftWQ,%4&#!"&=4&#!"3!26#!"&5463!2!28(@(88((88((8\@\\@\\(88(@(88(@(88@\\\\ u'E4#!"3!2676%!54&#!"&=4&#!">#!"&5463!2!2325([5@(\&8((88((8,9.+C\\@\ \6Z]#+#,k(88(@(88(;5E>:5E\\\ \1. $4@"&'&676267>"&462"&462.  > $$ n%%/02 KjKKjKKjKKjKfff^aayy/PccP/jKKjKKjKKjKffff@^aa$4@&'."'.7>2"&462"&462.  > $$ n20/%7KjKKjKKjKKjKfff^aa3/PccP/y jKKjKKjKKjKffff@^aa +7#!"&463!2"&462"&462.  > $$ &&&&KjKKjKKjKKjKfff^aa4&&4&jKKjKKjKKjKffff@^aa#+3C54&+54&+"#";;26=3264&"24&"2$#"'##"3!2@@KjKKjKKjKKjKܒ,gjKKjKKjKKjKXԀ,, #/;GS_kw+"=4;27+"=4;2'+"=4;2#!"=43!2%+"=4;2'+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;54;2!#!"&5463!2`````````````````````p`K55KK55Kp`````````````````````````5KK55KK@*V#"'.#"63232+"&5.5462#"/.#"#"'&547>32327676R?d^7ac77,9xm#@#KjK# ڗXF@Fp:f_ #WIpp&3z h[ 17q%q#::#5KKu't#!X: %#+=&>7p @ *2Fr56565'5&'. #"32325#"'+"&5.5462#"/.#"#"'&547>32327676@ͳ8 2.,#,fk*1x-!#@#KjK# ڗXF@Fp:f_ #WIpp&3z e`vo8t-  :5 [*#::#5KKu't#!X: %#+=&>7p  3$ "/&47 &4?62#!"&=463!2I.  2 w 2   -@). 2    2 . -@@-S$9%"'&4762  /.7> "/&47 &4?62i2  .   2 w E > u > .  2 w 2   2    2  ww !   h. 2    2 . ;#"'&476#"'&7'.'#"'&476' )'s "+5+@ա' )'F*4*Er4M:}}8 GO *4*~ (-/' #"'%#"&7&67%632B;>< V??V --C4 <B=cB5 !% %!b 7I))9I7 #"'.5!".67632y( #  ##@,( )8! !++"&=!"&5#"&=46;546;2!76232-SSS  SS``  K$4&"24&"24&"27"&5467.546267>5.5462 8P88P88P88P8P88P4,CS,4pp4,,4pp4,6d7AL*',4ppP88P8P88P8HP88P8`4Y&+(>EY4PppP4Y4Y4PppP4Y%*54&#"#"/.7!2<'G,')7N;2]=A+#H  0PRH6^;<T%-S#:/*@Z}   >h.%#!"&=46;#"&=463!232#!"&=463!2&&&@@&&&@&&&&&&&&&&&&f&&&&b#!"&=463!2#!"&'&63!2&&&&''%@% &&&&&&&&k%J%#/&'#!53#5!36?!#!'&54>54&#"'6763235 Ź}4NZN4;)3.i%Sin1KXL7觧*  #& *@jC?.>!&1' \%Awc8^;:+54&#"'6763235 Ź}4NZN4;)3.i%PlnEcdJ觧*  #& *-@jC?.>!&1' \%AwcBiC:D'P%! #!"&'&6763!2P &:&? &:&?5"K,)""K,)h#".#""#"&54>54&#"#"'./"'"5327654.54632326732>32YO)I-D%n  "h.=T#)#lQTv%.%P_ % %_P%.%vUPl#)#T=@/#,-91P+R[Ql#)#|'' 59%D-I)OY[R+P19-,##,-91P+R[YO)I-D%95%_P%.%v'3!2#!"&463!5&=462 =462 &546 &&&&&4&r&4&@&4&&4&G݀&&&&f s CK&=462 #"'32=462!2#!"&463!5&'"/&4762%4632e*&4&i76`al&4&&&&&}n  R   R zfOego&&5`3&&&4&&4& D R   R zv"!676"'.5463!2@@w^Cct~5  5~tcC&&@?JV|RIIR|V&&#G!!%4&+";26%4&+";26%#!"&546;546;2!546;232@@@@L44LL4^B@B^^B@B^4L  N4LL44L`B^^B``B^^B`LL4&"2%#"'%.5!#!"&54675#"#"'.7>7&5462!467%632&4&&4  @ o&&}c ;pG=(  8Ai8^^.   &4&&4&` ` fs&& jo/;J!# 2 KAE*,B^^B! ` $ -4&"2#"/&7#"/&767%676$!28P88PQr @ U @ {`PTP88P8P`  @U @rQ!6'&+!!!!2Ѥ 8̙e;<*@8 !GGGQII %764' 64/&"2 $$ f3f4:4^aaf4334f:4:^aa %64'&" 2 $$ :4f3f4F^aa4f44f^aa 764'&"27 2 $$ f:4:f4334^aaf4:4f3^aa %64/&" &"2 $$ -f44f4^aa4f3f4:w^aa@7!!/#35%!'!%j/d jg2|855dc b @! !%!!7!FG)DH:&H dS)U4&"2#"/ $'#"'&5463!2#"&=46;5.546232+>7'&763!2&4&&4f ]wq4qw] `dC&&:FԖF:&&Cd`4&&4& ]] `d[}&&"uFjjFu"&&y}[d#2#!"&546;4 +"&54&" (88(@(88( r&@&Ԗ8((88(@(8@&&jj'3"&462&    .  > $$ Ԗ>aX,fff^aaԖԖa>TX,,~ffff@^aa/+"&=46;2+"&=46;2+"&=46;28((88((88((88((88((88((8 (88((88((88((88((88((88/+"&=46;2+"&=46;2+"&=46;28((88((88((88((88((88((8 (88((88(88((88(88((885E$4&"2%&'&;26%&.$'&;276#!"&5463!2KjKKj   f  \ w@wwwjKKjK"G   ܚ  f   @www   $64'&327/a^ ! ^aaJ@%% 65/ 64'&"2 "/64&"'&476227<ij6j6u%k%~8p8}%%%k%}8p8~%<@% %% !232"'&76;!"/&76  ($>( J &% $%64/&"'&"2#!"&5463!2ff4-4ff4fw@wwwf4f-f4@www/#5#5'&76 764/&"%#!"&5463!248` # \P\w@www4`8  #@  `\P\`@www)4&#!"273276#!"&5463!2& *f4 'w@www`&')4f*@www%5 64'&"3276'7>332#!"&5463!2`'(wƒa8! ,j.( &w@www`4`*'?_`ze<  bw4/*@www-.  6 $$  (r^aaO(_^aa -"'&763!24&#!"3!26#!"&5463!2yB(( @   w@www]#@##   @ @www -#!"'&7624&#!"3!26#!"&5463!2y((@B@u @   w@www###@  @ @www -'&54764&#!"3!26#!"&5463!2@@####@w@wwwB((@@www`%#"'#"&=46;&7#"&=46;632/.#"!2#!!2#!32>?6#  !"'?_  BCbCaf\ + ~2   }0$  q 90r p r%D p u?#!"&=46;#"&=46;54632'.#"!2#!!546;2D a__ g *`-Uh1    ߫}   $^L  4b+"&=.'&?676032654.'.5467546;2'.#"ǟ B{PDg q%%Q{%P46'-N/B).ĝ 9kC< Q 7>W*_x*%K./58`7E%_ ,-3  cVO2")#,)9;J) "!* #VD,'#/&>AX>++"''&=46;267!"&=463!&+"&=463!2+32Ԫ$   pU9ӑ @/*f o  VRfq f=SE!#"&5!"&=463!5!"&=46;&76;2>76;232#!!2#![       % )   "  Jg Uh BW&WX hU g 84&#!!2#!!2#!+"&=#"&=46;5#"&=46;463!2j@jo g|@~vv u n#467!!3'##467!++"'#+"&'#"&=46;'#"&=46;&76;2!6;2!6;232+32QKt# #FNQo!"դѧ !mY Zga~bm] [o"U+, @h h@@X hh @83H\#5"'#"&+73273&#&+5275363534."#22>4.#2>ut 3NtRP*Ho2 Lo@!R(Ozh=,GID2F 8PuE>.'%&TeQ,jm{+>R{?jJrL6V @`7>wmR1q uWei/rr :Vr" $7V4&#"326#"'&76;46;232!5346=#'73#"'&'73267##"&54632BX;4>ID2F +>R{8PuE>.'%&TeQ,jm{?jJrL6 @`rr :Vr3>wmR1q uWei@ \%4&#"326#!"&5463!2+".'&'.5467>767>7>7632!2&%%&&&& &7.' :@$LBWM{#&$h1D!  .I/! Nr&&%%&&&&V?, L=8=9%pEL+%%r@W!<%*',<2(<&L,"r@ \#"&546324&#!"3!26%#!#"'.'.'&'.'.546767>;&%%&&&& &i7qN !/I.  !D1h$&#{MWBL$@: '.&&%%&&&&=XNr%(M&<(2<,'*%<!W@r%%+LEp%9=8=L  +=\d%54#"327354"%###5#5#"'&53327#"'#3632#"'&=4762#3274645"=424'.'&!  7>76#'#3%54'&#"32763##"'&5#327#!"&5463!2BBPJNC'%! B? )#!CC $)  54f"@@ B+,A  A+&+A  ZK35N # J!1331CCC $)w@www2"33FYF~(-%"o4*)$(* (&;;&&9LA3  8334S,;;,WT+<<+T;(\g7x:&&::&&<r%-@www  +=[c}#"'632#542%35!33!3##"'&5#327%54'&#"5#353276%5##"=354'&#"32767654"2 '.'&547>76 3#&'&'3#"'&=47632%#5#"'&53327''RZZ:kid YYY .06 62+YY-06 R[!.'CD''EH$VVX::Y X;:Y fyd/%jG&DC&&CD&O[52. [$C-D..D^^* ly1%=^I86i077S 3 $EWgO%33%OO%35 EEFWt;PP;pt;PP;pqJgTFQ%33&PP%33%R 7>%3!+}{'+"&72'&76;2+"'66;2U &  ( P *'eJ."-dZ-n -'74'&+";27&+";276'56#!"&5463!2~} 7e  ۩w@www"  $Q #'!# @www I-22#!&$/.'.'.'=&7>?>369II ! ' $ !01$$%A' $ ! g  \7@)(7Y   \7@)(7Y @ '5557 ,VWQV.RW=?l%l`~0  !#!#%777 5! R!!XCCfff݀# `,{{{`Og4&"2 &6 $"&462$"&62>7>7>&46.'.'. '.'&7>76 Ԗ HR6L66LGHyU2L  L2UyHHyU2L  L2UyHn X6X  XX ԖԖH6L66L6 L2UyHHyU2L  L2UyHHyU2L n6X  XX  2#!"&54634&"2$4&"2ww@ww||||||w@www||||||| !3 37! $$ n6^55^h ^aaM1^aaP *Cg'.676.7>.'$7>&'.'&'? 7%&'.'.'>767$/u5'&$I7ob?K\[zH,1+.@\7':Yi4&67&'&676'.'>7646&' '7>6'&'&7>7#!"&5463!2PR$++'TJXj7-FC',,&C ."!$28 h /" +p^&+3$ i0(w@www+.i6=Bn \C1XR:#"'jj 8Q.cAj57!? "0D$4" P[ & 2@wwwD"%.5#5>7>;!!76PYhpN!HrD0M C0N#>8\xx: W]oW-X45/%'#.5!5!#"37>#!"&5463!2p>,;$4 5eD+WcEw@wwwK()F ,VhV^9tjA0/@www@#"'&76;46;23   &  ++"&5#"&7632  ^  c  & @#!'&5476!2 &  ^  b '&=!"&=463!546  &    q&8#"'&#"#"5476323276326767q'T1[VA=QQ3qqHih"-bfGw^44O#A?66%CKJA}} !"䒐""A$@C3^q|z=KK?6 lk)  %!%!VVuuu^-m5w}n~7M[264&"264&"2"&546+"&=##"&5'#"&5!467'&766276#"&54632    *<;V<<O@-K<&4'>&4.'.'.'.'.'&6&'.'.6767645.'#.'6&'&7676"&'&627>76'&7>'&'&'&'&766'.7>7676>76&6763>6&'&232.'.6'4."7674.'&#>7626'.'&#"'.'.'&676.67>7>5'&7>.'&'&'&7>7>767&'&67636'.'&67>7>.'.67 \  U7  J#!W! '  " ';%  k )"    '   /7*   I ,6 *&"!   O6* O $.( *.'  .x,  $CN      * 6   7%&&_f& ",VL,G$3@@$+ "  V5 3"  ""#dA++ y0D- %&n 4P'A5j$9E#"c7Y 6" & 8Z(;=I50 ' !!e  R   "+0n?t(-z.'< >R$A"24B@( ~ 9B9, *$        < > ?0D9f?Ae  .(;1.D 4H&.Ct iY% *  7      J  <    W 0%$  ""I! *  D  ,4A'4J" .0f6D4pZ{+*D_wqi;W1G("% %T7F}AG!1#%  JG 3  '.2>Vb%&#'32&'!>?>'&' &>"6&#">&'>26 $$ *b6~#= XP2{&%gx| .W)oOLOsEzG< CK}E $MFD<5+ z^aa$MWM 1>]|YY^D եA<KmE6<" @9I5*^aa>^4./.543232654.#"#".#"32>#"'#"$&547&54632632':XM1h*+D($,/9p`DoC&JV;267676&#!"&=463!267 #!"'&5463!26%8#! &&Z"M>2! ^I 7LRx_@>MN""`=&&*%I},  L7_jj9/%4&#!"3!264&#!"3!26#!"&5463!2  &&&&&&&&19#"'#++"&5#"&5475##"&54763!2"&4628(3- &B..B& -3(8IggI`(8+Ue&.BB.&+8(kk`%-"&5#"&5#"&5#"&5463!2"&4628P8@B\B@B\B@8P8pPPp@`(88(`p.BB.0.BB.(88(Pppͺ!%>&'&#"'.$ $$ ^/(V=$<;$=V).X^aaJ`"(("`J^aa,I4."2>%'%"/'&5%&'&?'&767%476762%6[՛[[՛o ܴ   $ $ " $ $  ՛[[՛[[5` ^ ^ 2` `2 ^ ^ ` 1%#"$54732$%#"$&546$76327668ʴhf킐&^zs,!V[vn) 6<ׂf{z}))Ns3(@ +4&#!"3!2#!"&5463!2#!"&5463!2@&&&f&&&&@&&&&4&&4&@&&&&&&&& `BH+"/##"./#"'.?&5#"&46;'&462!76232!46 `&C6@Bb03eI;:&&&4L4&F Z4&w4) '' 5r&4&&4&&4}G#&/.#./.'&4?63%27>'./&'&7676>767>?>%6})(."2*&@P9A #sGq] #lh<* 46+(  < 5R5"*>%"/ +[>hy  K !/Ui%6&'&676&'&6'.7>%.$76$% $.5476$6?62'.76&&'&676%.76&'..676#"NDQt -okQ//jo_  %&JՂYJA-.-- 9\DtT+X?*<UW3' 26$>>W0 {"F!"E    ^f`$"_]\<`F`FDh>CwlsJ@ ;=?s  :i_^{8+?` ) O`s2RDE58/Kr #"'>7&4$&5mī"#̵$5$"^^W=acE*czk./"&4636$7.'>67.'>65.67>&/>z X^hc^O<q+f$H^XbVS!rȇr?5GD_RV@-FbV=3! G84&3Im<$/6X_D'=NUTL;2KPwtPt=  &ռ ,J~S/#NL,8JsF);??1zIEJpqDIPZXSF6\?5:NR=;.&1 +!"&=!!%!5463!2sQ9Qs***sQNQsBUw wUBFHCCTww%1#"&=!"&=463!54632.  6 $$     ` ?(r^aa    (_^aa%1#!#"'&47632!2.  6 $$   @  ` (r^aa  ?  @  (_^aa/#"'&476324&#!"3!26#!"&5463!2&@& @   w@www& @B@ &  @ @www"&462  >& $$ Ԗ*(r^aaԖԖ (^aa]6#"$54732>%#"'!"&'&7>32'!!!2f:лѪz~u: ((%`V6B^hD%i(]̳ޛ *>6߅r#! 3?^BEa߀#9#36'&632#"'&'&63232#!"&5463!2 Q,&U #+' ;il4L 92<D`w@www`9ܩ6ɽ ]`C477&@wwwD+"&5#"'&=4?5#"'&=4?546;2%6%66546;2  wwwwcB G]B Gty]ty #3C#!+"&5!"&=463!46;2!24&#!"3!26#!"&5463!2@`@`^BB^^B@B^www@w@`@`2@B^^BB^^ww@w'/?P+5#"&547.467&546;532!764'!"+32#323!&ln@ :MM: @nY*Yz--zY*55QDDU9pY-`]]`.X /2I$ t@@/!!/@@3,$,3$p$00&*0&& !P@RV2#"&/#"&/#"&546?#"&546?'&54632%'&54632763276%>S]8T;/M77T7%>ww@ww!"5bBBb// * 8(@(87)(8=%/' #?w@www#~$EE y &L(88e):8(%O r    O?GQaq47&67>&&'&67>&"$32#"#"'654  $&6 $6&$ CoL.*K  Px.* iSƓ i 7J ?~pi{_Я;lLUZ=刈刈_t'<Z :!   @! j`Q7  $ky, Rfk*4LlL=Z=刈&$&546$7%7&'5>]5%w&P?zrSF!| &0 ##!"&5#5!3!3!3!32!546;2!5463) );));;))&&&@@&&&  6 $&727"'%+"'&7&54767%&4762֬>4P t+8?::  ::A W` `EvEEvE<."e$IE&O &EI&{h.`m"&#"&'327>73271[ >+)@ (]:2,C?*%Zx/658:@#N C= E(oE=W'c:#!#"$&6$3 &#"32>7! ڝyy,{ۀہW^F!LC=y:yw߂0H\R%"N^ '&76232762$"&5462"&46274&"&'264&#"'&&#"32$54'>$ $&6$ G>>0yx14J55J5J44J5Fd$?4J55%6E#42F%$fLlLq>>11J44%&4Z%44J54R1F$Z-%45J521Z%F1#:ʎ 9LlL#Qa"'&7622762%"&5462"&546274&#"&'73264&#"'&&#"32654'>#!"&5463!2 55 **.>.-@-R.>.-@-<+*q6- -- 0OpoOxzRrqP6z~{{Prr^aa]054&"#"&5!2654632!#"&57265&'&#".'&'#"&5467%&4>7>3263232654.547'654'63277.'.*#">7?67>?>32#"'7'>3'>3235?KcgA+![,7*  2(-#=  /~[(D?G  |,)"# +)O8,+'6 y{=@0mI#938OAE` -  )y_/FwaH8j7=7?%a % %!?)L J 9=5]~pj  %(1$",I  $@((  +!.S -L__$'-9L 5V+ 6 T+6.8- $ 0 + t |S 16]&#"'&#"67>76'&'&#"67>32764.#"#.32>67>7 $&54>7>7>7rJ@ "kb2)W+ ,5/1   #   Z -!$IOXp7sLCF9vz NAG#/ 5|Հ';RKR/J#=$,9,+$UCS7'2"1  ! / ,   /--ST(::(ep4AM@=I>".)xΤlsY|qK@ %(YQ&N EHv~<Zx'#"&5467&6?2?'&"/.7.546326#"&'&/7264/7'764&"'?>>32.AUpIUxYE.A %%%h% %hJ%D,FZxULs TgxUJrVD %hJ%@/LefL.C %Jh%CV sNUxϠ@.FZyUHpVA %h&%% %Ji%CWpIUybJ/Uy^G,D %Jh%@U sMt UC %hJ%C-KfyEX[_gj&/&'.''67>7>7&'&'&'>76763>7>#&'&'767672'%'7'+"&'&546323267>7%#"'4'6767672,32,+DCCQLDf' % :/d B 4@ }  &!0$?Jfdf-.=6(:!TO? !IG_U% . k*.=; 5gN_X "  ##  292Q41   *6nA;| BS N.  %1$ 6 $nk^ '7GWgw2+"&5463#!"&5463!254&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";26#"&=! B^^BB^^B:FjB^8((`( `(8^BB^^B@B^"vEj^B(8(`(8(/?O_o/?2#!"&5463;26=4&+";26=4&+";26=4&+";26=4&+"54&+";2654&+";2654&+";2654&+";2654&+";2654&#!"3!2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";26@&&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`' "&5#"&5&4762!762$"&462B\B@B\BOpP.BB..BB.8$PO広3CQ#".54>32#".546322#"&#"#"54>%".54>32%2#"&54> &X=L|<&X=M{2r_-$$-_rUU%&&5%ő'- "'.546762@FF$@B@$.&,&.]]|q#<<#(BB B%'-%'-'%'-"'%&'"'%.5467%467%62@ll@ll,@GG&!@@@@@@!&+#+#6#+$*`:p:px p=`$>>$&@&@ @&p@ &.A!!"!&2673!"5432!%!254#!5!2654#!%!2#!8Zp?vdΊens6(N[RWu?rt1SrF|iZ@7މoy2IMC~[R yK{T:%,AGK2#!"&5463!!2654'654.#532#532"&5!654&#"327#2#>!!ww@ww~uk'JTMwa| DH> I1q Fj?w@wwwsq*4p9O*¸Z^qh LE "(nz8B M'?"&4624&#"'.'324&#"3267##"&/632632.ʏhhMALR vGhг~~K „yO^   ʏʏВ*LM@!שwwȍde)qrOPqȦs:03=7'.?67'67%'>&%'7%7./6D\$>  "N,?a0#O 1G9'/P(1#00  ($=!F "9|]"RE<6 'o9%8J$\ :\HiTe<?}V#oj? d,6%N#" HlSVY]C =@C4&"2!.#!"4&"2+"&=!"&=#"&546;>3!232^^^Y ^^^`pppp`]ibbi]~^^^e^^^PppPPppP]^^]3;EM2+"&=!"&=#"&546;>;5463!232264&"!.#!"264&" ]`pppp`]ibbi^^^dY !^^^]@PppP@@PppP@]^^] ^^^e^^^ 3$#!#!"&5467!"&47#"&47#"&4762++&2 $$ 2&&&4&&Z4&&##&&4&4&44&m4&m+DP4'&#"32763232674'&!"32763 3264'&$#"32763232> $$ g* o`#ə0#z#l(~̠) -g+^aaF s" +g (* 3#!| #/IK/%*%D= )[^aa !!!'!!77!,/,-a/G t%/;<HTbcq%7.#"32%74'&"32765"/7627#"5'7432#"/7632#"5'7432#"&5'74632 #"/6327#"/6327#"/46329"&/462"&/>21"&/567632#!.547632632  *     X    ^  `    ^  b  c   fu U`59u  4J   l~ ~ F 2    m | O,           ru| u  " )9 $7 $&= $7 $&= $7 $&=  $&=46w`ww`ww`wb`VTEvEEvETVTEvEEvET*VTEvEEvET*EvEEvEEvEEv#^ct#!"&5463!2!&'&!"&5!632#"&'#"/&'&7>766767.76;267674767&5&5&'67.'&'&#3274(8((88((`x c`(8!3;:A0?ݫY   ^U 47D$    74U3I  |L38wtL0`((88(@(8(D 9 8(Q1&(!;  (g- Up~R2(/{E(Xz*Z%(i6CmVo8 #T#!"&5463!2!&'&!"&5!3367653335!3#4.5.'##'&'35(8((88((`x c`(8iFFZcrcZ`((88(@(8(D 9 8(kk" kkJ  ! k#S#!"&5463!2!&'&!"&5!%!5#7>;#!5#35!3#&'&/35!3(8((88((`x c`(8-Kg kL#DCJg  jLD`((88(@(8(D 9 8(jj jjkk kk#8C#!"&5463!2!&'&!"&5!%!5#5327>54&'&#!3#32(8((88((`x c`(8 G]L*COJ?0R\wx48>`((88(@(8(D 9 8(jjRQxk !RY#*2#!"&5463!2!&'&!"&5!!57"&462(8((88((`x c`(8Pppp`((88(@(8(D 9 8(ppp  #*7JR5#5#5#5##!"&5463!2!&'&!"&5##5!"&54765332264&"<(8((88((`x c`(8kޑcO"jKKjK`((88(@(8(D 9 8(SmmS?M&4&&4#9L^#!"&5463!2!&'&!"&5!#"/#"&=46;76276'.'2764'.(8((88((`x c`(8 6ddWW6&44`((88(@(8(D 9 8(. G5{{5]]$5995#3C#!"&5463!2!&'&!"&5!2#!"&5463#"'5632(8((88((`x c`(84LL44LL4l  `((88(@(8(D 9 8(L44LL44L  Z #7K[#!"&5463!2!&'&!"&5!>&'&7!/.?'&6?6.7>'(8((88((`x c`(8` 3  3  3  3 v  ?  `((88(@(8(D 9 8( & & - & &  ?   '6#'. '!67&54632".'654&#"32eaAɢ/PRAids`WXyzOvд:C;A:25@Ң>-05rn`H( ' gQWZc[ -%7' %'-'% %"'&54762[3[MN 3",""3,3"ong$߆]gn$+) ")")" x#W#"&#!+.5467&546326$32327.'#"&5463232654&#"632#".#"oGn\ u_MK'̨|g? CM7MM5,QAAIQqAy{b]BL4PJ9+OABIRo?z.z n6'+s:zcIAC65D*DRRD*wyal@B39E*DRRD*'/7  $&6$ 6277&47' 7'"' 6& 6'lLRRZB|RR>dZZLlLZRR«Z&>«|R ! $&54$7 >54'5PffP牉@s-ff`-c6721>?>././76&/7>?>?>./&31#"$&(@8!IH2hM>'  )-* h'N'!'Og,R"/!YQG54'63&547#5#"=3235#47##6323#324&"26%#!"&5463!2F]kbf$JMM$&N92Z2&`9UW=N9:PO;:dhe\=R +)&')-S99kJ<)UmQ/-Ya^"![Y'(<`X;_L6#)|tWW:;X  #'#3#!"&5463!2) p*xeשw@www0,\8@www9I#"'#"&'&>767&5462#"'.7>32>4."&'&54>32JrO<3>5-&FD(=Gq@C$39aLL²L4 &) @]v q#CO!~󿵂72765'./"#"&'&5 }1R<2" 7MW'$  ;IS7@5sQ@@)R#DvTA ; 0x I)!:> +)C 6.> !-I[4&#"324&#"3264&#"324&#"326&#"#".'7$4$32'#"$&6$32D2)+BB+)3(--(31)+BB+)4'--'4'#!0>R HMŰ9ou7ǖD䣣 R23('3_,--,R23('3_,--,NJ ?uWm%#"'%#"'.5 %&'&7632! ; `u%"(!]#c)(  #"'%#"'.5%&'&76 !  (%##fP_"(!)'+ʼn4I#"$'&6?6332>4.#"#!"&54766$32#!"&=46;46;2z䜬m IwhQQhbF*@&('k@z   _hQнQGB'(&*eozΘ@@`  >. $$ ffff^aafff^aa>"&#"#"&54>7654'&#!"#"&#"#"&54>765'46.'."&54632326323!27654'.5463232632,-,,",:! %]& %@2(/.+*)6! <.$..**"+8#  #Q3,,++#-:#"$$ /:yuxv)%$ /?CG%!5%2#!"&5463!5#5!52#!"&54632#!"&5463#5!5`&&&& &&&&&&&&@&&&&&&&&&&&&%2 &547%#"&632%&546 #"'6\~~\h ~\h\ V V VV%5$4&#"'64'73264&"&#"3272#!"&5463!2}XT==TX}}~>SX}}XS>~}w@www~:xx:~}}Xx9}}9xX}@www/>LXds.327>76 $&6$32762#"/&4762"/&47626+"&46;2'"&=462#"'&4?62E0l,  *"T.D@Yooo@5D [  Z  Z  [ ``[ Z  2 ,l0 (T" .D5@oooY@D, Z  [  [  Z ``EZ  [ 5%!  $&66='&'%77'727'%amlLmf?55>fFtuutFLlLHYC L||L Y˄(E''E*( /?IYiy%+"&=46;2+"&=46;2+"&=46;2+"&=46;2%"&=!#+"&=46;2+"&=46;2+"&=46;2+"&=46;2!54!54>$ +"&=46;2#!"&=@&&@3P > P3&&rrr&&rrr he 4LKM:%%:MKL4WT&&%/9##!"&563!!#!"&5"&5!2!5463!2!5463!2&&&&&&  &&&i@&&@&7'#5&?6262%%o;j|/&jJ%p&j;&i&p/|jţ%Jk%o%  :g"&5462#"&546324&#!"263662>7'&75.''&'&&'&6463!276i~ZYYZ~@OS;+[G[3YUD#o?D&G3I=JyTkBuhNV!WOhuAiSy*'^CC^'*SwwSTvvTSwwSTvvWID\_"[ gq# /3qFr2/ $rg%4 HffHJ4d#!#7!!7!#5!VFNrmNNN N!Y+?Ne%&'&'&7>727>'#&'&'&>2'&'&676'&76$7&'&767>76 '6# <;11x# *# G,T93%/#0vNZ;:8)M:( &C.J}2 %0  ^*  JF &7'X"2LDM" +6 M2+'BQfXV#+] #' L/(eB9  #,8!!!5!!5!5!5!5#26%!!26#!"&5!5&4& &pPPp@@&&@!&@PppP@*  9Q$"&54627"."#"&547>2"'.#"#"&5476$ "'&$ #"&5476$ (}R}hLK NN Ud: xx 8    ,, |2222 MXXM ic,>>,   ̺  '/7?KSck{4&"2$4&"24&"24&"24&"24&"24&"24&"24&"264&"24&#!"3!264&"2#!"&5463!2KjKKjKjKKjKjKKjKKjKKjKjKKjKjKKjKKjKKjKjKKjKLhLLhLKjKKj&&&&KjKKjL44LL44L5jKKjKKjKKjKjKKjKjKKjKjKKjKjKKjKjKKjKjKKjK4LL44LLjKKjK&&&&jKKjK4LL44LL 'E!#"+"&7>76;7676767>'#'"#!"&7>3!2W",&7' #$ &gpf5 O.PqZZdS -V"0kqzTxD!!8p8%'i_F?;kR(` !&)' (2!&6367! &63!2! `B 1LO(+#=)heCQg#s`f4#6q'X|0 -g >IY#6?>7&#!%'.'33#&#"#"/3674'.54636%#"3733#!"&5463!24  : @7vH%hEP{0&<'VFJo1,1.F6A#L44LL44L"% 7x'6 O\JYFw~v^fH$ ! "xdjD"!6`J4LL44LL +3@GXcgqz -<JX{&#"327&76'32>54.#"35#3;5#'#3537+5;3'23764/"+353$4632#"$2#462#"6462""'"&5&5474761256321##%354&'"&#"5#35432354323=#&#"32?4/&54327&#"#"'326'#"=35#5##3327"327'#"'354&3"5#354327&327''"&46327&#"3=#&#"32?"5#354327&3=#&"32?"#3274?67654'&'4/"&#!"&5463!2_gQQh^_~\[[\]_^hQQge<F$$$ !!&&/ !/  !! 00/e&'!"e$   '!!''   8''NgL44LL44LUQghQUk=("  ! =))=2( '! 'L#(>( & DC(>(zL#DzG)<)4LL44LL  BWbjq}+532%+5324&+32763#4&'.546327&#"#"'3265#"&546325&#"32 !264&"2%#'#735#535#535#3'654&+353#!"&5463!29$<=$@?SdO__J-<AA@)7")9,<$.%0*,G3@%)1??.+&((JgfJ*A!&jjjGZYGиwsswPiL>8aA !M77MM77M3! 4erJ]&3YM(, ,%7(#)  ,(@=)M%A20C&Mee(X0&ĖjjjV 8Z8J9N/4$ 8NN88NN  #&:O[ $?b3'7'#3#%54+32%4+324+323'%#5#'#'##337"&##'!!732%#3#3##!"&53733537!572!56373353#'#'#"5#&#!'#'#463!2#"5#"5!&+&+'!!7353273532!2732%#54&+#32#46.+#2#3#3##+53254&".546;#"67+53254&.546;#"#'#'##"54;"&;7335wY-AJF=c(TS)!*RQ+*RQ+Y,B^9^Ft`njUM ') ~PSPRm٘M77Mo7q @)U 8"E(1++NM77Mx378D62W74;9<-A"EA0:A F@1:ؗBf~~""12"4(w$#11#@}}!%+%5(v$:O\zK?* $\amcrVlOO176Nn23266&+"&#"3267;24&+"'&+";27%4&+";2?>23266&+"&#"3267;254+";27#76;2#!"&5463!23%#2%%,,  _3$$2%%M>AL Vb5)LDHeE:< EM j,K'-R M ~M>AR  Vb5)LEHeE:< E J ABI*'! ($rL44LL44Lv%1 %3!x*k $2 %3!;5h n a !(lI;F   rp p8;5h t a !(lI;F ` #k 4LL44LL  2HW[lt#"'5632#6324&'.54327&#"#"&'32767#533275#"=5&#"'#36323#4'&#"'#7532764&"24'&#"327'#"'&'36#!"&5463!2=!9n23BD$ &:BCRM.0AC'0RH`Q03'`.>,&I / * / 8/n-(G@5$ S3=,.B..B02^`o?7je;9G+L44LL44LyE%# Vb;A !p &'F:Aq)%)#orgT$ v2 8)2z948/{ 8AB..B/q?@r<7(g/4LL44LL ?#!"&'24#"&54"&/&6?&5>547&54626=L4@ԕ;U g3 T 2RX='8P8|5 4Ljj U;Ig@   `  "*\(88(]k  &N4#"&54"3 .#"#!"&'7!&7&/&6?&5>547&54626;U gIm*]Z0L4@ԕ=o=CT T 2RX='8P8|5  U;IgXu?bl3@4Ljja`   `  "*\(88(]k/7[%4&+";26%4&+";26%4&+";26!'&'!+#!"&5#"&=463!7>3!2!2@@@@@@0 o`^BB^`5FN(@(NF5@@@u  @LSyuS@%44%,<H#"5432+"=4&#"326=46;2  >. $$ ~Isy9"SgR8vHD w ffff^aam2N+ )H-mF+10*F +fff^aab4&#"32>"#"'&'#"&54632?>;23>5!"3276#"$&6$3 k^?zb=ka`U4J{K_/4^W&  vx :XB0܂ff ) fzzXlz=lapzob35!2BX G@8  ' '=vN$\ff  1 SZz8zX#("/+'547'&4?6276 'D^h  i%5@%[i  h]@]h  i%@5%[i  h^@@)2#"&5476#".5327>OFi-ay~\~;'S{s:D8>)AJfh]F?X{[TC6LlG]v2'"%B];$-o%!2>7>3232>7>322>7>32".'.#"#"&'.#"#"&'.#"#546;!!!!!32#"&54>52#"&54>52#"&54>52-P&+#($P.-P$'#+&PZP&+#"+&P-($P-.P$(#+$P.-P$'#+&P-.P$+#pP@@PpH85K"&ZH85K"&ZH85K"&Z@Pp@@@pMSK5, :&LMSK5, :&LMSK5, :& !!3 ! @@@  #"$$3!!2"jaѻxlalxaaj!!3/"/'62'&63!2'y  `I  yMy `I y'W`#".'.#"32767!"&54>3232654.'&546#&'5&#" 4$%Eӕ;iNL291 ;XxR`f՝Q8TWiWgW:;*:`Qs&?RWXJ8 oNU0 J1F@#) [%6_POQiX(o`_?5"$iʗ\&>bds6aP*< -;iFn* -c1BWg4'.'4.54632#7&'.#"#"'.#"32767'#"&54632326#!"&5463!2#$( 1$6]' !E3P|ad(2S;aF9'EOSej]m] <*rYshpt.#)$78L*khw@wwwB % $/$G6 sP`X):F/fwH1pdlqnmPHuikw_:[9D'@www34."2>$4.#!!2>#!".>3!2QнQQнQQh~wwhfffнQQнQQнQZZQffff#>3!2#!".2>4."fffнQQнQQffffQнQQн ,\!"&?&#"326'3&'!&#"#"'  5467'+#"327#"&463!!'#"&463!2632(#AHs9q ci<= #]$ KjKKjKKjKKjH#j#H&&&KjKKjKg V i jKKjKKjKKjK ..n(([5KK55KK5[poNv<+#"'#"&546;&546$32322$B$22$$*$22$Xڭӯ$22$tX'hs2$ϧkc$22$1c$2F33F3VVT2#$2ԱVT2#$2g#2UU݃ 2$#2UU1݃2 ,u54#"67.632&#"32654'.#"32764.'&$#"7232&'##"&54732654&#"467&5463254632>32#"'&ru&9%" *#͟ O%GR=O&^opC8pP*bY _#$N Pb@6)?+0L15 "4$.Es  5IQ"!@ h "Y7e|J>ziPeneHbIlF>^]@n*9 6[_3#"&54632#.#"32%3#"&54632#.#"326%4&'.'&! ! 7>7>! =39? 6'_ >29? 5'17m-VU--,bW.뮠@Fyu0HC$뮠@Fyu0HC$L= ?? <=! A <`;+"&54&#!+"&5463!2#!"&546;2!26546;2pЇ0pp@Ipp>Sc+"&=46;254&+"&+";2=46;2;2=46;2;2%54&#!";2=;26#!"&5463!2A5DD5A7^6a7MB55B7?5B~```0`rr5A44A5v5AA5f*A``0` !!!! #!"&5463!2ړ7H7jv@vvv':@vvvMUahmrx#"'!"'!#"&547.547.54674&547&54632!62!632!#!627'!%!"67'#77!63!!7357/7'%# %'3/&=&' 5#?&547 6!p4q"""6" 'h*[ |*,@?wAUMpV@˝)Ϳw7({*U%K6=0(M "! O dX$k !! ! b [TDOi @6bxBAݽ5  ɝ:J +3,p x1Fi (R 463!#!"&5%'4&#!"3`а@..@A-XfB$.BB..C} )&54$32&'%&&'67"w`Rd]G{o]>p6sc(@wgmJPAjyYWa͊AZq{HZ:<dv\gx>2ATKn+;"'&#"&#"+6!263 2&#"&#">3267&#">326e~└Ȁ|隚Ν|ū|iyZʬ7Ӕްr|uѥx9[[9jj9ANN+,#ll"BS32fk[/?\%4&+";26%4&+";26%4&+";26%4&+";26%#!"&5467&546326$32]]eeeeee$~i qfN-*#Sjt2"'qCB8!'> !%)-159=AEIMQUY]agkosw{! %! 5!#5#5#5#5#57777????#5!#5!#5!#5!#5!#5!#5!#5#537#5!#5!#5!#5!#5!#55#535353535353%"&546326#"'#32>54.&54>3237.#"Q%%%%%%%%%?iiihOiixiiyiixiiArssrrssr%sssrrssNs%%%%%%%%%%'32#".543232654&#"#"&54654&#"#"&547>326ڞUzrhgrxSПdU 7#"&463!2!2&&4&&&&4&KjKKjKjKKj &&&%&& &&4&&&&4&&&5jKKjKKjKKjK%z 0&4&&3D7&4& %&'S4&"4&"'&"27"&462"&462!2#!"&54>7#"&463!2!2&4&4&4&4KjKKjKjKKj &&&%&& &&4&%&&ے&4"jKKjKKjKKjK%z 0&4&&3D7&4& %& & !'! !%!!!!%"'.763!2o]FooZY@:@!!gf//I62'"/"/"/"/"/"/"/7762762762762762762%"/77627&6?35!5!!3762762'"/"/"/"/"/"/%5#5!4ZSS6SS4SS4SS4SS4SS4SS4ZSS4SS4SS4SS4SS4SS4S-4ZSS4S@4SS4ZSS6SS4SS4SS4SS4SS4S@ZSSSSSSSSSSSSSSZSSSSSSSSSSSSSyZRRR@%:= :+: =RRZSSSSSSSSSSSSSCv!/&'&#""'&#" 32>;232>7>76#!"&54>7'3&547&547>763226323@``` VFaaFV      $. .$     yy .Q5ZE$ ,l*%>>%*>*98(QO!L\p'.'&67'#!##"327&+"&46;2!3'#"&7>;276;2+6267!"'&7&#"(6&#"#"' Dg OOG`n%ELL{@&&Nc,sU&&!Fre&&ss#/,<= #]gL oGkP'r-n&4&2-ir&&?o  4 _5OW! .54>762>7.'.7>+#!"&5#"&5463!2"&462{{BtxG,:`9(0bԿb0(9`:,GxtB&@&&@&K55K`?e==e?1O6# ,  #$  , #6OO&&&&5KK?!"'&'!2673267!'. ."!&54632>321 4q#F""8'go#- #,"tYg>oP$$Po> Zep#)R0+I@$$@I++332++"&=#"&=46;.7>76$  @ ᅪ*r@@r'/2+"&5".4>32!"&=463  &@~[՛[[u˜~gr&`u՛[[՛[~~@r=E32++"&=#"&=46;5&547&'&6;22676;2  >``@``ٱ?E,,=?rH@``@GݧH`jjrBJ463!2+"&=32++"&=#"&=46;5.7676%#"&5   &@~``@``  vXr&@``@+BF`rks463!2+"&=32++"&=#"&=46;5&547'/.?'+"&5463!2+7>6 %#"&5   &@~``@``~4e  0  io@& jV  0  Z9r&@``@Gɞ5o , sp &@k^ , c8~~`r8>KR_32++"&=!+"&=#"&=46;.767666'27&547&#"&'2#" @@ 'Ϋ'sggsww@sgg@@-ssʃl99OOr99FP^l463!2+"&=$'.7>76%#"&=463!2+"&=%#"&54'>%&547.#"254&' &@L?CuГP vY &@;"ޥ5݇ޥ5`&_ڿgwBF@&J_ s&&?%x%xJP\h463!2+"&='32++"&=#"&=46;5.7676632%#"&56'327&7&#"2#" &@L? ߺu``@``} ຒɞueeu9uee&_"|N@``@""|a~lo99r9@9;C2+"&5"/".4>327'&4?627!"&=463  &@Ռ .  N~[՛[[u˜N .  gr&`֌  . Ou՛[[՛[~N  . @r9A'.'&675#"&=46;5"/&4?62"/32+  '֪ \  . 4 .  \r|ݧ憛@\ .    . \@r~9A"/&4?!+"&=##"$7>763546;2!'&4?62  m  - @ݧ憛@& -  @rm4 -  ٮ*   - r+"&5&54>2  @[՛[rdGu՛[[r  ".4>2r[՛[[՛r5՛[[՛[[$2#!37#546375&#"#3!"&5463#22#y/Dz?s!#22#2##2S88 2#V#2L4>32#"&''&5467&5463232>54&#"#"'.Kg&RvgD $ *2% +Z hP=DXZ@7^?1 ۰3O+lh4`M@8'+c+RI2 \ZAhSQ>B>?S2Vhui/,R0+ ZRkmz+>Q2#"'.'&756763232322>4."7 #"'&546n/9bLHG2E"D8_ pdddxO"2xxê_lx2X  !+'5>-pkW[C I I@50Oddd˥Mhfxx^ә #'+/7!5!!5!4&"2!5!4&"24&"2!!! 8P88P 8P88P88P88PP88P8 P88P88P88P8 +N &6 !2#!+"&5!"&=463!46;23!#!"&54>32267632#"_>@`     `  L4Dgy 6Fe=OOU4L>   ` `  4L2y5eud_C(====`L43V &6 #"/#"/&54?'&54?6327632#!"&54>32 7632_>     %%Sy 6Fe=J%>     %65%Sy5eud_C(zz.!6%$!2!!!46;24&"2!54&#!"&&&@ԖV@&&@&&ԖԖ@&3!!! !5!'!53!! #7IeeI7CzCl@@@#2#!"&?.54$3264&"!@մppp((ppp#+/2#!"&?.54$3264&"!264&"!@մ^^^@^^^@((^^^^^^v(#"'%.54632 "'% 632U/@k0G,zD# [k# /tg F Gz  #'#3!) p*xe0,\8T #/DM%2<GQ^lw &'&676676&'&7654&'&&546763"#"'3264&7.>&'%'.767&7667&766747665"'.'&767>3>7&'&'47.'.7676767&76767.'$73>?>67673>#6766666&'&6767.'"'276&67&54&&671&'6757>7&"2654&57>&>&'5#%67>76$7&74>=.''&'&'#'#''&'&'&'65.'&6767.'#%&''&'#2%676765&'&'&7&5&'6.7>&5R4&5S9 W"-J0(/r V"-J0(.)#"6&4pOPppc|o}vQ[60XQW1V  # 5X N"& . ) D>q J:102(z/=f*4!> S5b!%  (!$p8~5..:5I  ~T 4~9p# ! ) & ?()5F 1   d%{v*: @e s|D1d {:*dAA|oYk'&<tuut&v HCXXTR;w 71™ Z*&' 1  9? . $Gv 5k65P.$.`aasa``Z9k'9؋ӗa-*Gl|Me_]`F& OܽsDD!/+``aa``a154&'"&#!!26#!"&5463!2    iLCly5)*Hcelzzlec0hb,,beIVB9@RB9J_L44LL44L44%2"4:I;p!q4bb3p (P`t`P(6EC.7BI64LL44LL  .>$4&'6#".54$ 4.#!"3!2>#!"&5463!2Zjbjj[wٝ]>oӰٯ*-oXL44LL44L')꽽)J)]wL`ֺ۪e4LL44LL;4&#!"3!26#!"&5463!2#54&#!";#"&5463!2  @ ^BB^^B@B^  B^^B@B^`@  MB^^B@B^^>  ^B@B^^5=Um ! !!2#!"&=463!.'!"&=463!>2!2#264&"".54>762".54>762?(``(?b|b?B//B/]]FrdhLhdrF]]FrdhLhdrF@@@(?@@ ?(@9GG9@/B//BaItB!!BtI Ѷ!!ь ItB!!BtI Ѷ!!ь-M32#!"&=46;7&#"&=463!2#>5!!4.'.46ՠ`@`ՠ`MsFFsMMsFFsMojjo@@jj@@<!(!!(!-3?32#!"&=46;7&#"&=463!2+!!64.'#ՠ`@`ՠ`  DqLLqDojjo@@jj@@B>=C-3;32#!"&=46;7&#"&=463!2+!!6.'#ՠ`@`ՠ`UVU96gg6ojjo@@jj@@β**ɍ-G32#!"&=46;7&#"&=463!2#>5!!&'.46ՠ`@`ՠ`MsFFsMkkojjo@@jj@@<!(!33!(!9I2#!"&=4637>7.'!2#!"&=463@b":1P4Y,++,Y4P1:"":1P4Y,++,Y4P1:"b@@@7hVX@K-AA-K@XVh77hVX@K-AA-K@XVh7Aj"#54&#"'54&#"3!26=476=4&#"#54&'&#"#54&'&'2632632#!"&5&=4632>3265K @0.B @0.B#6'&& l @0.B 2' .B A2TA9B;h" d mpPTlLc _4.HK5]0CB.S0CB./#'?&&)$$)0CB. }(AB.z3M2"61d39L/PpuT(Ifc_E`1X"#4&"'&#"3!267654&"#4&"#4&26326#!"&'&5463246326\B B\B&@5K&@"6LB\B B\B sciL}QP%&#"!"3!754?27%>54&#!26=31?>Ijjq,J[j.-tjlV\$B.R1?@B.+?2`$v5K-%5KK5.olRIS+6K5̈$B\B 94E.&ʀ15uE& ԖPjjdXUGJ7!.B P2.B %2@ 7K5(B@KjKj?+fU E,5K~!1.>F.F,Q5*H$b2#!"&=%!"&=463!7!"&'&=4634'&#!">3!!"3!32#!"3!23!26=n$32>32>32#"#.#"#.#"3!27654&#"547654&#"#654&Mye t|]WSSgSY\x{ 70"1i92DU1&=  =&0@c >&/Btd4!*"8K4+"@H@/'= t?_K93-] UlgQQgsW ]#+ i>p&30&VZ&0B/ %3B. "to ){+C4I (  /D0&p0D3[_cg"'&#"3!2676=4&"#54&#"#54&#"#4&'2632632632#!"&'&5463246#!#!#5K)B4J&@#\8P8 @0.B J65K J6k cJ/4qG^\hB2.1!~K5y?^\Vljt-.j[J,qjjI7$?1R.B+.B$`2?gvEo.5KK5%-K6+SIR[&.E49 B\B$5KG#!+"&5!"&=463!2+"&' +"' +"'&5>;2>76;2Y    M .x - N     u  , u ?  LW   #  *:J4'&+326+"'#+"&5463!2  $6& $&6$ UbUI-uu,uuڎLlLAX!Jmf\$ 6uuu,KLlL-[k{276/&'&#"&5463276?6'.#"!276/&'&#"&5463276?6'.#"  $6&  $&6]h - %Lb`J%E 5 ,5R- h - %Lb`J%E 5 ,5R-'uu,uulL/hR    dMLc  NhR   dMLc  N1uuu,LlL@  ' 7 '7 ``H ``H !``H ```H` '%  7' 7'7 ' $&6$ X`(W:,:X`(WLLlLX`(W:BX`(XLlL $ %/9ES[#"&54632$"&4624&"26$4&#"2%#"&462$#"&4632#"32&! 24>  !#"&'.'#"$547.'!6$327&'77'&77N77N'qqqqqPOrqEsttsst}||}uԙ[WQ~,> nP/R U P酛n >,m'77'&77N77N6^Orqqqqqqt棣棣(~|| on[usј^~33pc8{y%cq33dqpf L 54 "2654"'&'"/&477&'.67>326?>< x ,  (-'sI  VCV  Hr'-(  $0@!BHp9[%&!@0$u  ]\\]-$)!IHV D V HI!)$-#36>N"&462."&/.2?2?64/67>&  #!"&5463!2]]]3 $; &|v;$ (CS31 =rM= 4TC(G zw@www]]]($-;,540= sL =45,; @www(2#"$&546327654&#" &#"AZ\@/#%E1/##.1E$![A懇@@\!#21E!6!E13"|! gL&5&'.#4&5!67&'&'5676&'6452>3.'5A5RV[t,G'Q4}-&r! G;>!g12sV&2:#;d=*'5E2/..FD֕71$1>2F!&12,@K r#"&5462>%.#"'&#"#"'>54#".'7654&&5473254&/>7326/632327?&$  $6 $&6$ !&"2&^ u_x^h ;J݃HJǭ qE Dm! M G?̯' %o8 9U(F(ߎLlL&!&!SEm|[n{[<ɪ "p C Di% (K HCέ  pC B m8 @Kނ  HF(LlL "*6%&6$ 7&$5%%6'$2"&4}x3nQH:dΏX e8z' li=! 7So?vM '&7>>7'7>''>76.'6'El:Fg r *t6K3U Z83P)3^I%=9 )<}Jk+C-Wd &U-TE+]Qr-< Q#0 C+M8 3':$ _Q =+If5[ˮ&&SGZoMkܬc#7&#"327#"'&$&546$;#"'654'632ե›fKYYKf¥yͩ䆎L1hvvƚwwkn]*]nlxDLw~?T8bb9SA}+5?F!3267!#"'#"4767%!2$324&#"6327.'!.#"۔c28Ψ-\?@hU0KeFjTlyE3aVsz.b؏W80]TSts<hO_u7bBtSbF/o|V]SHކJ34&#!"3!26#!!2#!"&=463!5!"&5463!2  @ ^B `` B^^B@B^   @ @B^@@^BB^^>3!"&546)2+6'.'.67>76%&F8$.39_0DD40DD0+*M7{L *="# U<-M93#D@U8vk_Y [hD00DD00Dce-JF1 BDN&)@ /1 dy%F#"'&'&'&'&763276?6#"/#"/&54?'&763276"&'&'&5#&763567632#"'&7632654'&#"32>54'&#"'.5463!2#!3>7632#"'&'&#"'&767632yqoq>* 432fba  $B? >B BB AA.-QPPR+ 42 %<ciђ:6& hHGhkG@n`IȌ5 !m(|.mzyPQ-.  je  q>@@?ppgVZE|fb6887a %RB? =B ABBAJvniQP\\PRh!cDS`gΒ 23geFGPHXcCI_ƍ5" n*T.\PQip [*81 / 9@:>t%6#".'.>%6%&7>'.#*.'&676./&'.54>754'&#"%4>327676= >vwd" l "3 /!,+ j2.|%& (N &wh>8X}xc2"W<4<,Z~fdaA`FBIT;hmA<7QC1>[u])  u1V(k1S) - 0 B2* %M ;W(0S[T]I) A 5%R7&&T,Xq&&1X,LΒw%%;#!"&5463!546;2!2!+"&52#!"/&4?63!5! (&&@&&(&&@&&( (  &&@&&@&&&&  #''%#"'&54676%6%% hh @` !   !    #52#"&5476!2#"&5476!2#"'&546        @  @  @    84&"2$4&"2$4&"2#"'&'&7>7.54$ KjKKjKjKKjKjKKjdne4" %!KjKKjKKjKKjKKjKKjK.٫8  !%00C'Z'.W"&462"&462"&462 6?32$6&#"'#"&'5&6&>7>7&54>$ KjKKjKjKKjKjKKjhяW.{+9E=cQdFK1A  0) LlLjKKjKKjKKjKKjKKjKpJ2`[Q?l&٫C58.H(Yee    Y'w(O'R@$#"&#"'>7676327676#" b,XHUmM.U_t,7A3ge z9@xSaQBLb( VU  !!!==w)AU!!77'7'#'#274.#"#32!5'.>537#"76=4>5'.465! KkkK _5 5 #BH1`L I& v6S F!Sr99rS!`` /7K%s}H XV P V  e  Vd/9Q[ $547.546326%>>32"&5%632264&#"64'&""&'&"2>&2654&#";2 P 3>tSU<)tqH+>XX|Wh,:UStW|XX>=X*  ))  +^X^|WX=>X:_.2//a:Ru?  Q%-W|XW>J( =u>XX|WX`  *((*  +2 2X>=XW|E03>$32!>7 '&'&7!6./EUnohiI\0<{ >ORDƚ~˕VƻoR C37J6I`Tb<^M~M8O  5!#!"&!5!!52!5463 ^B@B^`B^^B `B^^"^BB^0;%'#".54>327&$#"32$ !"$&6$3 ##320JUnLnʡ~~&q@tKL}'` - -oxnǑUyl}~~FڎLlLt`(88(   7!' !\W\ d;tZ`_O; }54+";2%54+";2!4&"!4;234;2354;2354>3&546263232632#"&#"26354;2354;2354;2````pp```  !,! -&M<FI(2 ```@PppPpppppp# #   ppppp j#"'&=!;5463!2#!"&=#".'.#!#"&463232>7>;>32#"&'#"!546 %. `@` :,.',-XjjXh-,'.,: kb>PppP>bk .%Z & :k%$> $``6&L')59I"TlԖlT"I95)'L&69GppG9$ >$%k: !+32&#!332 $&6$ ~O88OLlL>pN  iLlL '':Ma4&'#"'.7654.#""'&#"3!267#!"&54676$32#"'.76'&>$#"'.7654'&676mD5)  z{6lP,@KijjOoɎȕ>>[ta) GG 4?a) ll >;_-/ 9GH{zyN@,KԕoN繁y! ?hh>$ D" >â? $ n"&5462'#".54>22654.'&'.54>32#"#*.5./"~~s!m{b6# -SjR,l'(s-6^]Itg))[zxȁZ&+6,4$.X%%Dc* &D~WL}]I0"  YYZvJ@N*CVTR3/A3$#/;'"/fR-,&2-" 7Zr^Na94Rji3.I+ &6W6>N%&60;96@7F6I3+4&#!"3!26%4&#!"3!26 $$ ^aa`@@^aa '7  $ >. %"&546;2#!"&546;2#/a^(^aa(N@@4&#!"3!26 $$ @@^aa`@^aa '  $ >. 7"&5463!2#/a^(n@^aa(N@ %=%#!"'&7!>3!26=!26=!2%"&54&""&546 ##]VTV$KjKKjK$&4&Ԗ&4&>9G!5KK55KK5!&&jj&&#/;Im2+#!"&'#"&463>'.3%4&"26%4&"26%6.326#>;463!232#.+#!"&5#"5KK5sH..Hs5KK5e# )4# %&4&&4&&4&&4&` #4) #%~]eZ&&Ze] E-&&-EKjKj.<<.KjK)#)`"@&&`&&&&`&&)#`)"dXo&&oXG,8&&8!O##!!2#!+"'&7#+"'&7!"'&?63!!"'&?63!6;236;2!2@@8@7 8Q NQ N 8G@ 8GQ NQ N7   8 8  H H  k%  ".>2I20]@]@oo@@oo㔕a22]]p^|11|99|11|(%7'7' ' 7T dltl)qnluul)1$4&"24&"2 &6 +"&5476;2 &6 LhLLhLLhLLhL>  &   &`>hLLhLLhLLhL>&&>G  .7)1!62 1!62he220e22> v +4 [d+ d 135#5&'72!5!#"&'"'#"$547&54$ Eh`X(cYz:L:zYc\$_K`Pa}fiXXiޝfa  (+.>#5#5!5!5!54&+'#"3!267!7!#!"&5463!2U``'    jjV>(>VV>>Vq  ( ^(>VV>>VV=&'&'&'&76'&'&.' #.h8"$Y ''>eX5, ,PtsK25MRLqS;:.K'5R ChhRt(+e^TTu B"$:2~<2HpwTT V/7GWg. %&32?673327>/.'676$4&"2 $&6$   $6& $&6$ d -- m  ,6*6,  mKjKKjoooKzz8zzȎLlLU4>>4-. YG0 )xx) 0GYޞ .jKKjKqoooolzzz80LlLD/7H#"'.7'654&#"'67'.6?>%"&46227#".547|D,=),9#7[͑fx!X: D$ +s)hhijZt<F/*8C,q؜e\r,WBX/C2hhh=tXm>NZ+"&=46;2+"&=4>7>54&#"#"/.7632  >. $$ p=+& 35,W48'3  l zffff^aaP2P: D#;$# $*;? R Cfff^aa'Y >O`"&5462&'.'.76.5632.'#&'.'&6?65\\[( | r [A@[[@A#2#  7* <Y$  +}"(  q87] F  _1 )    #1Ke34&+326+"&=!#!"&763!2#!"&5463!2#>?4.'3#>?4.'3#>?4.'3Xe`64[l7  , L; =+3&98&+)>>+3&98&+)>=+3&88&+)> Wj|r >Q$~d $kaw+-wi[[\;/xgY $kaw+-wi[[\;/xgY $kaw+-wi[[\;/xgYJ\m4.'.'&#"#"'.'&47>7632327>7>54&'&#"327>"&47654'&462"'&476'&462"'&47>&'&462i$ $^"  %%  "^$ $W "@9O?1&&18?t@" W&%%&4KK6pp&46ZaaZ&4mttm ^x -  - x^ = /U7C kkz'[$ =&5%54'4&KK4r7>54 "&54>2"&462%"&54&#""&546 %#"&'&'.7>#"'&'.7>&4&&4&4&&4SZ&4&&44$#&&&j3$"('$&4&[՛[&4&&4F&4&]\&4&$  !D4%  ,\44&&4&4&&4&-Z4&&4&;cX/)#&>B)&4&j9aU0'.4a7&&u՛[[4&&4&@&&]]&&Ώ0 u40 )4#g&'.#"32676%4/&#"326'&#"2632#2+&'%#"'&6?676676632%#"'&6767#"&'&6767#"'.7>327"#"&'&6763"'.7>;7632;>%5K$ "0%>s$ "0%>;;>%5KVL#>H30 \($$(\( єyO2F/{(?0(TK.5sg$ єy#-F/{$70(TK.5sg$L#>H30 \($$(\#(@5"'K58!'"58!'"55"'K#dS$K K$Sdx#@1 w d>N;ET0((? - 2K|1 wd#N;ET0$(? - 2K$#dS$K K$SdxDN\2654& 265462"2654 #"32654>7>54."/&47&'?62 &4&&4&h՛[&4&r$'("$3j&&&#$4[ " @ GB[ "&&Β&&][u&&7a4.'0Ua9j&4&)B>&#)/Xc;u՛ "  " Gi[ Xh#"&54676324&'&#"'>54#"32#"54>54'.#"32>7>767632326#!"&5463!2b )   :4FDN  [1,^JK-*E#9gWRY vm0O w@wwwC22 c@X&!9{MA_"S4b// DR"XljPY < @www%e4.#"32>7676#'.#"#"&54>3232>754&*#"&54>763 >32 ''il$E/  @P@ ^`'W6&!.. ! -P5+ E{n46vLeVz:,SN/ M5M[  ]$[^5iC'2H&!(?]v`* l b$9> =R2 #"&5467%!"&7>3-.7>;%.7>322326/.76/.'&6766/&/&#"&676 &676&6766/&672? =1( H/ '96&@)9<')29% &06##$ J 0 7j)5@"*3%"!M %#K"%Ne 8)'8_(9./=*%8!Q #P"\Q#N&a)<9bR]mp%"'.'&54>76%&54763263 #"/7#"'#"&/%$%322654&#"%'OV9  nt  |\d ϓ[nt  |@D:) ;98'+| j," 41CH^nVz(~R 9\'  r  @L@  @w46HI(+C ,55, f[op@\j;(zV~i/5O#"'&54>32&#" 654'67'"'>54''&'"'6767&546767>7蒓`V BMR B9)̟!SH-77IXmSMH*k#".o;^J qןד>@YM $bKd ү[E";Kx%^6;%T,U:im=Mk).DT4'"&5463267&#" 6;64'.'4'>732676%#!"&5463!2),蛜s5-54&#"#"'654'.#"#"&#"3263232>3232>76 $$ Cf'/'% ( $UL ( #'/'@ 3#@,G)+H+@#3 ^aaX@ _O#NW#O_ .* ##(^aaq[632632#"&#"#".'&#"#".'&54767>7654.54632327&547>P9 B6?K? %O4T% >6>Z64Y=6>%S4N$ ?L?4B @{:y/$ ,'R! F! 8% #)(()#%: !F Q'+%0z:zO_4'.'&54>54&#"#"'654'.#"#"&#"3263232>3232>76#!"&5463!2Cf'.'% ( $VM  ) #'.'@ 3 #A,G)+H+A# 4 w@wwwXA  ?4N$NW&M&L  /* ## + @www O$>?>762'&#"./454327327>7> EpB5 3FAP/h\/NGSL  RP* m95F84f&3Ga4B|wB.\FI*/.?&,5~K % & Y."7n< "-I.M`{ARwJ!FX^dj''''"'7&'7&'7&'7&547'67'67'67'63277774$#"32$   *'ֱ,?g=OO&L&NJBg;1''ֱ.=gCIM $'&&NJBg=.%w؝\\w Ioo<<-NIDg=/%(ײ+AhEHO*"#*OICh=/'(ֲ/=h>ON.]xwڝ]7e[@)6!!"3#"&546%3567654'3!67!4&'7Sgny]K-#75LSl>9V%cPe}&Hn_HȌ=UoLQ1!45647UC" !-9[nx"&46254&"326754&"326754&"26754&"26#".547632632626326'4#"#"54732764&"264.#"327632>#"'"'#"'#"&5#"'67&'327&'&54>3267>7>7>32632632T"8""8)<())(<))))<))<))<))<) Tد{ՐRhx=8 78 n 81 pH_6Soc F@b@?d?uKbM70[f5Y$35KUC<:[;+8 n 87 8/8Zlv]64qE 'YK0-AlB; W#;WS9 &(#-7Z://:/Tr++r,,r++r,,r++r,,r++r,,ʠgxXVעe9222222^KVvF02OO23OO`lF;mhj84DroB@r+@222222C0DP`.r8h9~T4.&o@9 1P%14'!3#"&46327&#"326%35#5##33 $$  }Pcc]321IUΠ?LL?cc4MX &04;0XpD[[DpD,)&&Q 9V\26&".'&'&6?.#"#26327677>'32>&3#'&+"?626&"#!'.'!"&5463!>;26;2!2P P  92#.}SP9::%L \B )spN/9oJ5  !+D`]BgY9+,9% Pk 4P P &NnF!_7*}B<{o0&&B;*<@$ucRRc#@16#37c&@@@ J"@*4^`ED B o/8927 *@OLC!T!323X$BJ@@@&AS 0C 59" 'D/&&D4 88 $5A&%O#!"&547>7>2$7>/.".'&'&2>^B@B^ >FFzn_0P:P2\nzFF> R & p^1P:P1^ & R P2NMJMQ0Rr.B^^B 7:5]yPH!%%"FPy]5:7 = 4 QH!%%!Ht 4 =<"-/ ?1Pp+".'.'.?>;2>7$76&'&%.+"3!26#!"&54767>;2' +~'*OJ%%JN,&x' % ^M,EE,M7 ZE[P*FF*P:5  ^B@B^){$.MK%%KM.$+X)o3 "a 22!] 4  I>"">,&S8JB##B12 ` `B^^B8&ra#11#$R&  "&.2v%/%''%/%7%7'%7'/#&5'&&?&'&?&'&7%27674?6J" 0<=_gNU?DfuYGb7=^H^` =v~yT3GDPO 4Fѭqi_w\ހ!1uS%V_-d 1=U{J8n~r'U4.#".'"3!264&"26+#!"&5463!232+32+32 0P373/./373P0 T=@=T֙֙|`^B@B^^BB^`````*9deG-! !-Ged9IaallkOB^^BB^^B +Yi"&54622#!"&54>;2>+32+32+#!"&5463!2324&#!"3!26֙֙0.I/ OBBO -Q52-)&)-2 ``  ``  `^B@B^^BB^`  @   |kkl"=IYL)CggC0[jM4      B^^BB^^B @  @ !1AQu4.#".'"3!24&"254&#!"3!2654&#!"3!2654&#!"3!26#!54&+"!54&+"!"&5463!2)P90,***,09P)J66S"@8@^B@@B^^BB^Ukc9 9ckU?@@88 @@N@B^````^BB^^!1AQu#!"&4>32>72"&462#!"&=463!25#!"&=463!25#!"&=463!24&#!"3!546;2!546;2!26#!"&5463!2J66J)P90,***,09P)"@8@ @  `@@` ^B@B^^BB^ՀUUkc9 9c`@@88@@2  @ ````@B^^BB^^(%.'"&' $&  #"$&6$ wCιCwjJ~J>LlLśJSSJ͛>6LlL$,  $&6654&$ 3 72&&  lLmzzBl>KlLGzzG>'7#!"&54>7&54>2  62654' '3/U]B,ȍ,B]U/OQнQ>+X}}X0bӃۚӅb0}hQQh>ff#=#!"&4>3272"&462!3!26#!"&5463!;26=!2J66J)Q8PP8Q)  ^B@B^^B``B^VVVld9KK9d` @B^^BB^``^+;K[eu4.#"'"3!264&"254&#!"3!2654&#!"3!26%54&+";2654&#!"3!26!54&#!"!#!"&5463!2"D/@@/D"?,,?pppp@@@@^B@B^^BB^D6]W2@@2W]67MMppp@@@@@@@@n`@B^^BB^^+;K[eu#!"&54>3272"&462#!"&=463!2%#!"&=463!2+"&=46;25#!"&=463!2!3!26#!"&5463!2?,V,?"D/@@/D"pppp@@@  ^B@B^^BB^D7MM76]W2@@2W]֠ppp@@@@@@@@` @B^^BB^^A#"327.#"'63263#".'#"$&546$32326J9"65I).!1iCCu +I\Gw\B!al݇yǙV/]:=B>9+32%#!"&5463!2#"&54>54'&#"#"54654'.#"#"'.54>54'&'&543232654&432#"&54>764&'&'.54632  ?c'p& ?b1w{2V ?#&#9&CY' &.&#+B : &65&*2w1GF1)2<)<'  ( BH=ӊ:NT :O )4:i   F~b` e!}U3i?fRUX|'&'&Ic&Q  *2U.L6* / L:90%>..>%b>+ +z7ymlw45)0 33J@0!! TFL P]=GS -kwm  !*(%6&692? $&6$  '   al@lLlL,& EC h$LlL /37;%"&546734&'4&" 67 54746 #5#5#5ppF::FDFNV^fnv~"/&4?.7&#"!4>3267622"&4"&46262"&42"&4462"$2"&42"&4"&46262"&4"&46262"&42"&4$2"&42"&42"&4  R ,H8JfjQhjG^R,  !4&&4&Z4&&4&4&&4&4&&4&&4&&44&&4&4&&4&Z4&&4&4&&4&4&&4&4&&4&4&&4&&4&&4&Z4&&4&Z4&&4&  R  ,[cGjhQRJ'A, &4&&4Z&4&&4Z&4&&4Z&4&&444&&4&&4&&4Z&4&&4Z&4&&4Z&4&&4&4&&4Z&4&&4Z&4&&4&&4&&4Z&4&&4Z&4&&4%-5=EM}+"&=#!"'+"&=&="&4626"&462&"&462"&462&"&462&"&462#!"&=46;4632676/&?.7&#"!2"&462&"&462&"&462"&462&"&462&"&462"&462&"&462"&462@?AA? @ @R...R@`jlL.h) * * $ %35K.....uvnu....@@jN  * * .t2#K5..R..R. @Hq '&'&54 &7676767654$'.766$76"&462&'&'&7>54.'.7>76ȵ|_ğyv/ۃ⃺k] :Buq CA _kނXVobZZbnW|V 0  Q2- l}O  / :1z q%zG 4( 6Roa ą\< )4 J}%!!#!"&5463!2^B@B^^BB^`@B^^BB^^%#!"&=463!2^B@B^^BB^B^^BB^^ &))!32#!#!"&5463!463!2`B^^B^B@B^^B`^BB^^B@B^B^^BB^`B^^#3%764/764/&"'&"2?2#!"&5463!2    s^B@B^^BB^ג     @B^^BB^^#'7"/"/&4?'&4?62762!!%#!"&5463!2     ^B@B^^BB^    `@B^^BB^^ ! $&6$ .2r`LlLf4LlL#.C&>"'&4762"/&4?62'"'&4762%'.>6.'.>6'>/>76&'&.'&7&'">?4'.677>7.>37654'&'67>776 $&6$  ( 4Z# # & # # & y"6&.JM@& "(XE* $+8 jT?3#'.'&!3!2>?3.'#!57>7'./5!27#'.#!"g%%D-!gg<6WWZe#1=/2*]Y3-,C1 /Dx] VFIq-HD2NK '>*%R= f 07=. f D]\|yu,0>Seu#2#"'&5<>323#3#&'#334'."#"+236'&54.#"5#37326#!"&5463!2 <  zzj k-L+ )[$8=".un/2 ^B@B^^BB^5cy    (ݔI(8?C (3> #"($=@B^^BB^^0K S&'.'&'./674&$#">&>?>'76'# "&#./.'7676767>76$w .~kuBR] T%z+",|ޟj<)(!( ~ˣzF8"{%%#5)}''xJF0"H[$%EJ#% .Gk29(B13"?@ S)5" #9dmW";L65RA0@T.$}i`:f3A%% BM<$q:)BD aa%`]A &c| Ms!  Z 2}i[ F&** < ʣsc"J<&NsF% 0@Wm6&'.6$.7>7 $76".4>2., &>6'"'&7>=GV:e #:$?+% q4g &3hT`ZtQмQQмpAP1LK!:< }҈`dlb,9'  %%($! a3)W)x  оQQоQQcQǡ-җe)Us2XD\ϼYd /?O_o#"=#"=4;543#"=#"=4;543#"=#"=4;543#"=#"=4;543#"=#"=4;543%#!"&5463!2++532325++532325++532325++532325++53232p00pp00pp00pp00pp008((88(@(80pp00pp00pp00pp00pp0     @(88((88     /Q/&'%&/"&=.6?&?&'&6?'.>-#".6?'.>'&6'.>54627>%>76#"'% %6 27 2G f!)p&4&p)!f G2 72  *6 " 47 2G f!)p&4&p)!f G2 72 " 6* !k 3 j&3 %,*&&ր*9% 3&j 3 k!./!>>$,*!k 3.j&3 %Ԝ9*&&ր*ǜ,% 3&j 3 k!*,$>>!/.&6.'&$ &76$76$PutۥiPuGxy Զ[xy -_v١eNuv١e =uʦ[t78X &6# #'7-'%'&$  $6 $&6$ 31NE0gR=|||">"LlL^v!1f2iЂwgfZQQ^>"||||wLlL &ZXblw.'&>'&'&".'.'&&'&'&7>767>67>7626&'&>&'&>'.7>.676'&'&'&'.67.>7>6&'&676&'&676.676&'&>&'&676'.>6/4-LJg-   $  6)j2%+QF)b3FSP 21DK2AW ") ")$? ? 8A& AE5lZm= gG2Sw*&>$5jD GHyX/4F r 1  1""!l=6> 6 ,5./'e    .*|Ed! u & &%& &5d ))66 @ C& 8B @qL?P^7 G-hI[q:"T6 ,6 &/`  L wQ'   A ^   "  $& _  y  * <Copyright Dave Gandy 2016. All rights reserved.Copyright Dave Gandy 2016. All rights reserved.FontAwesomeFontAwesomeRegularRegularFONTLAB:OTFEXPORTFONTLAB:OTFEXPORTFontAwesomeFontAwesomeVersion 4.7.0 2016Version 4.7.0 2016FontAwesomeFontAwesomePlease refer to the Copyright section for the font trademark attribution notices.Please refer to the Copyright section for the font trademark attribution notices.Fort AwesomeFort AwesomeDave GandyDave Gandyhttp://fontawesome.iohttp://fontawesome.iohttp://fontawesome.io/license/http://fontawesome.io/license/      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab cdefghijklmnopqrstuvwxyz{|}~"      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~glassmusicsearchenvelopeheartstar star_emptyuserfilmth_largethth_listokremovezoom_inzoom_outoffsignalcogtrashhomefile_alttimeroad download_altdownloaduploadinbox play_circlerepeatrefreshlist_altlockflag headphones volume_off volume_down volume_upqrcodebarcodetagtagsbookbookmarkprintcamerafontbolditalic text_height text_width align_left align_center align_right align_justifylist indent_left indent_rightfacetime_videopicturepencil map_markeradjusttinteditsharecheckmove step_backward fast_backwardbackwardplaypausestopforward fast_forward step_forwardeject chevron_left chevron_right plus_sign minus_sign remove_signok_sign question_sign info_sign screenshot remove_circle ok_circle ban_circle arrow_left arrow_rightarrow_up arrow_down share_alt resize_full resize_smallexclamation_signgiftleaffireeye_open eye_close warning_signplanecalendarrandomcommentmagnet chevron_up chevron_downretweet shopping_cart folder_close folder_openresize_verticalresize_horizontal bar_chart twitter_sign facebook_sign camera_retrokeycogscomments thumbs_up_altthumbs_down_alt star_half heart_emptysignout linkedin_signpushpin external_linksignintrophy github_sign upload_altlemonphone check_emptybookmark_empty phone_signtwitterfacebookgithubunlock credit_cardrsshddbullhornbell certificate hand_right hand_lefthand_up hand_downcircle_arrow_leftcircle_arrow_rightcircle_arrow_upcircle_arrow_downglobewrenchtasksfilter briefcase fullscreengrouplinkcloudbeakercutcopy paper_clipsave sign_blankreorderulol strikethrough underlinetablemagictruck pinterestpinterest_signgoogle_plus_sign google_plusmoney caret_downcaret_up caret_left caret_rightcolumnssort sort_downsort_up envelope_altlinkedinundolegal dashboard comment_alt comments_altboltsitemapumbrellapaste light_bulbexchangecloud_download cloud_uploaduser_md stethoscopesuitcasebell_altcoffeefood file_text_altbuildinghospital ambulancemedkit fighter_jetbeerh_signf0fedouble_angle_leftdouble_angle_rightdouble_angle_updouble_angle_down angle_left angle_rightangle_up angle_downdesktoplaptoptablet mobile_phone circle_blank quote_left quote_rightspinnercirclereply github_altfolder_close_altfolder_open_alt expand_alt collapse_altsmilefrownmehgamepadkeyboardflag_altflag_checkeredterminalcode reply_allstar_half_emptylocation_arrowcrop code_forkunlink_279 exclamation superscript subscript_283 puzzle_piece microphonemicrophone_offshieldcalendar_emptyfire_extinguisherrocketmaxcdnchevron_sign_leftchevron_sign_rightchevron_sign_upchevron_sign_downhtml5css3anchor unlock_altbullseyeellipsis_horizontalellipsis_vertical_303 play_signticketminus_sign_alt check_minuslevel_up level_down check_sign edit_sign_312 share_signcompasscollapse collapse_top_317eurgbpusdinrjpyrubkrwbtcfile file_textsort_by_alphabet_329sort_by_attributessort_by_attributes_alt sort_by_ordersort_by_order_alt_334_335 youtube_signyoutubexing xing_sign youtube_playdropbox stackexchange instagramflickradnf171bitbucket_signtumblr tumblr_signlong_arrow_down long_arrow_uplong_arrow_leftlong_arrow_rightwindowsandroidlinuxdribbleskype foursquaretrellofemalemalegittipsun_366archivebugvkweiborenren_372stack_exchange_374arrow_circle_alt_left_376dot_circle_alt_378 vimeo_square_380 plus_square_o_382_383_384_385_386_387_388_389uniF1A0f1a1_392_393f1a4_395_396_397_398_399_400f1ab_402_403_404uniF1B1_406_407_408_409_410_411_412_413_414_415_416_417_418_419uniF1C0uniF1C1_422_423_424_425_426_427_428_429_430_431_432_433_434uniF1D0uniF1D1uniF1D2_438_439uniF1D5uniF1D6uniF1D7_443_444_445_446_447_448_449uniF1E0_451_452_453_454_455_456_457_458_459_460_461_462_463_464uniF1F0_466_467f1f3_469_470_471_472_473_474_475_476f1fc_478_479_480_481_482_483_484_485_486_487_488_489_490_491_492_493_494f210_496f212_498_499_500_501_502_503_504_505_506_507_508_509venus_511_512_513_514_515_516_517_518_519_520_521_522_523_524_525_526_527_528_529_530_531_532_533_534_535_536_537_538_539_540_541_542_543_544_545_546_547_548_549_550_551_552_553_554_555_556_557_558_559_560_561_562_563_564_565_566_567_568_569f260f261_572f263_574_575_576_577_578_579_580_581_582_583_584_585_586_587_588_589_590_591_592_593_594_595_596_597_598f27euniF280uniF281_602_603_604uniF285uniF286_607_608_609_610_611_612_613_614_615_616_617_618_619_620_621_622_623_624_625_626_627_628_629uniF2A0uniF2A1uniF2A2uniF2A3uniF2A4uniF2A5uniF2A6uniF2A7uniF2A8uniF2A9uniF2AAuniF2ABuniF2ACuniF2ADuniF2AEuniF2B0uniF2B1uniF2B2uniF2B3uniF2B4uniF2B5uniF2B6uniF2B7uniF2B8uniF2B9uniF2BAuniF2BBuniF2BCuniF2BDuniF2BEuniF2C0uniF2C1uniF2C2uniF2C3uniF2C4uniF2C5uniF2C6uniF2C7uniF2C8uniF2C9uniF2CAuniF2CBuniF2CCuniF2CDuniF2CEuniF2D0uniF2D1uniF2D2uniF2D3uniF2D4uniF2D5uniF2D6uniF2D7uniF2D8uniF2D9uniF2DAuniF2DBuniF2DCuniF2DDuniF2DEuniF2E0uniF2E1uniF2E2uniF2E3uniF2E4uniF2E5uniF2E6uniF2E7_698uniF2E9uniF2EAuniF2EBuniF2ECuniF2EDuniF2EE=O<01hPK<\Uh-h-=assets/lib/bower/font-awesome/fonts/fontawesome-webfont.woff2nu[wOF2-h -?FFTM `r (X6$p  u[R rGa* '=:&=r* ]tEn1F@|fm`$ؑ@d[BQ$([U<+(@P5`>P;(1lhԨ)YyJi|%ہ^G3nڕ ͐Dp\Yr LPt)6R^"S L~YRCXR 4Fy\[7n|s໌qM%K.ۺ, Lt'M,c+bׇOs^$z.mŠ h&gbv'6:smb1بm0"ǂ*Vc$,0ATPT1< ;`'H?sΩ:NDI$T[b4,μ」bl6 ILi}ی&4m,'#ץRwbu,K vm_-\HHH?m 9P)9J$ƽ8~;rn=$Nddn!';8'N!-Jʶ.X= ,"`: {K!'-FH #$~Z_N5VU8Fȯ%Pݫ Cp$Qrʽkk3ٷ:R%2{ީh%)8 ILK6v#,;Ц6N2hv OOt#xTBfq^#?{5bI%-WZbA ^1n5צNQY'S!t" `b3%35fv;lά9:jgf?grpx | $ eZ($w(ZrSv+ZqMݙm?&s[tSSj9?| >G,bDշ^^:l3NA`5 26LpS Aߧ/U ֘'9\Նt!l PMR9n `(@ Hy)MdM 5ԤH'ґmSuo9 1 tØuc@]KRbNv("y뽻{ cscz&p5,jn kN!.n^Uu@|?v>rUaHR ՑI DˋQ~p ܍;;nL$t : hFCYTOFNN~}1"`a(?H \u0LԵ'͔PbnmOJl?s0,8xBBF_RiZ~e#jwhOc*&F6 Yq{}?>u.4h%g`& )R5H}ˤkܩ'JOI_qOb'HǟBYEM6v5NJ ONF Nx(1:\߫Ckcb8Q d[L(el+2u-a֘d5;N$"HSFo2i"\h7IfN8qx#v 6um `NM-J\FrDZ0#'ꥈnGjLچXʌAgYs*Y^ٵ;"$hb=ϛ0vH-.D܎Yd +^{Cm,@N<.VMS+\D+R|6 'q\T9DX<$p"酦$ҷ ,psTbNkI_` FWV%w~DԐ*xiy[rZ[S%Gs`F<ㅣ V+!+؍9ykfb82s}l;[)e$Tk)v9{uut޳@E>|C<\4%Rv @׺C8\~)#k|.ao00Gq0%hp L"+>% ^MˊNsq=䦆K4r-*%h#%;pP馔hC= &)baKL@t!~2S]rYlZ63ўJoOV;h&gO5RT/}{AZ&St ͯPC0D,pbpзz) ]I>Q\Bl"^3R>r*C>xPUz}Y=̕}ж 6-`/"H o&DI0E2Xa-{5< ,}``6jiim'w5RF,ч%SYWh6L_i샣=i13YI7NCpIĔ(r0{jrKТo)l3naT1\IE(m߃Dle$ÅwXU(@Ma"n,*vG̨x>G Sg̉"Qvb0*zPEyɉ?7$ %GpdY&f!a6|);u7#34mJij oOpȁv8jx(K/ZdxŃm7V_\fL7 pXzH7-,(1KHbe,r-pL3=T2t2ټXk:Z5spSsT:.]D"@-Ȇ!A2ɶ-F}˒2BǃQ)tç|#4|\㨀`fc,#g1:-ty ]2Z~.)nj%RK(y`8C֍zK-N `^+n3ϴT3tQأ4<>:J0È%ݑZab`vͬaT/ZaޝГIi W1_>)H"p |7mF^Z~f0J^I3V!{<+OeB#BcjL\-Zh[I<qv~k]GTD?S/-%ݒ7 wi|CIqwcWx /7xHO/o]G]y߃#7b$tR$ ]a7FѮ,n!rI|28x6gSh R^^D.xMMS?漞'G#~+v4d!FyT9-fVa7hB4,2Ɖ&vTHMqp4?R\Xa<4@MiHD_ EgRyMlTؠJݮ yc"HJ, 6u/ڴyVnJn۟H\PRBd|4_$k.w™IpS$|}j9m|1ߘn9395qS|xW9BVZ!mK/Ln;iu$*t3Ͷ@}B{Yԑz2Ju@a\MR7odze7/$4]^2kh$=%1IB؃ H|N.[M\ Lb1Mg:NV._0,+,ht7l8s~IV^ N˼Mؑjك- oܮůQo[mj=rm>~z4$M}z sh""u7V{RûݦO-D9V٥gIʎKLg۶BTP'K̦ qW֒3ep&ےLhpNaS w &;e(,-7vx-w$WnXUt8Y?KMctY؃p*Շ-БfL|[nL }4{5頠3᧌ n$$,+DNԄ-HV>HOs\-;W6NM8Fi;7k26%֒a],:!ʲڽE,{U nawNg.I9r:jFbKΨf)*cG5-kb6UЩpZMO`$WDyA߻[4aJ?fD?=d(KD䴱:D/[#$A #KH.:x?%Vr@[B$}coS6`LPfM&ɔA<:vÚ Q~Pw[+`+j V+R*ul!|+'KY66_ud}_[yuۘjo$Y=yjRi)bԋLaD(XUwIڻZ$7ڻ9&4Z'DF[N]~dD?VQWͲ}vS>Nm+SqHaU!ΒWb_+UO]^l59 @1'A^mo:9ףs-N:tD-zkSja4rczFۻ ޿xv7[äC8#7p5+ ~*bJJYzֳw+-p/LL[cgnlcaPHF$}9`\ 83Ym1b>~ƽJ؂ϏyBs="f(zKM"H`wcEd:b86(9<clݘ/kg G^ESE)5G_^k߇ v̚}T3;6 WvTCP_k._eєNJL{T!6j>h0 #[㗚Kz,!32:6d>himE\=H Z+{6@Wʯ&lC',rX !8(\̭2-P8h@C4 <~Z7j%) eeFpZ'15 ^6B3nco#~²qR@!ա z^Ks]T@TNT ,S*@7CīɅLiQN, #:RѪj91-YPN¿\&yL8ӹ&0cvƉ\JA;Q;]IM8 sMf?԰Irr!K9я8p}Q콍g-*sm~XP0dM^?DdIm8eCN}cà٭$s7ۼ#յR{b4vMql)vOճjְr1f4cs_%v%lKZNi+V3'~NMG@HBb+vVFq@ݱuKZhp@E0uaSXdUK}ԯ8GXKiI% uR)EI-ږ8|1GΞf6Ȁ=!KF6Qf[X~_j\^͋^k`DsG]~㤛yo};+i%N}Q0ԥUu)M[Z`"7 ?/[C{l)$Mr|^ a:"֊a l>hya{2>CPL j?ntg]S{UӇ('b'fg0ӃLPAMtd)2úY!v&`o2P[ aޔ5 S|#+7J #ȸ_dU6#VDB"K|)otkl,lU)ݹe5OyUAt2_ n53e*1v(K_HvVʉ3},ACUƍ؂Cuti-]`7]R !zsNt&̉̄k)SL̹y7$ϥDJNd"9 31 IZ(^( lw6 /@YB^}OT~9cc]{)}D8${yc,ʤ{tAW3zHImD4ܤUT3dID) I۬.d~[ -K^2Zc 8u,Y^\_ԁ_+cJ$\2:ZW bBw=[1'NYVz4;(fzNUf(p֙!x#L=#ŋThnba˳",T\o!@@sN%| tXj j Qo5oeF)o 9˷:h*'cJ孏[{ȄNfnz]8F/|1v g@J:YնNu:dhHo tM`R̍Ri:|N_P"B@ m`a:M  c2Ũ<ؓUOS\%a\Ap ꄯe\A.̰{wǿ~6 ;s2ŋ`W`TyPgee0 00}/ǔ;h[tGD5^E#hȍ:f? u3z0ڎ$T^TAhz x I{5'rK zo l֢,b89-:G|W)bA5G<*ٕ:ğ!]gj~O&UN뢹8 g ]-WW(WNI3Ngr3|m m'=[n힬M,?$HDD-O?5uX]˓37>*wg?*!JyT@ UgzI_7&\tH.YZ(4Y'd T Fs-qya7 [67K&J/$c/x[ᶏ;Īz1Fv]G'ڏQBSOІ$y(TS-;hűzT%Dts"=gwUuD?b$Zr9G<&Ña^2_Be;b~փ)Ό2j r8]'7 bChTd )+ mD).51-|Yy*oڤL 4A她= T@|X$in.KI|R@P@P*ak@ ۟=I =l[ג"hX0QҜf˒펖c<#9`|cO}$o>eX<`,o_K3 p{YAn[9M T(!"?Z]iEm Ğ>'{Gt *~y`'A?٘#)o($ȉەLvYO1o_& .mv!*)$zmrt(:GGbeVwi$CO1 cZZ0G 7z@Jy~p)g,gYL.$, -<k{yc*02/q1gKM&R<7xCy[Mʛ #ͺDya3\wfwrFĸM] \NsWݍd<ӡW064tȴvȻ0>ԯ ; )f#* 2<h ~'Bw mH/wqMog C)̵67#BS>_-[L|RRlQ}\TH) 9Fa"^bA:ݳQ4' =sO '@.Y&8z ,i73y;U}p/I  xVxilFZfhXc.b B*|&|ge/kuv\_Hb dpG/A}㬬'xȜՋ;E !Wj{ZI$z{Op;x=׺q{5l23O =@jj# GYTn>&ެ#CBϩzLuylSaa0LTv3,2 sdTrU}El1z`Xa*h{qiuU\"Lд@TXRUFg]sE5V0X/ukzB'كJx Iz7YΕ1tyΚ_}|xm[xJ}zlDVrcsdsqv[&`oUl?<jC! OeqB=J\`Lr孈d1MhowѹKiģd*;^ҋ$xHUU`]GkCꆂOQSCwo g~yG8P{{H.$6!}d4,q>`llUMBRPe2A1RHqlBQ$W%bhBÚV@(?FAQ}dl+bNIMdT"+ƌo0`89\|5 ޣئ(y jqm(<\G 2dTP0$n@ Ē!X 㺕Nkճxikiݝͨћ"0?^2XF,{sr_e@Vyg N_iwq;XED\b1G(RsT<\ډQ2tT ; `[,AkKbDl#b8,]i\|kCxLq~r Ά>|žBab?aag30( j"FA*{ߣd]ř+XHzs ZSLu:˅)ҲnJEBnS>Ħ mh,RT~}9, /.H~!`ExOۖ mwIl꧴ёUzzk**|m* .?~ chp?eY]*H|̛1e?V; ا 2PQVlW6m5O3'^x,ҹa)TeUs10ft9T{!L@OLtǽ!^L!ti ^:CR K ?2TYx۩Fq#0 <hѭ)kesaTl x9d%+b8XZ ;gv8 n7ϻa&^ob{w OO7jϯزΞ,~WYػqÎzVoλg'5("ե AӃ[:P|Ӓ+>#2?$MndueSJ%e؞~Uq ޳҈zRnп,7˱>` /uFgOg)PJ\)Xk VF"\tr#wE]s:Y#n8 Lm"6D VġH`Q ௢үQkG ]<2N?U &|a_G܏}di!:`Ⱦ[\,Y]JϹߐì~OA%> ]2Pl5pOѐ[ʀ4O@¡,Ҭ-,4X7-#?3{M·C18aY)M"ka_=4JqM?nh6kɜP  2;3 g4ՍZЦөGZk(m pv riZF}i:/czPuVQ9E&'/ v<2ۊYQ)j.HN11sʗ؋{ '|klT%1ꪋCgQUJ['Uֶ̝ؔ{81 rnҹ} :,й6X7fe' NM2p|4p6Vn듁p&S=[- ߞ~NjIY/c`YAq6-Y30#V~hsEPT;ub6WD#N1o>)ΘCx4$/jl1 y./,Rr[YE*GЕKm/|7 SISƗqF㍹6:cVs @w+k1caíw0 :Y5Q" +g"%*2t`Gݴ f:hN33^~yө)o)l*H-;+|+[-ZGXf~Meb75[ Ho}pi8;`$7~Yw4RypJs}!*Yf~W]TKV0Fyl$"\AE?W ,[b0q.|xZ/ˁ]P*4$*(R7L&`goTܑ.$V̇hULHnei_"o߁e*mbD2u{ݹш ߶\ؿZDܚ vz1UlRl-wk2VxՑ;؀400=ԑx~޽ګ o2RmԔ=_rZ&ן/߸([C{%b[f.\l$}VچU*B3lRPf d'GLc[dN %C9X5h _ cҠW?+`ރχ#CBW'B~cb 5~}`AE((r{2me5 t>`vd, p*=ϕƼ' o$ݥ;f`̢tɟJ$HZKԊk+LmR21,qF p̹-J%b=gV^y~׼0~-Pת{ƛB2XZ?oG!xn.}%}Oo _?bJNv$bl;z`&Kx^]"d+g eI2 B#(ijNN>SwF W |b WoW^\q?1>BL/=iR,cykWZ)BUkjy4XK, 3 F9pKuշ q@OAvyG4.,m#D"^ѣ8lQZ1C\4oJܨ힊dD6h[|L]V~.:0z*HX,Ͽ7zUQNe.7$:.0֣Mj9g {2ڬCO墸N٘@.W1Dz[[M%V5r!4&Ur s7%yNJ(?nYm"TCMmr.ݴ{bSNT]*}v`1^HvNoUۆAS6WOىe [(B͝to1bϫZH{~N}Vˋٹo<>#oTFD"%73.(?f]`!1%UqL:蜧ϸ|@8'+VWu۠0 } +T/Qnl~c{pa=V:#vm~1t 0SPH]/jg/!{/c jh[=U@ʍqIg6Mmq%Y8dc`"Xt>"{riPO?0=/9FnV}OY[՜"I {GEz `)ӇrOoKY꺧S4;L'>cN@8 ʋ{삕zb8_xV(X"]ΔěM6w,fgf+͜)TJUt> -]z}o*mGŶ1S<۵&:QzHjljL F,aY"'LˬɴbJp{6իh]m E= ~fFvE`EWinux8!GVY??7K^+[2%_mwsZMZ?vl9fO {,'9/} T}6VzôvU[dT,_uVE+B:xaY.L4rP1"nj[)Xs54 4sS6 {(,kW :Dm3/ T*z'1o'3ow|Ћ=Y< aDm?F_Y3f^Lff'@&M7F0{GTB/fzqc].L.In^Wk(hc!Ȝ|%?%\6Qn*0''Whĩ=ŝLCgR񛙌9V玫؛AӚTQyč&i٣hQJ,#|d驺z|yYH{FI%ORD&k' (kͷ_uXT4JotǠ`X l/-ԩ TBIjԛ/ Jn0,ħXBUHhFe% 6% /:&zLldKT ^Gv͊SA4:DIʯ< !.1?nTzhԓ尵 ZBCnI~+sm8T=f!c(KHSH7!LS.D4$~]ٴaGsiK7"dϸ}|{ܰQ7r-ŷzRaV]v4t2-讨YDیS@%_B(FHke%&5='jF,GoW9;(ڤX3z`fM<~1bR6t0luFIj˯JoIqĴ(cǘU@Ѣ#e&Vy( {̧KuWKeZ ^>(wDI߹}x ƺ5gYG22& sσ!q\ CP%U fbS'HLbi,sF67߼D g̣oGa)jS-&>7yCCΖi]MR A0 KfF=z ggtf7Kx [ L^.[ԭ>Zc736c͗qw*CCV<])E9)ϛ0lSM.$bASHib%zqݓV޷ʀ7+8{ \HAZ#[80* r[-swnxP+HElY./k6wKb?88GI. ur޼l9Eiޜ`"ƃȇ˺&vIբu*J\[^enQ%j ?{nW+1 ZC $3!6/SG @4ΌE!Rd8hg?J~u? ZiD4K{j%)'xMaYvkEt,lc:wXk||2$.Ey=x*-LM_xC{t4.<Pr͙s1/N8uu.ӿS_rj]\av^sQ ZŜ-DuSg6{${r25>, hcbJ֊?${ouo>ͨvCl(N9ߖQ]}3( z^)(Үe}E1\pB(yf̷HY/HI;,q«=d&T<)3SfV1ړ'vhD n$4n'r}b0DxoV UJgIN}4/|ߥ\$My"j}jib!NӽSBvC9wp7}5q2ѪҴUÍ,鼁I};Y͜ȝDJm[Osޥ$FlX~=/_SLJ&^( qwv# ꒎.P:bBfV2qgnٙ l8VӅb0aG-OTlO=AfWO׭OJ{̑Ͳg k:I3*zA$̊kP `nFGx)GRPE%5\}3۵RuuW-2G%voMk xBuFN7ׂkV)12dB!4 . N8O,f2TiV udLzyug’;Ks'^y+7UUOBж+$%O9elե*c@Fc6ggMU_~1fvV5 -V 0 )_D{Գb1#Q|k9=?Pocs$&}BoWT"M =Dy$,IN,چ wIxE6xnCC-,ϕ̲Y :y~ʝ،=Yc,TxeqUk*OTq\E*/ؒ/NSUf:b?īHt$ٶUfudH"$2kQ /WiXNx r6_y{?2ڽC~{u8|܁Sf+{30`wbcCQ+zƪ\T-{]ξ6Ѯc?8Z~|&eD9qW2R,Y+y<`OwAbz6|]:qZOVgM̥ickJ0=,4,am"RC#,c fZ6RcGŢ:)e eIr6.Z;P+O)$\wIV(h`z{%fpxl }onr 7%ӧ{ xm1oВiq JO'V!"=$ ї4KS+&Zۙ'憥Y^e~},x'"so߮d߽}{.kTJY;ffjKVB+jqMWL"e/׶߻YfxwI:kIq.DzdLWim]ɗ] f)B{lֻ`j~ކ;ā;~7-zAX'tbWO.$GS0Ra#QPO|P[ %`C)c"ͽdD1xp_s*5ac]܎*t]8Ju׷uO աH>hLkq7gR2,ʪZ]|$CZm qX LrSKb홞%H/w>G9(|vvNnNvX N Ѐ`p+{(u\ sQp ݨ3q\͟$ﵧ;QSřz[jl 6n 8DT}㔨PE %BWحYw.!/^mdSZ~j=*Qgd⨎0t]q-.PJBp1 ثatl/ypq{~TOH6 uNwY| AVrwDh4Kk+ /@ @OJZB1[?l{JՊq9PvoY6CJ$H`7Ei)*eK؂Y8{V)b pNv/A%;uh(w̃l}*4y|uV:&*P;LQg*}OW;xT!F[ o l*KKUvܼƌ٫NY4$Gd+3$KVZF&FuRj.GNۖ5ƴrevvvȬ2MC[)|eGyb{)ڻ.I{l1CesZthɻRæGp7?(dW^=  &fV͞iϟ\G6$$uP=ou87[%>`<.$MtӗB)GjSQUd`S"3ɽ}MױT th?7]iEHzş|-tdۑ,:Dj7lD6٧-+}ZU4^xOݼfQH U;"I{)1Z.@2󄖩b+qzV s^>V[ŵ-5v]蚮c""f\߬<ۋcy#Qj6dr#ȑJ4lO(yN}$m [-|Ԉ*S\ќ臉@ @ ie'm'q$s'B੻Ad).* _y#z_Ы_{_a_=+䊒ӌϞ'Pܺw GJl.rqZvD(DCG&Cر!=ǣz4v($;{2 @iǘupcE  hh s> L^fڻw TWޟR /_IĦM'B.,P-Hj)%PDp2^^w`K֫KPa>ξ﫥jϨg)KSټdGFYG$X` 7%ҀcKQO"BաB'^.`";GleԒO^l:Q>45e=[7$z iF\*B'ǝA koMFc3|Ӭ%v>!]€'! }:xi/xcR^WICz_`~cVFvf]5OnC?ҷ79']/g}փiUIȃOt̒?k:[>TSiE<7E-N ؐw;mDu[z+9g_PO$UYN[#jI&3\e4n)Rvcx/VC?Kg{GX"b(6 ʛ| RrI&-Nձ*?2BpEYP [.r?gOh/%lROE f N=d&u_qb? X°f:J/ }?(u6P"L~iV-g1YBg  }HK24鵖r)ۡ#|ti@@JR[k xcE^I2߸dVoqPkZa2H/=(c[lW%icXchPq6cM? }iShRm]6;?'B}gMmǞCj,vԱ>G+zYl?Gܦ*{.m7AT^1D";RUr"bhlqw$/gyRmZp%0Bϝ#4b\q0n N]M J},QrQ*ͯA\')yz'KdخDWdi@gzu'1\}^qI<>e^h)Q*lzBl? gGZ0`~9/ie+UrWWs6 g*D}zyn+ህwUӋ։fG%!L[#"h2fmh|Fqb}*H#znV˴]xA 1mk ׂV|=@=OBzPd5Vrl$ZՄ88^Ϗqp(:A6J5PY2 èV'Gpe᝭\hjp1awʓSA$|HE#7ч|p* `D]ZB-\6iWẍGGG׮~YJT7Mq^#0õqb0KVot[ Ֆm^k k-dpݟ^ Jd3ݕFFTϺۗ9o\S8qk"σxL_:PLh0!iˌ{8:zE  Oy/Иl ,)GqQR`\ J>[ip&Հ@ $:Q8Bt:@`{>'aޝu99'LcиđHhd͞YGf/ N=Sf0T;WJ& I 231kÉr`}A̶d@ \q-9(B,vѣALXqH[!f-t|nPΤR^bGOf=+hWD;Kfx1^ U]3@jK8{V. "k5hG¾pC鹒*6iS+пu4495dj+ KkNqBM++?{2MNJVu90$#dV/,) Ak0Ƃ^Fߛn<%Jvq$d @ww?Rs D1F-_E1}zcƝZh[$&DWx&fe% ~) ~XLt˛҅JK//(F[ KY=;ؕb~$Vd]8|bJ):v 3RRQ}˺O kUP}SV xsQro3z2F'֯nN?{"]1B+յ ;* eO]-N~2̜u%l(Zb9Mh]Z3')9#>*%)V`leY.5*D~- d5JZ!QӦ^fP/fj TXX&(f!Ý^g/j< /륃S'J֓5V^ ߟ^m{2; 0i7$&⩵ӵXEOSx5DZيt"hv_CS~A$<@ f\;Sa)6C_Ί g0(4i-k< #5t\CCh> ;!` 3-6htD]SeN }}"#Qn`F:>79$lVe~̈Ja%q~ܣ˴^lC f+/ eBa<' \*FC;|c ڀNf!L2i~<[ p&ѕAknnr틧n&fvnjn-25(!rC~D"`\T'j P`0iO͚Fkrfuəکj\'3!BIElQ?m12pQe>RwتD.ۋ XN#'Njjо4!tK_fR!@棼CJ-jaH* Np@wV[; ➄sqHlڜA?y "j!<U?hk1oa޻e8S1Н䋄!9hI B 9Ko_([f0o! 31C;XIh$ɀ禹@@0Wl ]&)s64wY3c.Mg ^1Oqs#Ms3ZNLMi} 9U~x~{$6FɬQEi2WvYF AVl VDXer(ZeͰ3)\t5\^"rШs wP5f7NK$f^q{"L]z`@DQh6f~hG5uU7G~ .#3P TV!nژPf6Չ>l6 9@Җ5Ϛ62t@7 L2  t'ԯbHԼwWfɊ7=.=bx %d? a 9epHҩ K\ۏ$C%0 ntv:M`᳑Basp& )"-qc @Ibk3ePF8ZmUL((qP05n'CVijɿX?qg^:ӛ[[PV8 6=Iɉ(cG@Lb!ll8߬MvvVbq~/%Ii҂ϡ֣T=!BPS:muvPsϥ;Z|s,G:pHgVuZR>f@e⋮@F<6Ͳ.L /)X 3"LN>^m w'>\C]9b Jn)snt__xEKD B $gYAV>g$%L0L#{&ΝFtd\P=a4 8"<ܝsL^^NEcvH-_>֋;|+c! 8O/.规Jn8&,%st]6( kH6 Fq#(ۉ[y{0(^ ֿbףŬ &fzCqI<Μ$((h\EDCc_x/E.:i^+Ο1צ҂Ji4@`lxNL$搘6T.?4] X1h|}g8<1Ȥ< @K// 5pלotpa jtbE Ey&Ц4`د$L"Jvi ljZ%=')8e`8T*M8.w~\(Htv r"jDoGG ilHe%ia&9dd>-i lMܰTA$VHG| $ :1R s\Z $Pjۇ]ًg8`簆 zߒVXݕxrtX/Ap2^[1~R{뚬ɇ:kCU'5n%'CXP06Gۮl[<NscOFeQ-gi$RNo7Wz _t"?z6y/H}ё{qL$ -a[st nSn2ğ@ѷxHNp2& 3 fx) WP'h7f> s!;p&QcN>OgdHE1u {^گV}2@JHS>!~L^d r5/GyNW-`ɚLJ=(RV2ȏM;:-A0<Ȥ L1L~.ܤkgLinNdu'f]BsLA5ShKvvn-_e9eV"mB:GΫxcZX oyHKgT~cN¸OZK:bA%9C ]oʗw1)(t^?uƦ-A99NلL#A2Yu5/_=fqljއˡ?uArZ]AX _vM1V&P\6X2m7䥱[lҏ'AQ6R S Q}딭SeS\D-wLrTC]ӎorly݂XJ^fo - ˰(X3R>\# 9VP饘QՐۑ,aeX#*gVTnqGL(Z)oMi!#ZH.$ɀW\p*ȶ /.gy 9L2p(#Z-)ijjԭ=0b`n0a]k2I)XE8fnDη%8CS.oěNg'dp-J=aYɹبNkY Ե=fNH^f<(|E(SL\>u4vdN~HN[nDeh/ڈ(21he_ʔQnV=CHEgi~%B15czŕ v >aY%e&c!pIB 8г]~A-l641/[\\Z I T4Waa8'lxRYNej3:-:G6vad$$`M,ܔCz3!q1]Ӌn#xBl]K^t_@YugSk]OƤ&v:NaLewɋ-hY}:xi O x|+^ñCq%]{[[q" x@LupՔj -[=ئ\ ejq[%^W'Hjyc%J8Imx=C/].&w4D,Ƙ3"z`U |M:3Qc!_ǣW(WjqS#f(G4GޗI>nڄE٩^˗nHG[M'C&Ǹ'orUmNݾwJ?6\AbGNzŽ2qXDIa'HVT으Et|G3( oOtrJls<;3)YQ`gw8"o&7>cѭ^@& tT}g$}0hh)GTsy4r o MH; Φw~| !( ad" -sQg#,1M|/uhR-.k$GK,݅1a=aYPA,q%! ONzvN6^>ƬAvJFӽ) /ުl̒B3GM'[,n\\kѣ m1hmo>!jM0C <埵ߎ\`K|_xN`ǀpWJ jHLM<_=CM@Wޅ%ꉷdžf%Mnp Z3@>'Md Y,BTuJ:o>b^չȑދGx_W`H "=ϟz&=@%ӌHqixDHXxjꄯK |@QTP+:uc}ОT B5ڨ81hȩaFuXLc[nNרxtNDX*N8s7|2 R{>}78.GyՂOg#Qq'g fKY`9h2„6$} (T?}A`78LHFRG EFJXw!SKr@EKa2'ʌ%v[؟[7SFjj[5hMt,^i#Coq§ZeteWip_t^*>VlhZQjXB㨪9q7@'[=eH+^їa/G6z<6)yжDHwFv2nF)%d.)ەP6^÷r {hj)ϰy"T㝼jMUd΂Mݱ[Dg4{+ݝ:<9qAw L}A=£6۠evAu+U_Q3f?R\0R R^ ,VwW2`A vG<9 4nX;? ?*uV0{[4"΂,qӼ? p}_gKB_ %_g=Ih|.ݥąV^1䓺0 "{7ms9ꛦBNIpi{ ]J :My%uGVց kkpyjp:G]Z$0 _N+M7Y2l @x6q 459OТ}Trf52k t߲}pU\ursVlתa޲ }Vm~3gm,\7m}-*,EHq$Yx=E_V'CRiND9/ Cbx@8`2I̪,!f݄nE8b+Q2쪘CZ^?GVf砱(BIe+9: A  v4RBH zѳy|x֣W?EtFOܔc=1E$V(T} rY!HhQ!.F/ dիG0;j86t 8y QG/Za3= O_ؤJPגIRsZ=|ڼA##su曻;..tש:KIT'6m7":sbqyL@Z,Y bg,n{O;]ɪ!_"=cӺdij2GBX$|i!*nT%;*^3/cEs4CwLj})<(YpHwW^HL- vpđ@wПp̹UK>1뷀L˾f0pΎ=_! 9q[ƭt-c\ @q]CAJpPao|ylN{F*3FxLTv0ԛV,jHA(\xxtP R^Sh"HJn#_p.$s2iB{TuZK t\LI%* P={b"UQ"VR} >Z ŊNVݮ-Jh σ ^ ;FQ,*+""00):;:VP8*e(7Jl0oHe^Ɗy%`4Y[eX}6KJ˩^#<ɝI_/23-@l4`P=K&=.)՜XvLfo BG]ޮ+؂PyInV`k-~SddcU.gƗ' 1N0P!ίH]Hf[Zx\. +\_4bOv#v!l,x<DxIN-Fe,/\mdPyIrǐ&$GKKև1qzG!A38̍97U;ȴVeg ݌LΐotpR# AD䶅)m"ǛX!-ΜaR_});;6П(o:֔qC^Ǖ۵A=zOb d~hzn/J~ǪŤzS,JJ#2ŭi Z~_{c]obR:v:?e? tZ]ָՠgժMk&zzq%UCW\Yڻes7ivZdTVQC$mČki wƿ#;̋ %yG8@5:yq)|⌬N=Bց^\S8]]?{rW[-+Wq)^2-KK0g4LҼ&OSPdŞ-m>nxQyY崎byCQA)BD`<`7%f"Y>ШG]T}_T,a^&xԠ,v4EpW¶SANⅭgj)&d 5 4($sDBݦxOhXQLw`qnPsTs'@Tz,2J*njވ4_}3יjҫ-%i POF?kjS#G'p1Jmba[2?kKq!@-^Y97*o0iMl=ߺ(7g_ǙWأ.. pk #c]@qos]vKi]C+K6 -/'S{VF#pƦuO&gzutxeL.vsMfџ@/)uA)0!۽)/Y_$mU?S^ GqVċj.vUH0mǕ*3bt3($F#PhzZo\d沠pmL~L jbmmK qsN"Q_Qh9 -㳟CUџO=ކy5 YkN.eui#uڒࠠp *!C_߻3Qpazmg- -k 8Z莧YPdM`TGhѤ]:dVNvcW:w|kҁ.:ӫOڑsw pT %z΁ه*0) A&3PPQ_i.-Z!%Ttf3k״+f6 6mPяH4ׇ2 umMCͥpm*Y˭9_J[.9&,rHi߃8Ʌa[Nnx J#u:nY}lzӮ^Y;zӉ1`7zv/_眓{='T `Jټ]ȇU)K{v[՝y`-0-?^[mSƐ=O#_DqqmR0) ibJ}I克WTm Aj/bYFNGuc\:i%fU,pIp ^yBcx2 Vb6Nd ٍәTlW{tĈT{S/QYK7#pQcGogQG?e<tJ83YިF^:̊|ʚ8`r}QhF4뢺j":k2;k.,&zTIFTy=K;pr$Ѳ8f_TIV[[ź`.N0U8IY D57o- !mv9\/KR!6 b\+'Ie/aFzͷ{P|w4ej-t۠^\SK+'JRSf4Ԗ+e"Ӄj\ʌE.>p!\B}vچN!"fR0rG߻* /J6Mn~}}<olϸpf%n~WXUlA!ˍ!ӫ8iD*z3@EYoJNC8f,R ƏmwE(iwLe7xЬ2Lz B,'\n@Oޤl os4PcXY }tp- yC&z Z`7)T)0jJׯ$7 ۷oUckwY;8>+g6w&$>ނu> VZJg˿=>Oi]@QYOƽ AIN%F(Y99JC4Q@J9u3p=0A1 ,^>(HRBxLԇj-ap37ubNV4|u砋ale zJ@5yCQ@RRqO¼p1Bj*O|O ,0߰ʹн,u Hs5IJR(+FL?Fh#~J1 p)O"-Jq Ƀ7u6(ۄ!P@>Á1 &'s3هX,9Y|sACEvp|̺%37_*xC8 <"'"G!£V볩s&<6D-mttzq5"mJ}_(^m'Vs۴F>}*sVӇ"m9oq{o! <]w@a#aYY}i|#r\I _ߙW+"푎Nܞ0|98ֽ .yfnsˡb~p*5E#s vN9>cQG!Ú8Њy6& -2~Q[aṖо)5_[z_itb(߭O=C/ P4? 9T,1լ9"fP]SԜ(0v4sJsbnQ{} #@ɏU^R+/6' Kh-Fs5XޖXyXQ3 WKb"&â{[mpZֶ/ʲZ[Z-l$NeWHWM_ Vӧxs䀱X )oC&6lktIp].@?wShs-$9nP[pYӲG:Etb&< E_p0JtzX B.R .EĎu-0OSBþm Ǣ]vd`ÝXP[ VC4O0&zu4&Eʙ'tAB%+DˎG~AxCPKZnRgx+i|oʜ8oqJ`G~ ɕo P 8yuq뢵𐠵Ռ=ƶT·n2paA/F[ ]+p^F(?ɬ3ggQ)ĊDLm4G;?81[ѫT> =Q8)ʒ5ck+gdRA|vakBcz[C8^'դOS0* )5r|Ȥ^?z}[SWUT}?LU^}L 6h8 bǎEڰn/MA66Mkr0.'})X "9O ~.7@3_~I*`֣q^ Q(Tߠ1``w2uՓأ0F(zcgsSolP8C4>@e1bς zF]5Qƃ/Y vAfGWJ;=yw@Rq\kK0{2tv0="w 0Nr DnJ`37%/-*R.U+[lQ7H0x/{džq8>6F'0*G\Qa$;hfEBC-`0)y[hʑV H2pCxQP¥9>&zgိ*+kɼ'W_~IPg_CO{b̖aշN ~A'/I팟o" ܬ*0wKOLxi1M*ˀzܗ{ meJ!,O'Z2Nm:ܢ*G`x]sҶ#fD\FIHw]I ?7#ȂU.5w5ɮR?70:3np&9&VupAFsUc;I}!\Uv}bz:9y! Rξ N@)0ߗDd;(AXr[BNa+{?X/Jڽ՜vݶ6lҤgO%P (/V j>MTc74bɤ^~^()yIЄe7a'xU$u8/NΨ'nh贑51;^n48ߖSqF; Jx]]Y MG-WM_ KVgGg>W&i& əۣκ5XnF>gla⧲0x){8}>;|9 i 7?kNW APEjpYrҊJp7~V8o? 3#JF ;Sl6QAiCfT0YwI+~[kB41L[*;/jLAM0X}>.tغutjiZ6)udn? |n4oZ8H/h!}I>d _Y3rDwc6ZKجA;T GXKb4p:I9m{#?{X%CKM;E({vT6 LaY}jOѭTв`u Jۃ2f1D/MR1Cb @#^$yH"c%߀.MtBl7 ^]]]*eg^1: v"t2=M@f]M̟D_w`tјmuJw"BhO;ֽ.w3,eJVKmC2LCyӝOLU{/\"K h bxZLRiO(=|V})׾[[P[n26YK UL}W0$ڃR: O3Ij(ΒRօJ )HInS(gKp 2\oNya軚8'p%KEEgO[:*׸pⳇWFt!Woڧ"˲"CրooBJd;'K͒__hv+ dލ 'VmI.^˅ 8BsfG08ռ*ʮ ꩐Tҕc6s~JimxY~V)Iƛ+hΜ;]EBAАQl"U,C)'fC{KD]p#(^ys==UjonlVeuiJ+$dU#;O ?92 <;q>o Trx& ['-xp0j[;3Iw6N?;K9YR2vrD3' KgՂ?h?r_K& `t͡񟞉y7&.>tu4ߛG :^MpvwڴYz~ڇձM٪!RWd;# ^zʈQ t\Wy\OJ14:5\ SXT ݓgvV9UkX,miM\(n>EI aIi_,( ;.s)=5AI(wXg}4YDp4{jq(Q ̷ZJUZfK*xC~p"2r#$!JzZY.^|h}zXaIEXgt^4R{fLypᚚ1ި|O 25" tUAޗ@uRPNX1ZN/ܨxIQ×_y6EK / cuDo7դ |2VC f+H :`wiy~wkt@4OE],<ͦ?sb1- JAA2-=t칙Cõ̍: Ba;WCEΞr{`&,'t[8qu -(J]4 ʹ5ay hhY.4j&4a q'( 5sXGjWB~cm۶/.6a_A5+=d >Ĺ_.h8tBs0HJll[UH4v. >]( k9. UA:,A-wyʰ҉VjVU ^}|wTHӘ,Aq0;,ZD*#{lH7bRX0CduBѢ5d=V\T=Q37o qA̐AOlܿ!{_uD G_rkߘT^}Wo).8|gWPCeJx6N(~v_;ΞS?W#M˿^SmG θJQ50 i<&+;V=KrU e#,tFjëΓU|N'uLx&) 6wrroG4 LR gnZa#t+2>if!ϥ)Ǿ>0$&qqJY\IS(ˤ7^+'wٚze !e-ݙ{awτ K"Jd Ly"FջPn)ж w-YU6L8"!ѡ|Fj=cȠERz!z|%%N{9c׉S'I#ܳ&QFn๕ !JƄeeo},XM0cs9]e08ux޾B䦂@h~T$% ?-&=EsnϨf'$Є`9wvȒߖ$sNy7zԯ3.ɉA>c,vA?p-?#Gv˧hm,QvG=KԾ nk@p*;rQwZ*ړǤ 3νեwR-`Qz\ӧvch:pZ7ןg~#;xDtO|tҺ}&Y9ƮpbuU[]Tι#UFo~yեj`a~.;&\UBD<j5yуo)],+]*D89żmSTI9⺹"_KKgh&\^a= X(u`mgO,Ӊh}y$ے$ E[b \ڊxl~[l:鈼,g\jgY '&f)GL|ƭ*Qpr~;ZI] !q٘ >0S|_Aeg<28@+5 3gKp:ELBvKj:*&z0V >GXCJIOErWb$W+^jɒϖ6HX#18 ˌ5ԋ`֩wGU,03 ̵1 Q&g;!]vX~0a \MF4C&h VӾӗ|怙w9}9/HY1˚W(u2igo}9~!V7;:H xǗ~㲿vWزj w$kʪe1Z^W$S+ļњ,-3!cmh9% Q*;%_8FV(s߷f8dشgm5@@7V։!)^`#m܊Gk!yu訦(+q:­D݉5/bwb+bᎁ6}HЛm$te1-ě G]iܘ$Q:npysǩBq8Hr-;-cN*rJ]cGYucyUku DQ):4^K<|XEޚ.Hxr亞jΚơ-]eU6xbk_loⰯuvoLzA+$^ҕ\w%>[PG<2FnD!$Sx8;;(~ Wou\Ht*GĞv:[Lr-yGm k-6K=9D>GkaDl9*K2J8OsP"偙bN% pxcN&ay{Mlƪ3#LmN̕&>4wՙި|3}+e}_,,ALu[ϲQJ5'z@NԝZ̉ED@(PVdl\8N&,)I]dNY8+ʞ_wu⥊8#+1d8s6Ǭ}壯 Uyfc+!)Ȧ1[N}3ǮIGu]x~^ʔ4 qd[>,{1#^3ID=q$%ɥ:A*Cg R@ BH@!Tnwl˭a]ɬz5 {z1R&l\WџgEIّt)8RTp*YMڋFfR8VYbJir5Fč N4egH%<ټ njc*v<᧼ /Ujao.lGvAvPؠZj9IdAvƉ< jO3j5KhiMt|en*=-ABQ׍.|"?Ïs\Z%gt2^L#;K0>;!SSI!!H>S|BϵŵQN,$,J,ya>A"TSMK"I쫈+;;Ӽ[5*^1!;m--?wb^eCiO{*NC/.Ms'  f+vS'̘  TkOHLTpRs#2Y@2N6^T)u[>4(n#*w²Jb$ȤFTxM3,"& ܴyWm k!o , ˒e6GG\r]U2%8WH CQo娣)*[zb2nʹ.CL?gl2\#.WY`WG>r8e1jB Uq8`{l_d9)\$n +L[o"N>eYfC-\Qz%seg@% I^؄*ӬD/j1'$YF\(AЃ]xiZk$5U܈?ZN:5ZC'Zܤ}w~HEVN'O:R|J%ءC.^ڎ`g͐(3!a [0ɘ»#c]j)`rsJ!*jcf`o+ ;mxx 2= }JKo a XN-K;xL@@a,u]ϺU,Y;Ia˯%y\ #2"daE޵>P~?nŠv]wZY׬a)33t2T۷MN6=?Cݹސd}1y"9gV˚!Z1qz&Ww-fRC|K>'cwA?`6$,|Ckٝ0->\#˽5KLiTom\[کNJXu}ꕵۡx[@4u g@+"R.AST+8S3r P,qݕV^fbڝ]d|k xtQ ä=:qC/ѾK69@̦8ۃ)6mkϋz{vC Gv̠d lCȇ`hr.SFmإ>2푈n\y 3k43b?sNjT%a)2}7 I }A6m"o'iLII5y?|Ue-Ңhb=Ϫ۱_*'{h3ry":U@>q|J!׎72ZΝ ]p%},r Tāeu1't̖Xm٩X$:Dl>OKX[;4Eh!BAjZ<|:f^Oh5a Ku/bztw~8i$oot^3Q?rLˊfoInHiqUgg)Ӈi-aui4,a{ nY$HkJcJ8@t1Ay8RQ)( qr<'T2QUET ԫ *DWV-J(YWZ~]^oP6{ [=ʤƔڗ>!C/9kyyrL+>;ʒ[/ fn>O< 1#ryw70"aYM0Ib8H^-ri a ޴B7N9!gI 2iOB *{Ȫ!&FsSmt*Vch|ʢ&E=E+BJ&Q"/qd"8Yn$:W|8a% F~\\ =w帙"i4}BW3߬[o4Yf"31Doڔr]CpϼAylk7S Lj @>s%0)uA 9-^{#x/ަL[`0/(?¨Y)؛a wI{ddC1ڐGdj<R0*eYCNsI(~.D*; ڻ{VqS[BOl]yWMRZ$.%qj"̙.9*H*:HfcEpRoQ#"htL\V Of}=Q]LH|_~kϣ񏈔vrți&!*)rIb@쪖%M5Нs!N=3h%`U3yV| pk,6խ]+{EΗ\^yn۔.*QzMOտD'TS\0WU'5:#h΅A%EZʜ5bҜ6M.^qӶX(1]l(4AҢۋVXkv)^ۚn6eQ~q`a4ElZ{!eٹ Rfmwš|Nwda{%Q cygRA9zXBN|5ّO49_w9.fo(D\EPl~PˢA'Ǐm |)]ˍ1<|`){y?J;|Ɠ=J7MMA~weHb^;+4T1纲ѳ'ZNWRfZx R}Eڢu^} =ּ3CAlC\'EΩ).b.-GB؄HA|ZEy˭yH: $'Xv3&yVQJ/I^ '4ZY[}>ēnѭţvTow(kxǂ Կ^gWzۼr1k }Pc.fŝL@^-7pjorͤDⶴ ppKtrU}$gmJtAPv h*ٲ͛-Zv&dHj|4P9?]]zw wLz zЩ!.+',zb8*߮$jΆ,7bCo/]Eh+#PN: q͸E@G4+5|"E@8xy>XqI3%4&Ueѣxޜ+V[ W?$U7H2ܘm &{}3}`RU=}ii*"Q:, !86ܤP'TsrvwMDKOxinM'\W mFfPOV \`%~JJvCm8kv9EgfvG١w20$-\IMD7OۺrU :Qڃ1<; -:z^%qBZKQD{җxoe%*p 7|-t<^xأbT*n }ۙo˞(ﴲ\^(Zn3fZ,2:"n@{8,-^wQRE~ '>@^U>W5 %3#X5"߶縵mw #,,C8閅WO=ĻH7=ζ:+ ᓞ(NQxTa7$m};aÿmk.47Kt݋B{Z=+IwoN.R"kO5haCK0OP$/{qu[_f_".wy$8)"oX;34Z'G&o5gȬ [푂px$~VlYy?A:O0O.?Iv{~ lz]%xդ1G2 ͯ4` 1w^"B~<׎kh:&9Dɗ@ I4|ߖ^y~r׮ۙ|,y-nQߖBN"n%;TsB֭f =3EXX7W s i*(*+"AC.ڥ+:WR^mSQMz+ . sS!F]bZxL}NN $pgvE mA~DPh#.0k㲧on?֭l/Ox$] L`.\(P+:rj{x}cO#V ̥): f(ýQ ǀ*[յ~-`h1):ҙn@-݁'>c(>,U0.Q/sU*kޑR1&&;{=< QdÅR%R F@"zEG1M}<*:Q5 zW ՟DKj~_  [#Z/9XMFۇ{7șک+hsDf!!/y {ܸ=g0<)84TMʦzj^K"$L+܏!^\*d%\%Ns$Z:˼&,t 'U}~# \ɝ/!-mYVB-Ei8ɷ92jW][тQT~79E3SѧB0n+\q\Xh;edIx6> XCVrpNFK|99QPba-~ $GnX?:a.pf. !®Cf߄Z$ ݞ\؉jrvb1F4 %B B k"r,$$\7K5sn_ +v P$ϩ3/x>Jaw/TiXFN)@ԅAK$r>Gnc QR] ]e\C w^ʺ𑞯W6ު}LB|ұ61R pn=  b>@kDRƌB MQnh50qb9j C_~Poaʀ1>bשiv63u_;fj/1'y9D8a n+.Zfq>ZTΟάs6 wV @)w1`h |ZwUia{]"5 X MDXfl|6b3Z=cddž/bWOgL  Á^ ~Їo;Lx0e_Z,Cõݷ%"({>96?C`/}G(? Zi 6m v{L3Z[ax'96!12'pͥ[˔))L@ƙV~+r2ʑkk9Z 0NG25raQJ #+Z,OhO :X=`O0 ߋWݴcZBb4l’ٟsԳܻYj(J՜:qZo%9" ]c,:ZrPA<@p/" g][uoW(AǸ3aIL/)^j_s;_"KY mĄ"oj=1HfΤ;F U\V>{9Yc6J?x̀W0M-7ؙHrV2 I<( 5uywjBtA֏o\e3YL\ʺkl#ss˯Gb/kBZ0rDhDq9WzC8 @C4.7U{_\_}#!|z(12Od@C?x7 N.?yjvGCҌ"ʚYlC`2'%b[iܫ6hLF HO] M"U1P [9X |UB S~z|.4TP{.b9py-~^z \@JX`nbDWpk9_c,:2YaFμҦ׭b1DLcau"ҝTT 7+ovzӀƣ iO~}$f}e]Է99y26WLuS Mvq9t)iG׉06G -0I#u1}ŭ[cz6WŁ!-pi?K8'`PCrrp\B;ki~8߯I{'DʪJ"am@!BS҂ ?{łk}MqWW,/R+OC[Yw3|ck=} Qc;Y4ed6nگlc`,ɩߤ@7iM=Gs4g%rGpHC5p#S/ڝ* ϓ]6}NxErP?SrbO{Qph*LbY Sn /BZ; }m~9a4-h[ ͎ϭJ$1N&|'c䬥/ʺ&᧥,/94 g)^D/P"܈Edӽ &S#pKDD Ț M9B4Ge@f~޻;a~WOk CL T|;v)␳aH z=lyNS^xG0fx!eƸ.9\( (noAiO@ut:)SPU6&*Bvp F~[@]Ja0dTx͊ZС q0.W2v1hd-CZVA@Gñ|g;=E4'K<@|4^q |\V1p%[#S#F#-CI̥+\),Wyy:#sQP^,JzF "穼ƹ0-hq(B?Z{)6{oݔ2WCtˋg5T8,+Oe0HUܺvRrAD 6ř!D)n:nc a=2ݫws9OYV@^XI{+ #bWy+@% 0.{'~{dzr/ێlL*bd_Ecfa"sص- v$95]&,̋PLY$8>=[w<* C~$\YY7W$Y^qF%EAWQ7{EH2C)Cu͔.w9AYȓKcd Ị< wTPNwbԡ"~H66_0wnDKAANe9iFVg?#|ּ^2|Ś{A&X|[QhY^oG|#W*fe`-ޣ\6i˺.tu/^ykA/˙5nnמz]1Z[ϝomV95˅_6 e^^!MMHчVx]m$ՏKJM4F-oQC23q/T])<6.jxo/|CA^[cB2|A {o1K{2A`O F8;' 9ƀ@bR]ʷq,Vo<*l^ܫQcT_5?$U0_9׊ f)Cץ) יP["q,6 #acd$\ـݻgyZgvbԷaz8{ț}BhA{mD.'*KOik;D #/h;@± !+ګ-ckn.v$?:ܗb{azKޣdGkyVֶZͥ:'Zsg.O\/+i.5j>( =>v w=7\4߈y~)qNKss~9< k {doÞ;Z荄AR4vríḾѲʀ&_>p9UF(#eI|K!Вl036nLGe*6Ne /ˌԎŪjj՚we7r|т֔讞 AZSCr ֔BInt~-#ZVvLBr"9ŗ598Vxh_d^:|xmW(~ My+)#%ʂu~ޯщ*KX8[4XL{J.. 5|E^]sҝcC~L@!=Iuzmʐ^IU:d݌a?a2h/iy;nQo (& =X;-?vkC) fm9ҟEf^-MזJ=4o,q˒i^X\lX޳ۓ{-:V{??&*_i]Ţ@T~9{UpMXאjS雩W::@VVپ=-}_ey{Ď^gifhjrԮ 0(w90{T,OT<~ >ϷXVX8^tΪ/y F&$ZLȏ!DHn˃8mL:dJ'!c\?<ƶ}@}݁ "'||2_}W 3:}6)X.邈Iemś[:ޝrmL#hd c^o;6a!mLS >nN-j'9BPB"7%"J<Z) }B [Sgԓd%7 O MmfZdQ?8k 8VjW{z 5zՄff2!]J73Cƅ2P,Mwǹ*)5H% s9ҏtIT H'~icK"~X=~KH^!Oq& "^S9c*l`t122Qd @Z1N[ :H\t܆CeSSR|DXECydhp9@<(+$̙4;.9댋)5des׷z$Uf{<&v$b)K WTR8Yj'?K^GW{o%8dwJgMz 3.7S[^n?ԣlC9XdC?5{/{/{ 2D{D uwo̧ CjcT#Ț y+L@w1c@]?|K 9dXe,r755뼼ِ\\5A 7 [B~bs^wE)`sOrя)eަlCZ@Kgߝz/miM)|DRѿ=/|pzWPC !Uqu.fc^tX\ZZJ9V]бو+|fq,ҏA_/儘(# :ΓkQn~C <ϳMfɥ$<;eڤ1%iEUgq*;R1=XhW`VUr7.Y"qyW(M&qψb)cAnjIW4ytҝ1Q܃j 6W!hd77"N˴:CM\ti1r[?Ѓo{TEzr 6k?ZQ[7/V{.=ծ"+9= KLe,`S w9oW͡ɓl _G׆aR0e_ǁu5X2k>[:kї/7:YÒ+W.1Ade;f4Y.H:^θ`"7%1$E5:DkP2r@5ݕ+Zf}G 7R=4GObT˷ ώ#_w Taҳjt[H -ysGdhAu.Z54N^RӲG2Qё\I>]zP=>';r?8Dx[k5j4ITU W0*hڬFgLRgX,cA!*}% sY|{F+u]$_oIr+sźv8sR?,%_'N,8+ kħFgd/$[5'Zǡ)A{P {2dfܥC(QUg1r\;Hbb τe+lI""Ӝ .?>ikV2Yr.6ы<OF}Klc+$#˧{ɘ 6S9Ґud`*ٕX5=eou7~4-xf&|ۼc;¼,Z_ݥ&k㯩 \&cwFc렮7ؔWK]}QY:H A=r/KuWT7Voi;Ս+ݖO?em+9W*3Mu=-ZR)Qv!EQa(9P+Bv{@E5*q]?vS!W㐸7g!N£IrWOԇdmbWBM!*I>t39 3D˓ʬy*{+ IfD$5w[EGeLeurH1T~ΧtWyw$vsjf2(dFg]kSz!~']:4`lyi1Yʸ7yT)IJu ^ճķ'^DvIwN{+$>| ؿzFda ObDL{̬o<5|ʐ-DIߚkyBoW+o^'^N? =8\|7rp0~Iq X3 Xdyzl0E p)KdBĔ,DK Ξkm?^$ fRd9M"Q%ƨѣfHç]9_RUAq}<=^F-ڋV욽Vq*ĝ/sru!`D[Iw=) EkvkȿgouS,`*糣: g mb|{{qOuyeڬ(+7oʈz0'#2VQǗME} LK4~I:ֲnj5'Je9wse>{hPg,f!k土^Ɔl|wu|Ñ߬DQx3Ckp)eC>Ԟ$2f=:Hh5ڢhFL,@:E~7BV?Q#3QA.јڬxWujTa7`N"*kKbYJD: ,T3sq%̓!Lo oPMZ~8_BUh2|H@mEj]<m wFɇ|![$Q#zT֞N6 讎HNb!b'rV!Rn&>ww)rR`><\|a +Q۹o=b$Jhܒ"A丄uu?\hG!7˽&K>p50E*~#>ĤR>p8%q{}# pqͿfOG[pVarNv @`HrrUHkέ|zg,tQͭNb)Y0G}ws=?1]Ο.:X ӻ$Vލځsw/@@{W,}v✥"ԸzEIIKUŏIeP`fq4ꒀy]%] -"Փ9szRi ٪Ӎ럤1!Sj3 ^-S`Y9%̥ʒ>2.-}pѷ7^-R2U[KV^j]N牅a"}-| k2a^!b)-D*57hoѠJ?\ζn<oQ0^06%g>)fU*7U'M$+6_7 ԤY|jipUzǵA[ .`{ f"[ꨃH170u eeɲHk.a03eTuu+(l:*owQʑGwE8wU՛nK- ͎KMr9]ay+2p+ҹx?_Q{(Ƕ; -!1FR9nf !К?n cD$=Kn,PYgxqͩ'C }G%3CgQӜc$n%lcfUˌN^ޤM-'KVϚ9yezbQȵƏxTRQ5~ ^u9g3f {&#TuH8%2t):N#s??%?05љT*Rg)Sאy"҇SAܻ錪)qRK=WH=.(<>L},7汫ƎP s+fIX\h;sb).VĦ,|pUYY }0ӐTzqMeRp -NS\ .] HdvidK9}dqzK5nX e5bF6ʍmC@;?{R,l=pe(FM-c<: GНn喊&RaRVz*/ҴT#H6v#I(V!QҠG߄+xm2k3zU35հ2o~Gqrv * [ՒC[~:m&$4ijB84|؍pHr+ƺQ)؂I gHSba-ui-l/о0\M}K?FdD{={<ԍ^Ѡ;|x݋ ]94jFaf|l\Q!r53Lc6?aa5cG|-ls^8%6uO9Qǟ nXIx4paܽfζK~?+2yIb);(JΕFH+*1&"ɰɍPa%'of?cOOK 8VzMécg֧6Y_} om+zgT|VQ?'"xR;gO^L8;qaߘlLbL\Ww>k~[gwk:>2}ZB{W ,w&S ka@Ը?6>3n=)?{2H2, )qH` ޕ3jkTĞB?Qm$%)}bUq_cqY -_1Ӂ)j?E=7>-96l. sx"hc[y7?N - TK79|ѰxzjgmhInHog)v~ C;LJqu pmW<˗=l+(lCPm-[IHHK(|LQkgª?CEBx}QN";FNUcE\k5EG н^Jv<+Dk rKCN w¹*{Ϛ>jhÉW~{|kÿ$a=g1izf҆Mm  z`0X*+Gn ?J >[Std>)`zdM+9,Z', į>cu}nmĐN=z8$Rգ3c 1MEKY$ 5 ]Y^=xܠKHUNyxUqYd*ggmnL%r䰼!@Z"["(͘pfk"v$ρ9&LIQV:WIZk7TT!X52QIe(ZP b}LLϰ:.'T/ kS->lT5}Tr#e(SG:'WmP 8oVV7S*6⋫-7kI5P|-wSX-g `(TzI(jaZc^w.8g-fV]hl3.yOu2&8EAD|L|Z3ɡ2]ۑ5KqO[شܵ,Մ>k*jsέ *Ѯ|\A[ T O=5@'z=]Z(CGEfM8GWP+qNEmF068Z:b7-Ь%{Ch1^tm,R\H TZ#x㮽`Y'}?}iou8KP1㥙夆CZ"8@x µ-``Pj}6LlRU\6[ CZN"*Y=3CȾ3ڣx~,ceG ;,5R>Uw6ԼSAR7|aqu^ځ;V`ۼ:{~۔x9:7N+m1f75dGrzZFݬ(:%P 9GaxLIrl2}>Mn?KwE/:T@Y_a^OME^3 O\s _ ^9$-Q5y'msс cvV I߇!?I$7ܡ\ód[#mH܁F&8$*pw,意hiḩt-,6i0I^,`Ś7{~5QR ]5j^FiT\?8E|ӕ_eoH{UĠT&L-3QWnԤuM* ۥD+%j;bͮ' Y> (؟4 w]|/JW#ȤZca7B'8:{} N$8oQ|W mOnL)Q^!WCM8}:Nhۑc&4ٝqo_@xމɐ5 Q+t*\]w C!W^"ywne/R=`*5bJzMwZN h PQ7޴-␜EgC29*XYKUk&D\4]aw-5&_kD@;I1fͫ{C[ŏY}ExdS9ɇ@~$`KPK}=wvZR ?Ph{%Zdϙ'biys-KhOü. [4/%0y]|(珫DBˀ(D뺹"cfw8NgPmzdo *Ģj6hni[}iY LٱEf9eF8dǣOk@p#B\'Mo=) uĐEB>:6Qlo6]Z* ) ˸kֿ /d?6 Q7Dx'ey:KCaM۽T&ufTx_WD){5PJ7A 2wWqo-Cg*te j ^"~4{;fo-W?*wW1{|k.QZ" X-J/~ ۵dp;} WAD|Qķ~XC}6cT;k#7.{7c8T_4X;B*bm#"""*RJ)EDDDD̛?97t3Zkgсhzt&ޯw.YNˋվgH@E!6~brݴz]DDDDDDDfffffffVUUUUUUUi{z6NdPK<\xx6assets/lib/bower/font-awesome/css/font-awesome.min.cssnu[/*! * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) */.fa.fa-pull-left,.fa.pull-left{margin-right:.3em}.fa,.fa-stack{display:inline-block}.fa-fw,.fa-li{text-align:center}@font-face{font-family:FontAwesome;src:url(../fonts/fontawesome-webfont.eot?v=4.7.0);src:url(../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0) format('embedded-opentype'),url(../fonts/fontawesome-webfont.woff2?v=4.7.0) format('woff2'),url(../fonts/fontawesome-webfont.woff?v=4.7.0) format('woff'),url(../fonts/fontawesome-webfont.ttf?v=4.7.0) format('truetype'),url(../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa.fa-pull-right,.fa.pull-right{margin-left:.3em}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right,.pull-right{float:right}.pull-left{float:left}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{position:relative;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-y-combinator:before,.fa-yc:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-television:before,.fa-tv:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:"\f2a3"}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-address-card:before,.fa-vcard:before{content:"\f2bb"}.fa-address-card-o:before,.fa-vcard-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}PK<\h,4%assets/lib/bower/isotope/README.mdownnu[# Isotope _Filter & sort magical layouts_ See [isotopejs.com](http://isotopejs.com) for complete docs and demos. ## Install A packaged source file includes everything you need to use Isotope. + [isotope.pkgd.js](http://isotope.metafizzy.co/isotope.pkgd.js) + [isotope.pkgd.min.js](http://isotope.metafizzy.co/isotope.pkgd.min.js) ### Bower If you are cool with the command line, install Isotope as a [Bower](http://bower.io) package: ``` bash bower install isotope ``` ## License Isotope may be used in commercial projects and applications with the one-time purchase of a commercial license. If you are paid to do your job, and part of your job is implementing Isotope, a commercial license is required. http://isotope.metafizzy.co/license.html For non-commercial, personal, or open source projects and applications, you may use Isotope under the terms of the [GPL v3 License](http://choosealicense.com/licenses/gpl-v3/). You may use Isotope for free. ## Initialize ### In JavaScript ``` js // jQuery $('#container').isotope({ // options... itemSelector: '.item', masonry: { columnWidth: 200 } }); ``` ``` js // vanilla JS var container = document.querySelector('#container'); var iso = new Isotope( container, { // options... itemSelector: '.item', masonry: { columnWidth: 200 } }); ``` ### In HTML Add a class of `js-isotope` to your element. Options can be set in JSON in `data-isotope-options`. ``` html
...
``` ## Support [CodersClan has a dedicated support forum for Isotope](https://www.codersclan.net/?repo_id=1), where you can get personal support from experienced developers. #### [Get support on CodersClan](https://www.codersclan.net/?repo_id=1) * * * By [Metafizzy](http://metafizzy.co) PK<\2}h((1assets/lib/bower/isotope/dist/isotope.pkgd.min.jsnu[/*! * Isotope PACKAGED v2.0.0 * Filter & sort magical layouts * http://isotope.metafizzy.co */ (function(t){function e(){}function i(t){function i(e){e.prototype.option||(e.prototype.option=function(e){t.isPlainObject(e)&&(this.options=t.extend(!0,this.options,e))})}function n(e,i){t.fn[e]=function(n){if("string"==typeof n){for(var s=o.call(arguments,1),a=0,u=this.length;u>a;a++){var p=this[a],h=t.data(p,e);if(h)if(t.isFunction(h[n])&&"_"!==n.charAt(0)){var f=h[n].apply(h,s);if(void 0!==f)return f}else r("no such method '"+n+"' for "+e+" instance");else r("cannot call methods on "+e+" prior to initialization; "+"attempted to call '"+n+"'")}return this}return this.each(function(){var o=t.data(this,e);o?(o.option(n),o._init()):(o=new i(this,n),t.data(this,e,o))})}}if(t){var r="undefined"==typeof console?e:function(t){console.error(t)};return t.bridget=function(t,e){i(e),n(t,e)},t.bridget}}var o=Array.prototype.slice;"function"==typeof define&&define.amd?define("jquery-bridget/jquery.bridget",["jquery"],i):i(t.jQuery)})(window),function(t){function e(e){var i=t.event;return i.target=i.target||i.srcElement||e,i}var i=document.documentElement,o=function(){};i.addEventListener?o=function(t,e,i){t.addEventListener(e,i,!1)}:i.attachEvent&&(o=function(t,i,o){t[i+o]=o.handleEvent?function(){var i=e(t);o.handleEvent.call(o,i)}:function(){var i=e(t);o.call(t,i)},t.attachEvent("on"+i,t[i+o])});var n=function(){};i.removeEventListener?n=function(t,e,i){t.removeEventListener(e,i,!1)}:i.detachEvent&&(n=function(t,e,i){t.detachEvent("on"+e,t[e+i]);try{delete t[e+i]}catch(o){t[e+i]=void 0}});var r={bind:o,unbind:n};"function"==typeof define&&define.amd?define("eventie/eventie",r):"object"==typeof exports?module.exports=r:t.eventie=r}(this),function(t){function e(t){"function"==typeof t&&(e.isReady?t():r.push(t))}function i(t){var i="readystatechange"===t.type&&"complete"!==n.readyState;if(!e.isReady&&!i){e.isReady=!0;for(var o=0,s=r.length;s>o;o++){var a=r[o];a()}}}function o(o){return o.bind(n,"DOMContentLoaded",i),o.bind(n,"readystatechange",i),o.bind(t,"load",i),e}var n=t.document,r=[];e.isReady=!1,"function"==typeof define&&define.amd?(e.isReady="function"==typeof requirejs,define("doc-ready/doc-ready",["eventie/eventie"],o)):t.docReady=o(t.eventie)}(this),function(){function t(){}function e(t,e){for(var i=t.length;i--;)if(t[i].listener===e)return i;return-1}function i(t){return function(){return this[t].apply(this,arguments)}}var o=t.prototype,n=this,r=n.EventEmitter;o.getListeners=function(t){var e,i,o=this._getEvents();if(t instanceof RegExp){e={};for(i in o)o.hasOwnProperty(i)&&t.test(i)&&(e[i]=o[i])}else e=o[t]||(o[t]=[]);return e},o.flattenListeners=function(t){var e,i=[];for(e=0;t.length>e;e+=1)i.push(t[e].listener);return i},o.getListenersAsObject=function(t){var e,i=this.getListeners(t);return i instanceof Array&&(e={},e[t]=i),e||i},o.addListener=function(t,i){var o,n=this.getListenersAsObject(t),r="object"==typeof i;for(o in n)n.hasOwnProperty(o)&&-1===e(n[o],i)&&n[o].push(r?i:{listener:i,once:!1});return this},o.on=i("addListener"),o.addOnceListener=function(t,e){return this.addListener(t,{listener:e,once:!0})},o.once=i("addOnceListener"),o.defineEvent=function(t){return this.getListeners(t),this},o.defineEvents=function(t){for(var e=0;t.length>e;e+=1)this.defineEvent(t[e]);return this},o.removeListener=function(t,i){var o,n,r=this.getListenersAsObject(t);for(n in r)r.hasOwnProperty(n)&&(o=e(r[n],i),-1!==o&&r[n].splice(o,1));return this},o.off=i("removeListener"),o.addListeners=function(t,e){return this.manipulateListeners(!1,t,e)},o.removeListeners=function(t,e){return this.manipulateListeners(!0,t,e)},o.manipulateListeners=function(t,e,i){var o,n,r=t?this.removeListener:this.addListener,s=t?this.removeListeners:this.addListeners;if("object"!=typeof e||e instanceof RegExp)for(o=i.length;o--;)r.call(this,e,i[o]);else for(o in e)e.hasOwnProperty(o)&&(n=e[o])&&("function"==typeof n?r.call(this,o,n):s.call(this,o,n));return this},o.removeEvent=function(t){var e,i=typeof t,o=this._getEvents();if("string"===i)delete o[t];else if(t instanceof RegExp)for(e in o)o.hasOwnProperty(e)&&t.test(e)&&delete o[e];else delete this._events;return this},o.removeAllListeners=i("removeEvent"),o.emitEvent=function(t,e){var i,o,n,r,s=this.getListenersAsObject(t);for(n in s)if(s.hasOwnProperty(n))for(o=s[n].length;o--;)i=s[n][o],i.once===!0&&this.removeListener(t,i.listener),r=i.listener.apply(this,e||[]),r===this._getOnceReturnValue()&&this.removeListener(t,i.listener);return this},o.trigger=i("emitEvent"),o.emit=function(t){var e=Array.prototype.slice.call(arguments,1);return this.emitEvent(t,e)},o.setOnceReturnValue=function(t){return this._onceReturnValue=t,this},o._getOnceReturnValue=function(){return this.hasOwnProperty("_onceReturnValue")?this._onceReturnValue:!0},o._getEvents=function(){return this._events||(this._events={})},t.noConflict=function(){return n.EventEmitter=r,t},"function"==typeof define&&define.amd?define("eventEmitter/EventEmitter",[],function(){return t}):"object"==typeof module&&module.exports?module.exports=t:this.EventEmitter=t}.call(this),function(t){function e(t){if(t){if("string"==typeof o[t])return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e,n=0,r=i.length;r>n;n++)if(e=i[n]+t,"string"==typeof o[e])return e}}var i="Webkit Moz ms Ms O".split(" "),o=document.documentElement.style;"function"==typeof define&&define.amd?define("get-style-property/get-style-property",[],function(){return e}):"object"==typeof exports?module.exports=e:t.getStyleProperty=e}(window),function(t){function e(t){var e=parseFloat(t),i=-1===t.indexOf("%")&&!isNaN(e);return i&&e}function i(){for(var t={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},e=0,i=s.length;i>e;e++){var o=s[e];t[o]=0}return t}function o(t){function o(t){if("string"==typeof t&&(t=document.querySelector(t)),t&&"object"==typeof t&&t.nodeType){var o=r(t);if("none"===o.display)return i();var n={};n.width=t.offsetWidth,n.height=t.offsetHeight;for(var h=n.isBorderBox=!(!p||!o[p]||"border-box"!==o[p]),f=0,c=s.length;c>f;f++){var d=s[f],l=o[d];l=a(t,l);var y=parseFloat(l);n[d]=isNaN(y)?0:y}var m=n.paddingLeft+n.paddingRight,g=n.paddingTop+n.paddingBottom,v=n.marginLeft+n.marginRight,_=n.marginTop+n.marginBottom,I=n.borderLeftWidth+n.borderRightWidth,L=n.borderTopWidth+n.borderBottomWidth,z=h&&u,S=e(o.width);S!==!1&&(n.width=S+(z?0:m+I));var b=e(o.height);return b!==!1&&(n.height=b+(z?0:g+L)),n.innerWidth=n.width-(m+I),n.innerHeight=n.height-(g+L),n.outerWidth=n.width+v,n.outerHeight=n.height+_,n}}function a(t,e){if(n||-1===e.indexOf("%"))return e;var i=t.style,o=i.left,r=t.runtimeStyle,s=r&&r.left;return s&&(r.left=t.currentStyle.left),i.left=e,e=i.pixelLeft,i.left=o,s&&(r.left=s),e}var u,p=t("boxSizing");return function(){if(p){var t=document.createElement("div");t.style.width="200px",t.style.padding="1px 2px 3px 4px",t.style.borderStyle="solid",t.style.borderWidth="1px 2px 3px 4px",t.style[p]="border-box";var i=document.body||document.documentElement;i.appendChild(t);var o=r(t);u=200===e(o.width),i.removeChild(t)}}(),o}var n=t.getComputedStyle,r=n?function(t){return n(t,null)}:function(t){return t.currentStyle},s=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"];"function"==typeof define&&define.amd?define("get-size/get-size",["get-style-property/get-style-property"],o):"object"==typeof exports?module.exports=o(require("get-style-property")):t.getSize=o(t.getStyleProperty)}(window),function(t,e){function i(t,e){return t[a](e)}function o(t){if(!t.parentNode){var e=document.createDocumentFragment();e.appendChild(t)}}function n(t,e){o(t);for(var i=t.parentNode.querySelectorAll(e),n=0,r=i.length;r>n;n++)if(i[n]===t)return!0;return!1}function r(t,e){return o(t),i(t,e)}var s,a=function(){if(e.matchesSelector)return"matchesSelector";for(var t=["webkit","moz","ms","o"],i=0,o=t.length;o>i;i++){var n=t[i],r=n+"MatchesSelector";if(e[r])return r}}();if(a){var u=document.createElement("div"),p=i(u,"div");s=p?i:r}else s=n;"function"==typeof define&&define.amd?define("matches-selector/matches-selector",[],function(){return s}):window.matchesSelector=s}(this,Element.prototype),function(t){function e(t,e){for(var i in e)t[i]=e[i];return t}function i(t){for(var e in t)return!1;return e=null,!0}function o(t){return t.replace(/([A-Z])/g,function(t){return"-"+t.toLowerCase()})}function n(t,n,r){function a(t,e){t&&(this.element=t,this.layout=e,this.position={x:0,y:0},this._create())}var u=r("transition"),p=r("transform"),h=u&&p,f=!!r("perspective"),c={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"otransitionend",transition:"transitionend"}[u],d=["transform","transition","transitionDuration","transitionProperty"],l=function(){for(var t={},e=0,i=d.length;i>e;e++){var o=d[e],n=r(o);n&&n!==o&&(t[o]=n)}return t}();e(a.prototype,t.prototype),a.prototype._create=function(){this._transn={ingProperties:{},clean:{},onEnd:{}},this.css({position:"absolute"})},a.prototype.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},a.prototype.getSize=function(){this.size=n(this.element)},a.prototype.css=function(t){var e=this.element.style;for(var i in t){var o=l[i]||i;e[o]=t[i]}},a.prototype.getPosition=function(){var t=s(this.element),e=this.layout.options,i=e.isOriginLeft,o=e.isOriginTop,n=parseInt(t[i?"left":"right"],10),r=parseInt(t[o?"top":"bottom"],10);n=isNaN(n)?0:n,r=isNaN(r)?0:r;var a=this.layout.size;n-=i?a.paddingLeft:a.paddingRight,r-=o?a.paddingTop:a.paddingBottom,this.position.x=n,this.position.y=r},a.prototype.layoutPosition=function(){var t=this.layout.size,e=this.layout.options,i={};e.isOriginLeft?(i.left=this.position.x+t.paddingLeft+"px",i.right=""):(i.right=this.position.x+t.paddingRight+"px",i.left=""),e.isOriginTop?(i.top=this.position.y+t.paddingTop+"px",i.bottom=""):(i.bottom=this.position.y+t.paddingBottom+"px",i.top=""),this.css(i),this.emitEvent("layout",[this])};var y=f?function(t,e){return"translate3d("+t+"px, "+e+"px, 0)"}:function(t,e){return"translate("+t+"px, "+e+"px)"};a.prototype._transitionTo=function(t,e){this.getPosition();var i=this.position.x,o=this.position.y,n=parseInt(t,10),r=parseInt(e,10),s=n===this.position.x&&r===this.position.y;if(this.setPosition(t,e),s&&!this.isTransitioning)return this.layoutPosition(),void 0;var a=t-i,u=e-o,p={},h=this.layout.options;a=h.isOriginLeft?a:-a,u=h.isOriginTop?u:-u,p.transform=y(a,u),this.transition({to:p,onTransitionEnd:{transform:this.layoutPosition},isCleaning:!0})},a.prototype.goTo=function(t,e){this.setPosition(t,e),this.layoutPosition()},a.prototype.moveTo=h?a.prototype._transitionTo:a.prototype.goTo,a.prototype.setPosition=function(t,e){this.position.x=parseInt(t,10),this.position.y=parseInt(e,10)},a.prototype._nonTransition=function(t){this.css(t.to),t.isCleaning&&this._removeStyles(t.to);for(var e in t.onTransitionEnd)t.onTransitionEnd[e].call(this)},a.prototype._transition=function(t){if(!parseFloat(this.layout.options.transitionDuration))return this._nonTransition(t),void 0;var e=this._transn;for(var i in t.onTransitionEnd)e.onEnd[i]=t.onTransitionEnd[i];for(i in t.to)e.ingProperties[i]=!0,t.isCleaning&&(e.clean[i]=!0);if(t.from){this.css(t.from);var o=this.element.offsetHeight;o=null}this.enableTransition(t.to),this.css(t.to),this.isTransitioning=!0};var m=p&&o(p)+",opacity";a.prototype.enableTransition=function(){this.isTransitioning||(this.css({transitionProperty:m,transitionDuration:this.layout.options.transitionDuration}),this.element.addEventListener(c,this,!1))},a.prototype.transition=a.prototype[u?"_transition":"_nonTransition"],a.prototype.onwebkitTransitionEnd=function(t){this.ontransitionend(t)},a.prototype.onotransitionend=function(t){this.ontransitionend(t)};var g={"-webkit-transform":"transform","-moz-transform":"transform","-o-transform":"transform"};a.prototype.ontransitionend=function(t){if(t.target===this.element){var e=this._transn,o=g[t.propertyName]||t.propertyName;if(delete e.ingProperties[o],i(e.ingProperties)&&this.disableTransition(),o in e.clean&&(this.element.style[t.propertyName]="",delete e.clean[o]),o in e.onEnd){var n=e.onEnd[o];n.call(this),delete e.onEnd[o]}this.emitEvent("transitionEnd",[this])}},a.prototype.disableTransition=function(){this.removeTransitionStyles(),this.element.removeEventListener(c,this,!1),this.isTransitioning=!1},a.prototype._removeStyles=function(t){var e={};for(var i in t)e[i]="";this.css(e)};var v={transitionProperty:"",transitionDuration:""};return a.prototype.removeTransitionStyles=function(){this.css(v)},a.prototype.removeElem=function(){this.element.parentNode.removeChild(this.element),this.emitEvent("remove",[this])},a.prototype.remove=function(){if(!u||!parseFloat(this.layout.options.transitionDuration))return this.removeElem(),void 0;var t=this;this.on("transitionEnd",function(){return t.removeElem(),!0}),this.hide()},a.prototype.reveal=function(){delete this.isHidden,this.css({display:""});var t=this.layout.options;this.transition({from:t.hiddenStyle,to:t.visibleStyle,isCleaning:!0})},a.prototype.hide=function(){this.isHidden=!0,this.css({display:""});var t=this.layout.options;this.transition({from:t.visibleStyle,to:t.hiddenStyle,isCleaning:!0,onTransitionEnd:{opacity:function(){this.isHidden&&this.css({display:"none"})}}})},a.prototype.destroy=function(){this.css({position:"",left:"",right:"",top:"",bottom:"",transition:"",transform:""})},a}var r=t.getComputedStyle,s=r?function(t){return r(t,null)}:function(t){return t.currentStyle};"function"==typeof define&&define.amd?define("outlayer/item",["eventEmitter/EventEmitter","get-size/get-size","get-style-property/get-style-property"],n):(t.Outlayer={},t.Outlayer.Item=n(t.EventEmitter,t.getSize,t.getStyleProperty))}(window),function(t){function e(t,e){for(var i in e)t[i]=e[i];return t}function i(t){return"[object Array]"===f.call(t)}function o(t){var e=[];if(i(t))e=t;else if(t&&"number"==typeof t.length)for(var o=0,n=t.length;n>o;o++)e.push(t[o]);else e.push(t);return e}function n(t,e){var i=d(e,t);-1!==i&&e.splice(i,1)}function r(t){return t.replace(/(.)([A-Z])/g,function(t,e,i){return e+"-"+i}).toLowerCase()}function s(i,s,f,d,l,y){function m(t,i){if("string"==typeof t&&(t=a.querySelector(t)),!t||!c(t))return u&&u.error("Bad "+this.constructor.namespace+" element: "+t),void 0;this.element=t,this.options=e({},this.constructor.defaults),this.option(i);var o=++g;this.element.outlayerGUID=o,v[o]=this,this._create(),this.options.isInitLayout&&this.layout()}var g=0,v={};return m.namespace="outlayer",m.Item=y,m.defaults={containerStyle:{position:"relative"},isInitLayout:!0,isOriginLeft:!0,isOriginTop:!0,isResizeBound:!0,isResizingContainer:!0,transitionDuration:"0.4s",hiddenStyle:{opacity:0,transform:"scale(0.001)"},visibleStyle:{opacity:1,transform:"scale(1)"}},e(m.prototype,f.prototype),m.prototype.option=function(t){e(this.options,t)},m.prototype._create=function(){this.reloadItems(),this.stamps=[],this.stamp(this.options.stamp),e(this.element.style,this.options.containerStyle),this.options.isResizeBound&&this.bindResize()},m.prototype.reloadItems=function(){this.items=this._itemize(this.element.children)},m.prototype._itemize=function(t){for(var e=this._filterFindItemElements(t),i=this.constructor.Item,o=[],n=0,r=e.length;r>n;n++){var s=e[n],a=new i(s,this);o.push(a)}return o},m.prototype._filterFindItemElements=function(t){t=o(t);for(var e=this.options.itemSelector,i=[],n=0,r=t.length;r>n;n++){var s=t[n];if(c(s))if(e){l(s,e)&&i.push(s);for(var a=s.querySelectorAll(e),u=0,p=a.length;p>u;u++)i.push(a[u])}else i.push(s)}return i},m.prototype.getItemElements=function(){for(var t=[],e=0,i=this.items.length;i>e;e++)t.push(this.items[e].element);return t},m.prototype.layout=function(){this._resetLayout(),this._manageStamps();var t=void 0!==this.options.isLayoutInstant?this.options.isLayoutInstant:!this._isLayoutInited;this.layoutItems(this.items,t),this._isLayoutInited=!0},m.prototype._init=m.prototype.layout,m.prototype._resetLayout=function(){this.getSize()},m.prototype.getSize=function(){this.size=d(this.element)},m.prototype._getMeasurement=function(t,e){var i,o=this.options[t];o?("string"==typeof o?i=this.element.querySelector(o):c(o)&&(i=o),this[t]=i?d(i)[e]:o):this[t]=0},m.prototype.layoutItems=function(t,e){t=this._getItemsForLayout(t),this._layoutItems(t,e),this._postLayout()},m.prototype._getItemsForLayout=function(t){for(var e=[],i=0,o=t.length;o>i;i++){var n=t[i];n.isIgnored||e.push(n)}return e},m.prototype._layoutItems=function(t,e){function i(){o.emitEvent("layoutComplete",[o,t])}var o=this;if(!t||!t.length)return i(),void 0;this._itemsOn(t,"layout",i);for(var n=[],r=0,s=t.length;s>r;r++){var a=t[r],u=this._getItemLayoutPosition(a);u.item=a,u.isInstant=e||a.isLayoutInstant,n.push(u)}this._processLayoutQueue(n)},m.prototype._getItemLayoutPosition=function(){return{x:0,y:0}},m.prototype._processLayoutQueue=function(t){for(var e=0,i=t.length;i>e;e++){var o=t[e];this._positionItem(o.item,o.x,o.y,o.isInstant)}},m.prototype._positionItem=function(t,e,i,o){o?t.goTo(e,i):t.moveTo(e,i)},m.prototype._postLayout=function(){this.resizeContainer()},m.prototype.resizeContainer=function(){if(this.options.isResizingContainer){var t=this._getContainerSize();t&&(this._setContainerMeasure(t.width,!0),this._setContainerMeasure(t.height,!1))}},m.prototype._getContainerSize=h,m.prototype._setContainerMeasure=function(t,e){if(void 0!==t){var i=this.size;i.isBorderBox&&(t+=e?i.paddingLeft+i.paddingRight+i.borderLeftWidth+i.borderRightWidth:i.paddingBottom+i.paddingTop+i.borderTopWidth+i.borderBottomWidth),t=Math.max(t,0),this.element.style[e?"width":"height"]=t+"px"}},m.prototype._itemsOn=function(t,e,i){function o(){return n++,n===r&&i.call(s),!0}for(var n=0,r=t.length,s=this,a=0,u=t.length;u>a;a++){var p=t[a];p.on(e,o)}},m.prototype.ignore=function(t){var e=this.getItem(t);e&&(e.isIgnored=!0)},m.prototype.unignore=function(t){var e=this.getItem(t);e&&delete e.isIgnored},m.prototype.stamp=function(t){if(t=this._find(t)){this.stamps=this.stamps.concat(t);for(var e=0,i=t.length;i>e;e++){var o=t[e];this.ignore(o)}}},m.prototype.unstamp=function(t){if(t=this._find(t))for(var e=0,i=t.length;i>e;e++){var o=t[e];n(o,this.stamps),this.unignore(o)}},m.prototype._find=function(t){return t?("string"==typeof t&&(t=this.element.querySelectorAll(t)),t=o(t)):void 0},m.prototype._manageStamps=function(){if(this.stamps&&this.stamps.length){this._getBoundingRect();for(var t=0,e=this.stamps.length;e>t;t++){var i=this.stamps[t];this._manageStamp(i)}}},m.prototype._getBoundingRect=function(){var t=this.element.getBoundingClientRect(),e=this.size;this._boundingRect={left:t.left+e.paddingLeft+e.borderLeftWidth,top:t.top+e.paddingTop+e.borderTopWidth,right:t.right-(e.paddingRight+e.borderRightWidth),bottom:t.bottom-(e.paddingBottom+e.borderBottomWidth)}},m.prototype._manageStamp=h,m.prototype._getElementOffset=function(t){var e=t.getBoundingClientRect(),i=this._boundingRect,o=d(t),n={left:e.left-i.left-o.marginLeft,top:e.top-i.top-o.marginTop,right:i.right-e.right-o.marginRight,bottom:i.bottom-e.bottom-o.marginBottom};return n},m.prototype.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},m.prototype.bindResize=function(){this.isResizeBound||(i.bind(t,"resize",this),this.isResizeBound=!0)},m.prototype.unbindResize=function(){this.isResizeBound&&i.unbind(t,"resize",this),this.isResizeBound=!1},m.prototype.onresize=function(){function t(){e.resize(),delete e.resizeTimeout}this.resizeTimeout&&clearTimeout(this.resizeTimeout);var e=this;this.resizeTimeout=setTimeout(t,100)},m.prototype.resize=function(){this.isResizeBound&&this.needsResizeLayout()&&this.layout()},m.prototype.needsResizeLayout=function(){var t=d(this.element),e=this.size&&t;return e&&t.innerWidth!==this.size.innerWidth},m.prototype.addItems=function(t){var e=this._itemize(t);return e.length&&(this.items=this.items.concat(e)),e},m.prototype.appended=function(t){var e=this.addItems(t);e.length&&(this.layoutItems(e,!0),this.reveal(e))},m.prototype.prepended=function(t){var e=this._itemize(t);if(e.length){var i=this.items.slice(0);this.items=e.concat(i),this._resetLayout(),this._manageStamps(),this.layoutItems(e,!0),this.reveal(e),this.layoutItems(i)}},m.prototype.reveal=function(t){var e=t&&t.length;if(e)for(var i=0;e>i;i++){var o=t[i];o.reveal()}},m.prototype.hide=function(t){var e=t&&t.length;if(e)for(var i=0;e>i;i++){var o=t[i];o.hide()}},m.prototype.getItem=function(t){for(var e=0,i=this.items.length;i>e;e++){var o=this.items[e];if(o.element===t)return o}},m.prototype.getItems=function(t){if(t&&t.length){for(var e=[],i=0,o=t.length;o>i;i++){var n=t[i],r=this.getItem(n);r&&e.push(r)}return e}},m.prototype.remove=function(t){t=o(t);var e=this.getItems(t);if(e&&e.length){this._itemsOn(e,"remove",function(){this.emitEvent("removeComplete",[this,e])});for(var i=0,r=e.length;r>i;i++){var s=e[i];s.remove(),n(s,this.items)}}},m.prototype.destroy=function(){var t=this.element.style;t.height="",t.position="",t.width="";for(var e=0,i=this.items.length;i>e;e++){var o=this.items[e];o.destroy()}this.unbindResize(),delete this.element.outlayerGUID,p&&p.removeData(this.element,this.constructor.namespace)},m.data=function(t){var e=t&&t.outlayerGUID;return e&&v[e]},m.create=function(t,i){function o(){m.apply(this,arguments)}return Object.create?o.prototype=Object.create(m.prototype):e(o.prototype,m.prototype),o.prototype.constructor=o,o.defaults=e({},m.defaults),e(o.defaults,i),o.prototype.settings={},o.namespace=t,o.data=m.data,o.Item=function(){y.apply(this,arguments)},o.Item.prototype=new y,s(function(){for(var e=r(t),i=a.querySelectorAll(".js-"+e),n="data-"+e+"-options",s=0,h=i.length;h>s;s++){var f,c=i[s],d=c.getAttribute(n);try{f=d&&JSON.parse(d)}catch(l){u&&u.error("Error parsing "+n+" on "+c.nodeName.toLowerCase()+(c.id?"#"+c.id:"")+": "+l);continue}var y=new o(c,f);p&&p.data(c,t,y)}}),p&&p.bridget&&p.bridget(t,o),o},m.Item=y,m}var a=t.document,u=t.console,p=t.jQuery,h=function(){},f=Object.prototype.toString,c="object"==typeof HTMLElement?function(t){return t instanceof HTMLElement}:function(t){return t&&"object"==typeof t&&1===t.nodeType&&"string"==typeof t.nodeName},d=Array.prototype.indexOf?function(t,e){return t.indexOf(e)}:function(t,e){for(var i=0,o=t.length;o>i;i++)if(t[i]===e)return i;return-1};"function"==typeof define&&define.amd?define("outlayer/outlayer",["eventie/eventie","doc-ready/doc-ready","eventEmitter/EventEmitter","get-size/get-size","matches-selector/matches-selector","./item"],s):t.Outlayer=s(t.eventie,t.docReady,t.EventEmitter,t.getSize,t.matchesSelector,t.Outlayer.Item)}(window),function(t){function e(t){function e(){t.Item.apply(this,arguments)}return e.prototype=new t.Item,e.prototype._create=function(){this.id=this.layout.itemGUID++,t.Item.prototype._create.call(this),this.sortData={}},e.prototype.updateSortData=function(){if(!this.isIgnored){this.sortData.id=this.id,this.sortData["original-order"]=this.id,this.sortData.random=Math.random();var t=this.layout.options.getSortData,e=this.layout._sorters;for(var i in t){var o=e[i];this.sortData[i]=o(this.element,this)}}},e}"function"==typeof define&&define.amd?define("isotope/js/item",["outlayer/outlayer"],e):(t.Isotope=t.Isotope||{},t.Isotope.Item=e(t.Outlayer))}(window),function(t){function e(t,e){function i(t){this.isotope=t,t&&(this.options=t.options[this.namespace],this.element=t.element,this.items=t.filteredItems,this.size=t.size)}return function(){function t(t){return function(){return e.prototype[t].apply(this.isotope,arguments)}}for(var o=["_resetLayout","_getItemLayoutPosition","_manageStamp","_getContainerSize","_getElementOffset","needsResizeLayout"],n=0,r=o.length;r>n;n++){var s=o[n];i.prototype[s]=t(s)}}(),i.prototype.needsVerticalResizeLayout=function(){var e=t(this.isotope.element),i=this.isotope.size&&e;return i&&e.innerHeight!==this.isotope.size.innerHeight},i.prototype._getMeasurement=function(){this.isotope._getMeasurement.apply(this,arguments)},i.prototype.getColumnWidth=function(){this.getSegmentSize("column","Width")},i.prototype.getRowHeight=function(){this.getSegmentSize("row","Height")},i.prototype.getSegmentSize=function(t,e){var i=t+e,o="outer"+e;if(this._getMeasurement(i,o),!this[i]){var n=this.getFirstItemSize();this[i]=n&&n[o]||this.isotope.size["inner"+e]}},i.prototype.getFirstItemSize=function(){var e=this.isotope.filteredItems[0];return e&&e.element&&t(e.element)},i.prototype.layout=function(){this.isotope.layout.apply(this.isotope,arguments)},i.prototype.getSize=function(){this.isotope.getSize(),this.size=this.isotope.size},i.modes={},i.create=function(t,e){function o(){i.apply(this,arguments)}return o.prototype=new i,e&&(o.options=e),o.prototype.namespace=t,i.modes[t]=o,o},i}"function"==typeof define&&define.amd?define("isotope/js/layout-mode",["get-size/get-size","outlayer/outlayer"],e):(t.Isotope=t.Isotope||{},t.Isotope.LayoutMode=e(t.getSize,t.Outlayer))}(window),function(t){function e(t,e){var o=t.create("masonry");return o.prototype._resetLayout=function(){this.getSize(),this._getMeasurement("columnWidth","outerWidth"),this._getMeasurement("gutter","outerWidth"),this.measureColumns();var t=this.cols;for(this.colYs=[];t--;)this.colYs.push(0);this.maxY=0},o.prototype.measureColumns=function(){if(this.getContainerWidth(),!this.columnWidth){var t=this.items[0],i=t&&t.element;this.columnWidth=i&&e(i).outerWidth||this.containerWidth}this.columnWidth+=this.gutter,this.cols=Math.floor((this.containerWidth+this.gutter)/this.columnWidth),this.cols=Math.max(this.cols,1)},o.prototype.getContainerWidth=function(){var t=this.options.isFitWidth?this.element.parentNode:this.element,i=e(t);this.containerWidth=i&&i.innerWidth},o.prototype._getItemLayoutPosition=function(t){t.getSize();var e=t.size.outerWidth%this.columnWidth,o=e&&1>e?"round":"ceil",n=Math[o](t.size.outerWidth/this.columnWidth);n=Math.min(n,this.cols);for(var r=this._getColGroup(n),s=Math.min.apply(Math,r),a=i(r,s),u={x:this.columnWidth*a,y:s},p=s+t.size.outerHeight,h=this.cols+1-r.length,f=0;h>f;f++)this.colYs[a+f]=p;return u},o.prototype._getColGroup=function(t){if(2>t)return this.colYs;for(var e=[],i=this.cols+1-t,o=0;i>o;o++){var n=this.colYs.slice(o,o+t);e[o]=Math.max.apply(Math,n)}return e},o.prototype._manageStamp=function(t){var i=e(t),o=this._getElementOffset(t),n=this.options.isOriginLeft?o.left:o.right,r=n+i.outerWidth,s=Math.floor(n/this.columnWidth);s=Math.max(0,s);var a=Math.floor(r/this.columnWidth);a-=r%this.columnWidth?0:1,a=Math.min(this.cols-1,a);for(var u=(this.options.isOriginTop?o.top:o.bottom)+i.outerHeight,p=s;a>=p;p++)this.colYs[p]=Math.max(u,this.colYs[p])},o.prototype._getContainerSize=function(){this.maxY=Math.max.apply(Math,this.colYs);var t={height:this.maxY};return this.options.isFitWidth&&(t.width=this._getContainerFitWidth()),t},o.prototype._getContainerFitWidth=function(){for(var t=0,e=this.cols;--e&&0===this.colYs[e];)t++;return(this.cols-t)*this.columnWidth-this.gutter},o.prototype.needsResizeLayout=function(){var t=this.containerWidth;return this.getContainerWidth(),t!==this.containerWidth},o}var i=Array.prototype.indexOf?function(t,e){return t.indexOf(e)}:function(t,e){for(var i=0,o=t.length;o>i;i++){var n=t[i];if(n===e)return i}return-1};"function"==typeof define&&define.amd?define("masonry/masonry",["outlayer/outlayer","get-size/get-size"],e):t.Masonry=e(t.Outlayer,t.getSize)}(window),function(t){function e(t,e){for(var i in e)t[i]=e[i];return t}function i(t,i){var o=t.create("masonry"),n=o.prototype._getElementOffset,r=o.prototype.layout,s=o.prototype._getMeasurement;e(o.prototype,i.prototype),o.prototype._getElementOffset=n,o.prototype.layout=r,o.prototype._getMeasurement=s;var a=o.prototype.measureColumns;o.prototype.measureColumns=function(){this.items=this.isotope.filteredItems,a.call(this)};var u=o.prototype._manageStamp;return o.prototype._manageStamp=function(){this.options.isOriginLeft=this.isotope.options.isOriginLeft,this.options.isOriginTop=this.isotope.options.isOriginTop,u.apply(this,arguments)},o}"function"==typeof define&&define.amd?define("isotope/js/layout-modes/masonry",["../layout-mode","masonry/masonry"],i):i(t.Isotope.LayoutMode,t.Masonry)}(window),function(t){function e(t){var e=t.create("fitRows");return e.prototype._resetLayout=function(){this.x=0,this.y=0,this.maxY=0},e.prototype._getItemLayoutPosition=function(t){t.getSize(),0!==this.x&&t.size.outerWidth+this.x>this.isotope.size.innerWidth&&(this.x=0,this.y=this.maxY);var e={x:this.x,y:this.y};return this.maxY=Math.max(this.maxY,this.y+t.size.outerHeight),this.x+=t.size.outerWidth,e},e.prototype._getContainerSize=function(){return{height:this.maxY}},e}"function"==typeof define&&define.amd?define("isotope/js/layout-modes/fit-rows",["../layout-mode"],e):e(t.Isotope.LayoutMode)}(window),function(t){function e(t){var e=t.create("vertical",{horizontalAlignment:0});return e.prototype._resetLayout=function(){this.y=0},e.prototype._getItemLayoutPosition=function(t){t.getSize();var e=(this.isotope.size.innerWidth-t.size.outerWidth)*this.options.horizontalAlignment,i=this.y;return this.y+=t.size.outerHeight,{x:e,y:i}},e.prototype._getContainerSize=function(){return{height:this.y}},e}"function"==typeof define&&define.amd?define("isotope/js/layout-modes/vertical",["../layout-mode"],e):e(t.Isotope.LayoutMode)}(window),function(t){function e(t,e){for(var i in e)t[i]=e[i];return t}function i(t){return"[object Array]"===h.call(t)}function o(t){var e=[];if(i(t))e=t;else if(t&&"number"==typeof t.length)for(var o=0,n=t.length;n>o;o++)e.push(t[o]);else e.push(t);return e}function n(t,e){var i=f(e,t);-1!==i&&e.splice(i,1)}function r(t,i,r,u,h){function f(t,e){return function(i,o){for(var n=0,r=t.length;r>n;n++){var s=t[n],a=i.sortData[s],u=o.sortData[s];if(a>u||u>a){var p=void 0!==e[s]?e[s]:e,h=p?1:-1;return(a>u?1:-1)*h}}return 0}}var c=t.create("isotope",{layoutMode:"masonry",isJQueryFiltering:!0,sortAscending:!0});c.Item=u,c.LayoutMode=h,c.prototype._create=function(){this.itemGUID=0,this._sorters={},this._getSorters(),t.prototype._create.call(this),this.modes={},this.filteredItems=this.items,this.sortHistory=["original-order"];for(var e in h.modes)this._initLayoutMode(e)},c.prototype.reloadItems=function(){this.itemGUID=0,t.prototype.reloadItems.call(this)},c.prototype._itemize=function(){for(var e=t.prototype._itemize.apply(this,arguments),i=0,o=e.length;o>i;i++){var n=e[i];n.id=this.itemGUID++}return this._updateItemsSortData(e),e},c.prototype._initLayoutMode=function(t){var i=h.modes[t],o=this.options[t]||{};this.options[t]=i.options?e(i.options,o):o,this.modes[t]=new i(this)},c.prototype.layout=function(){return!this._isLayoutInited&&this.options.isInitLayout?(this.arrange(),void 0):(this._layout(),void 0)},c.prototype._layout=function(){var t=this._getIsInstant();this._resetLayout(),this._manageStamps(),this.layoutItems(this.filteredItems,t),this._isLayoutInited=!0},c.prototype.arrange=function(t){this.option(t),this._getIsInstant(),this.filteredItems=this._filter(this.items),this._sort(),this._layout()},c.prototype._init=c.prototype.arrange,c.prototype._getIsInstant=function(){var t=void 0!==this.options.isLayoutInstant?this.options.isLayoutInstant:!this._isLayoutInited;return this._isInstant=t,t},c.prototype._filter=function(t){function e(){f.reveal(n),f.hide(r)}var i=this.options.filter;i=i||"*";for(var o=[],n=[],r=[],s=this._getFilterTest(i),a=0,u=t.length;u>a;a++){var p=t[a];if(!p.isIgnored){var h=s(p);h&&o.push(p),h&&p.isHidden?n.push(p):h||p.isHidden||r.push(p)}}var f=this;return this._isInstant?this._noTransition(e):e(),o},c.prototype._getFilterTest=function(t){return s&&this.options.isJQueryFiltering?function(e){return s(e.element).is(t)}:"function"==typeof t?function(e){return t(e.element)}:function(e){return r(e.element,t)}},c.prototype.updateSortData=function(t){this._getSorters(),t=o(t);var e=this.getItems(t);e=e.length?e:this.items,this._updateItemsSortData(e) },c.prototype._getSorters=function(){var t=this.options.getSortData;for(var e in t){var i=t[e];this._sorters[e]=d(i)}},c.prototype._updateItemsSortData=function(t){for(var e=0,i=t.length;i>e;e++){var o=t[e];o.updateSortData()}};var d=function(){function t(t){if("string"!=typeof t)return t;var i=a(t).split(" "),o=i[0],n=o.match(/^\[(.+)\]$/),r=n&&n[1],s=e(r,o),u=c.sortDataParsers[i[1]];return t=u?function(t){return t&&u(s(t))}:function(t){return t&&s(t)}}function e(t,e){var i;return i=t?function(e){return e.getAttribute(t)}:function(t){var i=t.querySelector(e);return i&&p(i)}}return t}();c.sortDataParsers={parseInt:function(t){return parseInt(t,10)},parseFloat:function(t){return parseFloat(t)}},c.prototype._sort=function(){var t=this.options.sortBy;if(t){var e=[].concat.apply(t,this.sortHistory),i=f(e,this.options.sortAscending);this.filteredItems.sort(i),t!==this.sortHistory[0]&&this.sortHistory.unshift(t)}},c.prototype._mode=function(){var t=this.options.layoutMode,e=this.modes[t];if(!e)throw Error("No layout mode: "+t);return e.options=this.options[t],e},c.prototype._resetLayout=function(){t.prototype._resetLayout.call(this),this._mode()._resetLayout()},c.prototype._getItemLayoutPosition=function(t){return this._mode()._getItemLayoutPosition(t)},c.prototype._manageStamp=function(t){this._mode()._manageStamp(t)},c.prototype._getContainerSize=function(){return this._mode()._getContainerSize()},c.prototype.needsResizeLayout=function(){return this._mode().needsResizeLayout()},c.prototype.appended=function(t){var e=this.addItems(t);if(e.length){var i=this._filterRevealAdded(e);this.filteredItems=this.filteredItems.concat(i)}},c.prototype.prepended=function(t){var e=this._itemize(t);if(e.length){var i=this.items.slice(0);this.items=e.concat(i),this._resetLayout(),this._manageStamps();var o=this._filterRevealAdded(e);this.layoutItems(i),this.filteredItems=o.concat(this.filteredItems)}},c.prototype._filterRevealAdded=function(t){var e=this._noTransition(function(){return this._filter(t)});return this.layoutItems(e,!0),this.reveal(e),t},c.prototype.insert=function(t){var e=this.addItems(t);if(e.length){var i,o,n=e.length;for(i=0;n>i;i++)o=e[i],this.element.appendChild(o.element);var r=this._filter(e);for(this._noTransition(function(){this.hide(r)}),i=0;n>i;i++)e[i].isLayoutInstant=!0;for(this.arrange(),i=0;n>i;i++)delete e[i].isLayoutInstant;this.reveal(r)}};var l=c.prototype.remove;return c.prototype.remove=function(t){t=o(t);var e=this.getItems(t);if(l.call(this,t),e&&e.length)for(var i=0,r=e.length;r>i;i++){var s=e[i];n(s,this.filteredItems)}},c.prototype._noTransition=function(t){var e=this.options.transitionDuration;this.options.transitionDuration=0;var i=t.call(this);return this.options.transitionDuration=e,i},c}var s=t.jQuery,a=String.prototype.trim?function(t){return t.trim()}:function(t){return t.replace(/^\s+|\s+$/g,"")},u=document.documentElement,p=u.textContent?function(t){return t.textContent}:function(t){return t.innerText},h=Object.prototype.toString,f=Array.prototype.indexOf?function(t,e){return t.indexOf(e)}:function(t,e){for(var i=0,o=t.length;o>i;i++)if(t[i]===e)return i;return-1};"function"==typeof define&&define.amd?define(["outlayer/outlayer","get-size/get-size","matches-selector/matches-selector","isotope/js/item","isotope/js/layout-mode","isotope/js/layout-modes/masonry","isotope/js/layout-modes/fit-rows","isotope/js/layout-modes/vertical"],r):t.Isotope=r(t.Outlayer,t.getSize,t.matchesSelector,t.Isotope.Item,t.Isotope.LayoutMode)}(window);PK<\&]zz"assets/lib/bower/skrollr/README.mdnu[[![Build Status](https://secure.travis-ci.org/Prinzhorn/skrollr.png)](http://travis-ci.org/Prinzhorn/skrollr) skrollr 0.6.30 ============== Stand-alone **parallax scrolling** JavaScript library for **mobile (Android, iOS, etc.) and desktop** in about 12k minified. Designer friendly. No JavaScript skills needed. Just plain CSS and HTML. _Actually, skrollr is much more than "just" **parallax scrolling**. It's a full-fledged scrolling animation library. In fact, you can use it and still have no parallax scrolling at all. But I wanted to sound hip and use some buzz-words. By the way, skrollr leverages HTML5 and CSS3 ;-)_ Resources ===== Plugins ----- ### Official * [skrollr-menu](https://github.com/Prinzhorn/skrollr-menu) - Hash navigation * [skrollr-ie](https://github.com/Prinzhorn/skrollr-ie) - IE < 9 CSS fixes * [skrollr-stylesheets](https://github.com/Prinzhorn/skrollr-stylesheets) - Keyframes inside CSS files ### Third party * [skrollr-colors](https://github.com/FezVrasta/skrollr-colors) - Mix and match hex, rgb and hsl colors. * [skrollr-decks](https://github.com/TrySound/skrollr-decks) - Fullpage presentation decks. In the wild ----- Check out the [wiki page](https://github.com/Prinzhorn/skrollr/wiki/In-the-wild) for websites using skrollr and feel free to add your own website :). You can also shamelessly add yourself to the list [here](https://github.com/Prinzhorn/skrollr/wiki/Agencies-and-freelancers) if you are offering paid skrollr support. Further resources (tutorials etc.) ----- Moved to the [wiki](https://github.com/Prinzhorn/skrollr/wiki/Resources). Documentation ===== First of all: look at the [examples and read the source ;-)](https://github.com/Prinzhorn/skrollr/tree/master/examples). This might give you a feeling of how stuff works and you can see how some patterns can be implemented. Abstract ------ skrollr allows you to animate any CSS property of any element depending on the horizontal scrollbar position. All you need to do is define key frames for each element at certain points in top scroll offset. Other libraries require you to write JavaScript in order to define your animations. This introduces two main problems: * Animation and element are not at one place. In order to find out if any animations are defined for a given element, you have to scroll through many (sometimes thousands) of lines of JavaScript. * You have to learn a new syntax which is often very verbose and limited at the same time. With skrollr, you put the definition of your key frames right where they belong (to the element) using a syntax you already know (plain CSS). If you would rather have the keyframes inside a separate file, take a look at [skrollr-stylesheets](https://github.com/Prinzhorn/skrollr-stylesheets). If you prefer to use JavaScript to define your animations make sure to take a look at [ScrollMagic](https://github.com/janpaepke/ScrollMagic). It depends on both jQuery and the Greensock Animation Platform (GSAP) and gives you full control over every detail of your animations. Let's get serious ------ First of all you want to include the `skrollr.min.js` file at the bottom of your document (right before the closing ``) and then call `skrollr.init()`. Or you can place it inside the `` if you want to, but make sure to call `init()` once the document has been loaded (e.g. jQuery's `ready` event or even `window.onload`). ```html ``` If you are using require.js to structure your project, you can use skrollr as a module as well. ```javascript require(['skrollr'], function(skrollr){ var s = skrollr.init(); }); ``` If you're familiar with CSS, you already know the `style` attribute. In order to create an animation you would need several, at least two, of them. That's what skrollr does. You use the HTML5 `data-` attributes to define multiple sets of styles (we call each of them **keyframe**) and skrollr interpolates between them. #### Let's change the background-color of a `div` starting at `#00f` when the scrollbar is at the top and ending with `#f00` when the user scrolled 500 pixels down ```html
WOOOT
``` [View in browser](http://prinzhorn.github.io/skrollr/examples/docu/1.html) ##### Lessons learned * Skrollr ensures that you can actually scroll down 500 pixels or more, even if there's not enough content. You can suppress this by using the `forceHeight` option. * You can't use `#00f` or `#0000ff`. You need to use `rgb` or `hsl` and explicitly decide which color space you want because they result in different animations (HSL is much cooler most of the time). Don't worry, the IE plugin teaches IE < 9 to display `rgb` and `hsl` correctly. #### Now let's do a barrel roll at the same time ```html
WOOOT
``` [View in browser](http://prinzhorn.github.io/skrollr/examples/docu/2.html) ##### Lessons learned * Skrollr handles all these nasty CSS prefixes for you. Just -moz-relax and get yourself a cup of -webkit-coffee. #### Now let the rotation bounce like it were a hip-hop video ```html
WOOOT
``` [View in browser](http://prinzhorn.github.io/skrollr/examples/docu/3.html) #### Lessons learned * Skrollr allows non-linear animations. The so called *easing functions* can be used per-property by putting them in square brackets behind the property. There's a built-in list of easing functions (see below in the [JavaScript](#javascript) section) and you can use your own functions by using the `easings` options. Now you may have noticed that using `500` as a keyframe position is kind of random and the look depends on your browser size. #### Let's have the animation end when the top of the element reaches the top of the viewport (element leaves the viewport) ```html
WOOOT
``` [View in browser](http://prinzhorn.github.io/skrollr/examples/docu/4.html) ##### Lessons learned * Skrollr keyframes can either be [absolute](#absolute-mode-or-document-mode) or [relative](#relative-mode-or-viewport-mode). That's the end of this short intro. The following sections will explain some more things in detail. If you're not a fan of `data-attributes` or if you're planning a big website where you want a better and more flexible structure, take a look at [skrollr-stylesheets](https://github.com/Prinzhorn/skrollr-stylesheets). Mobile support ----- Starting with version 0.5.0 skrollr officially supports mobile browsers including Android and iOS. Furthermore, mobile support has been rewritten from scratch for skrollr 0.6.0. ### The Problem with mobile and the solution (If you're not interested in the details, just scroll down a bit to see what you need to do for mobile support.) Some words on why this is an important milestone and why others failed: Mobile browsers try to save battery wherever they can. That's why mobile browsers delay the execution of JavaScript while you are scrolling. iOS in particular does this very aggressively and completely stops JavaScript. In short, that's the reason why many scrolling libraries either don't work on mobile devices or they come with their own scrollbar which is a usability nightmare on desktop. It was an important requirement while I developed skrollr that I don't force you to scroll the way I want it. skrollr on desktop uses a native scrollbar and you can scroll the way you want to (keyboard, mouse, etc.). You just told me it doesn't work on mobile, but why does it? The answer is simple. When using skrollr on mobile you don't actually scroll. When detecting a mobile browser, skrollr disables native scrolling and instead listens for touch events and moves the content (more specific the `#skrollr-body` element) using CSS transforms. ### What you need in order to support mobile browsers Starting with skrollr 0.6.0 there's just one thing you need to do: Include an element on your page with the id `skrollr-body`. That's the element we move in order to fake scrolling. The only case where you don't need a `#skrollr-body` is when using `position:fixed` exclusively. In fact, the skrollr website doesn't include a `#skrollr-body` element. If you need both fixed and non-fixed (i.e. static) elements, put the static ones inside the `#skrollr-body` element. Or to put it differently: On mobile the `skrollr-body` element is moved using CSS transforms. You can't have `position:fixed` or `background-attachment:fixed` inside elements which use CSS transforms as per CSS spec (http://meyerweb.com/eric/thoughts/2011/09/12/un-fixing-fixed-elements-with-css-transforms/). That's why those elements need to be **outside** of the `skrollr-body` element. The `skrollr-body` element might be configured within the [init-options](#skrollrinitoptions). AMD --- Starting with `0.6.22` there's experimental AMD support. Please note that only skrollr core has AMD support so far. We will update the plugins in the future. ```js require(['skrollr'], function(skrollr){ skrollr.init(); }); ``` Absolute vs relative mode ----- Being only able to define key frames in absolute values is simply insufficient for some cases. For example, if you don't know exactly where an element will be in the document. That's why there are two modes for key frames, namely `absolute` and `relative` mode. ### absolute mode (or document mode) The key frames are defined as absolute values describing how much the **document** has been scrolled down. The syntax is `data-[offset]-[anchor]`, where `offset` can be any integer (0 is default) and `anchor` can be either `start` (default) or `end`. Either `offset` or `anchor` can be omitted in some situations. Here are some examples of key frames and their meaning. * `data-0` = `data-start` = `data-0-start`: When the scroll top is 0. * `data-100` = `data-100-start`: When the scroll top is 100. * `data--100` = `data--100-start`: When the scroll top is -100 (sounds like nonsense, but keep in mind that interpolation will be relative to this point). * `data-end` = `data-0-end`: When offset is 0, but counting from the bottom of the document instead of from the top. In short: when you reach the bottom of the page. * `data-100-end`: 100px before we reach the bottom. * `data--100-end`: 100px after we reach the bottom (again, it's up to you whether you need it). ### relative mode (or viewport mode) Instead of defining key frames relative to the **document** (i.e. absolute), we are able to define them depending on the position of any element in relation to the **viewport**. The syntax is `data-[offset]-(viewport-anchor)-[element-anchor]`, where `offset` can again be any integer and defaults to 0. Both `viewport-anchor` (mandatory) and `element-anchor` (optional) can be one of `top`, `center` or `bottom`. If `element-anchor` is omitted, the value of `viewport-anchor` will be taken (just like with background-position). Here are some examples of key frames and their meaning. * `data-top` = `data-0-top` = `data-top-top` = `data-0-top-top`: When the element's top is aligned with the top of the viewport. * `data-100-top` = `data-100-top-top`: When the element's top is 100px above the top of the viewport. * `data--100-top` = `data--100-top-top`: When the element's top is 100px below the top of the viewport. * `data-top-bottom `= `data-0-top-bottom`: When the bottom of the element is at the top of the viewport (it's just not visible). * `data-center-center` = `data-0-center-center`: When the element is at the center of the viewport. * `data-bottom-center` = `data-0-bottom-center`: When the element's center is at the bottom of the viewport, thus the upper half of the element is visible. By default the keyframes are triggered by the position of the element where the keyframes are described. However there are times when the position of a second element should trigger the first element's keyframes. The `data-anchor-target` attribute can be used in these cases. The `data-anchor-target` attribute accepts any CSS selector and the position of the first element on the page matching the selector will be used to trigger keyframes on the element where the attribute is defined. `data-anchor-target` requires IE 8 or greater. Examples: `
` will have it's keyframes tiggered by the position of the `#foo element`. Any CSS selector can be used, i.e `data-anchor-target=".bar:not(.bacon) ~ span > a[href]"` **Note**: If you need to support IE 7, then you may only use IDs as `anchor-target`s, i.e. `#foo`. The IE plugin maps `querySelector` to `getElementById`. Here's an infographic for better understanding of anchors (click to open PDF): [![Anchors Guide](https://raw.github.com/Prinzhorn/skrollr/master/guide/anchor-position-guide.png)](https://raw.github.com/Prinzhorn/skrollr/master/guide/anchor-position-guide.pdf) **Important**: All those values will be calculated up-front and transformed to `absolute` mode. So if either the element's box height changes (height, padding, border) or the elements position within the document, you probably need to call `refresh()` (see documentation in JavaScript section below). **Window resizing is handled by skrollr.** Percentage offsets ------------------ All offsets shown above are given in absolute pixel values, e.g. `data-300` for `300px` from the top or `data-13-top-bottom` for a `13px` offset to the `top-bottom` anchor. As of skrollr `0.6.13` you can also have offsets as percentages of the viewport by appending a `p` to the number. For example `data-75p` for when you scrolled down `75%` of the viewport or `data-10p-center` to have a `10%` offset from the `center` anchor. Hash navigation ----- Check out the [skrollr-menu](https://github.com/Prinzhorn/skrollr-menu) plugin. Working with constants ----- I was lying to you. The syntax for absolute mode is not `data-[offset]-[anchor]` and for relative mode it's not `data-[offset]-(viewport-anchor)-[element-anchor]`. In both cases, `offset` can be preceded by a constant which can be passed to the `init` method. The name of the constant needs to be preceded with an underscore. Example: ```js skrollr.init({ constants: { foobar: 1337 } }); ``` ```html
``` Valid characters for a constant are `[a-z0-9_]`. Dynamic constants ----------------- Starting with skrollr `0.6.19` the word "constants" doesn't quite fit anymore, but who cares. You can now use functions and percentages as constants. They are automatically evaluated when the window is resized or if you call `refresh`. ```js skrollr.init({ constants: { foo: function() { //Note: you can access the skrollr instance with `this` for things like `this.relativeToAbsolute` return Math.random() * 100;//trolololol }, vh: '100p' } }); ``` CSS classes ----- skrollr will add a `skrollr` class to the `HTML` element when calling `init` and will remove a `no-skrollr` class if present. Additionally, it will add a `skrollr-desktop` or `skrollr-mobile` class depending on which it detects. This allows fallback CSS rules to create a good user experience on unsupported devices or when JavaScript or skrollr are disabled. All elements under skrollr's control (elements with appropriate data-attributes) will get the `skrollable` class. In addition, we add either the `skrollable-before`, `skrollable-between` **or** `skrollable-after` class, depending on whether the current scroll position is before, between or after the first/last (smallest/largest) keyframe of an element. Animating attributes -------------------- Starting with skrollr 0.6.24 you can also animate attribute and not just style properties. This is especially a big thing because in the SVG world many properties are implemented as attributes and not in CSS. Animating an attribute couldn't be simplier, just prefix the property with an `@` symbol! ```html ``` Note: as always, skrollr doesn't do any magic. It doesn't understand what a polygon or points are. It's only interpolating numbers, that's it. So make sure you have the same number of numbers in your keyframes (8 in this case). Filling missing values ----- Imagine the following animation ```html
``` One could expect `left` to have a value of `25%` at keyframe `200`. That is **not** the case. By design, skrollr only interpolates values between key frames which are direct **neighbors**. What actually happens is that skrollr internally fills out all holes once from left and then from right. So the above is equivalent to ```html
``` Preventing interpolation ----- The reason why skrollr is so lightweight and powerful is because it literally interpolates **every** number it can find. If you want to prevent some side effect, you can suppress interpolation for a specific value by prepending an exclamation point. Example: ```html
``` **Note:** The values for both keyframes (if they contain a number) need to be prefixed if you want to avoid skrollr throwing an exception at you! Limitations ----- There are some limitations of skrollr you should be aware of. * All numeric values have to have the same unit, even `0` needs a unit. It's not possible to animate from `5%` to `100px`. skrollr won't complain, but results are undefined. * Animations between values which are composed of multiple numeric values like `margin:0 0 0 0;` are only possible for the same number of values. `margin:0px 0px 0px 0px;` to `margin:0px 100px 50px 3px;` is fine, but not `margin:10px;` to `margin:5px 10px;`. * Animations between CSS transforms only work when they use the same functions in same order. From `rotate(0deg) scale(1)` to `rotate(1000deg) scale(5)` is fine. * Color animations don't support named values like "red" or hex values like "#ff0000". Instead, you have to use `rgb()`, `rgba()`, `hsl()` and `hsla()`. Don't worry, there's a skrollr plugin for IE < 9 to support `hsl()` (without "a"!) and to fall rgba back to rgb. * Color animations only work for same color functions. `hsl()` to `hsl()` or `hsla()` is fine, but not `rgb()` to `hsl()`. Which makes sense, because animating from the same colors in rgb space and in hsl space results in different animations (hsl gives you the nice rainbow stuff). But feel free to send in a pull request to fix any of them. Just keep in mind that keeping skrollr as lightweight as possible has high priority. JavaScript ==== On the JavaScript part there's not much to do (you can, if you want to!). So if you only know CSS and HTML, perfect. skrollr.init([options]) ----- All there is to do is to call `skrollr.init([options]);` which returns an instance of the singleton skrollr class. Subsequent calls to `init()` will just return the same skrollr instance again. Possible options for `init()` are ### smoothScrolling=true Smooth scrolling smoothens your animations. When you scroll down 50 pixels, the animations will transition instead of jumping to the new position. The global setting can be overridden per element by setting `data-smooth-scrolling` to `on` or `off`. ### smoothScrollingDuration=200 The number of milliseconds the animations run after the scroll position changed the last time. ### constants={} An object containing integers as values. The keys can contain `[a-z0-9_]`. They *do not* need a leading underscore. Example: `data-_myconst-200` and `skrollr.init({constants: {myconst: 300}})` result in `data-500`. ### scale=1 By default, skrollr uses the largest key frame and makes document height + viewport height this high, thus the max possible scroll top offset. If your animation runs too fast or too slow, just adjust the scale value. `scale` only affects keyframes in absolute mode. When `forceHeight` is set to false, `scale` is ignored. `scale` affects `constants` as well. `scale` does only affect key frames in absolute mode, e.g. `data-500` but not `data-top`. ###forceHeight=true `true`: Make sure the document is high enough that all key frames fit inside. Example: You use `data-1000`, but the content only makes the document 500px high. skrollr will ensure that you can scroll down the whole 1000px. Or if you use relative mode, e.g. `data-top-bottom`, skrollr will make sure the bottom of the element can actually reach the top of the viewport. `false`: Don't manipulate the document and just keep the natural scrollbar. ###mobileCheck=function() {...} This option allows you to pass a function to skrollr overwriting the check for mobile devices. The function should return `true` when mobile scrolling should be used and `false` if not. The default looks like this ```js function() { return (/Android|iPhone|iPad|iPod|BlackBerry/i).test(navigator.userAgent || navigator.vendor || window.opera); } ``` ### mobileDeceleration=0.004 The amount of deceleration for momentum scrolling on mobile devices. This options tells skrollr how fast or slow you want the scrolling to stop after the user lifted his finger. Set it to `1` to disable momentum scrolling. ### skrollrBody='skrollr-body' This option allows you to override the default id-selector used for supporting mobile browsers. It might come in handy when the element in question already has a assigned id or if you would like to define more then one skrollrBody depending on preceding JavaScript-logic. ### edgeStrategy='set' This option specifies how to handle animations when the scroll position is outside the range on the keyframes (i.e. before the first or after the last keyframe). One of three options are possible * `set` _(default)_: When before/after the first/last keyframe, apply the styles of the first/last keyframe to the element. * `ease`: Same as set, but the values will be transformed using the given easing function. * `reset`: When before/after the first/last keyframe, apply the styles which the element had before skrollr did anything. This means resetting the class attribute as well as removing all styles which have been applied to the `style` property. This means the element won't have any `skrollable-*` CSS classes. Example: Given the following element with two keyframes ```html
``` and the following easing function which always returns `0.5` (I know it's pointless, but it's just an example. A real world example would be an easing function that represents a curve and starts somewhere between `0` and `1`, but not at `1`) ```js function(p) { return 0.5; } ``` and imagine the scrollbar is at `237`, which is below the first keyframe which is at `1000`. * `set` will result in `
` which is plain `data-1000`. * `ease` will result in `
` which is `0.5 * data-1000`. * `reset` will result in `
` which is what the element originally had. Note how `top` is missing. ### beforerender A listener function that gets called each time right before we render everything. The function will be passed an object with the following properties: ```js { curTop: 10, //the current scroll top offset lastTop: 0, //the top value of last time maxTop: 100, //the max value you can scroll to. curTop/maxTop will give you the current progress. direction: 'down' //either up or down } ``` Returning `false` will prevent rendering. ### render A listener function that gets called right after we finished rendering everything. The function will be passed with the same parameters as `beforerender`. Example ```js skrollr.init({ render: function(data) { //Log the current scroll position. console.log(data.curTop); } }); ``` ### keyframe **Experimental** In order to receive `keyframe` events from an element, add the `data-emit-events` attribute to the element. The keyframe function will be called with three arguments 1. The `element` that passed the keyframe. 2. The `name` of the keyframe, camel-cased (see example). 3. The `direction` the user is scrolling. Example: ```html
Some content
``` ```js skrollr.init({ keyframe: function(element, name, direction) { //name will be one of data500, dataTopBottom, data_offsetCenter } }); ``` Note: this is experimental, expect the API to change! Originally I wanted to emit the events right on the element, so you could do this ```js //Wouldn't this be nice? document.querySelector('#foo').addEventListener('skrollr.dataTopBottom.up', function() { //#foo just passed the data-top-bottom keyframe while scrolling up }, false) ``` but IE. ### easing An object defining new easing functions or overwriting existing ones. Easing functions get just one argument, which is a value between 0 and 1 (the percentage of how much of the animation is done). The function should return a value between 0 and 1 as well, but for some easings a value less than 0 or greater than 1 is just fine. An easing function basically transforms the timeline for an animation. When the animation should be 50% done, you can transform it to be 90% done or whatever your function does. Example: ```js skrollr.init({ easing: { //This easing will sure drive you crazy wtf: Math.random, inverted: function(p) { return 1 - p; } } }); ``` You can now use the easing functions like any other. skrollr ships with some built in functions: * linear: The default. Doesn't need to be specified. * quadratic: To the power of two. So 50% looks like 25%. * cubic: To the power of three. So 50% looks like 12.5% * begin/end: They always return 0 or 1 respectively. No animation. * swing: Slow at the beginning and accelerates at the end. So 25% -> 14.6%, 50% -> 50%, 75% -> 85.3% * sqrt: Square root. Starts fast, slows down at the end. * outCubic * bounce: Bounces like a ball. See https://www.desmos.com/calculator/tbr20s8vd2 for a graphical representation. **Custom easing** * Use [this](http://www.timotheegroleau.com/Flash/experiments/easing_function_generator.htm) generator * Insert the given polynomial coeficients instead of t, t2, t3, t4 and t5 ``` t5*(p*p*p*p*p) + t4*(p*p*p*p) + t3*(p*p*p) + t2*(p*p) + t*p ``` Example shown with the values for easeOutElasticBig ``` easeOutElasticBig: function(p) { return 56*(p*p*p*p*p) - 175*(p*p*p*p) + 200*(p*p*p) - 100*(p*p) + 20*p; } ``` skrollr.get() ----- Returns the skrollr instance if `init()` has been called before or `undefined`. Public API ----- Calling `init()` returns an instance of skrollr which exposes a public api. ### refresh([elements]) Reparses all given `elements`. You can pass a single element or an array-like element (Array, NodeList or jQuery object) Useful when * Elements in `relative` mode change and need to be updated. * Data-attributes are manipulated dynamically. * New elements are added to the DOM and should be controlled by skrollr. When no `elements` are given, all elements in the document will be parsed again. In fact, when calling `skrollr.init()` skrollr uses `refresh()` without parameters internally. Time consuming operations, should not be called on every rendering. ### relativeToAbsolute(element, viewportAnchor, elementAnchor) Returns an integer which represents the absolute scroll position which correlates to the relative anchor. `element` must be a DOM element. `viewportAnchor` and `elementAnchor` must be one of `top`, `center` or `bottom` Example: ```js var offset = s.relativeToAbsolute(document.getElementById('foo'), 'top', 'bottom'); //offset contains the scroll position at which #foo's bottom is at the top of the viewport. //If you now use setScrollTop(offset) or animateTo(offset) #foo's bottom will be perfectly aligned with the top of the viewport. Yay. ``` ### getScrollTop() Returns the current scroll offset in pixels. Normalizes different browser quirks and handles mobile scrolling. ### getMaxScrollTop() Returns the number of pixels that can be scrolled down in total. If `forceHeight` is true, that's usually the largest keyframe. Otherwise it's the height of the document minus the viewport height. ### setScrollTop(top[, force = false]) Sets the top offset using `window.scrollTo(0, top)` on desktop or updating the internal state in case of mobile scrolling. When `force` is set to `true`, skrollr will jump to the new position without any kind of transition. By default, the global `smoothScrolling` setting applies. ### isMobile() Returns if skrollr runs in mobile mode (see also `mobileCheck` option). ### animateTo(top[, options]) Animates the scroll position from current position to `top`. Possible `options` are #### duration How long the animation should run in milliseconds. The default is `1000` or one second. #### easing The name of an easing function. The same functions can be used as for property animations. Default is `linear` . #### done A function to be called after the animation finished. When you pass a `top` value, which is the same as the current, then the function will be called immediately. The function gets a boolean argument `interrupted` which indicates if the animation was interrupted by `stopAnimateTo` or finished to the end. ### stopAnimateTo() Stops the animation and calls the `done` callback passing `true` as `interrupted` arguments. ### isAnimatingTo() Returns if an animation caused by animateTo is running. ### on(name, fn) Set a listener function for one of the events described in the options section (beforerender, render, keyframe). Only one listener can be attached at a given time. This method overwrites the current listener, if any. ### off(name) Removes the listener for the given event. ### destroy() Destroys skrollr. All `class` and `style` attributes will be set to the values they had before. Changelog ===== See [HISTORY.md](https://github.com/Prinzhorn/skrollr/blob/master/HISTORY.md). PK<\$JG1G1,assets/lib/bower/skrollr/dist/skrollr.min.jsnu[/*! skrollr 0.6.30 (2015-06-19) | Alexander Prinzhorn - https://github.com/Prinzhorn/skrollr | Free to use under terms of MIT license */ !function(a,b,c){"use strict";function d(c){if(e=b.documentElement,f=b.body,T(),ha=this,c=c||{},ma=c.constants||{},c.easing)for(var d in c.easing)W[d]=c.easing[d];ta=c.edgeStrategy||"set",ka={beforerender:c.beforerender,render:c.render,keyframe:c.keyframe},la=c.forceHeight!==!1,la&&(Ka=c.scale||1),na=c.mobileDeceleration||y,pa=c.smoothScrolling!==!1,qa=c.smoothScrollingDuration||A,ra={targetTop:ha.getScrollTop()},Sa=(c.mobileCheck||function(){return/Android|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent||navigator.vendor||a.opera)})(),Sa?(ja=b.getElementById(c.skrollrBody||z),ja&&ga(),X(),Ea(e,[s,v],[t])):Ea(e,[s,u],[t]),ha.refresh(),wa(a,"resize orientationchange",function(){var a=e.clientWidth,b=e.clientHeight;(b!==Pa||a!==Oa)&&(Pa=b,Oa=a,Qa=!0)});var g=U();return function h(){$(),va=g(h)}(),ha}var e,f,g={get:function(){return ha},init:function(a){return ha||new d(a)},VERSION:"0.6.29"},h=Object.prototype.hasOwnProperty,i=a.Math,j=a.getComputedStyle,k="touchstart",l="touchmove",m="touchcancel",n="touchend",o="skrollable",p=o+"-before",q=o+"-between",r=o+"-after",s="skrollr",t="no-"+s,u=s+"-desktop",v=s+"-mobile",w="linear",x=1e3,y=.004,z="skrollr-body",A=200,B="start",C="end",D="center",E="bottom",F="___skrollable_id",G=/^(?:input|textarea|button|select)$/i,H=/^\s+|\s+$/g,I=/^data(?:-(_\w+))?(?:-?(-?\d*\.?\d+p?))?(?:-?(start|end|top|center|bottom))?(?:-?(top|center|bottom))?$/,J=/\s*(@?[\w\-\[\]]+)\s*:\s*(.+?)\s*(?:;|$)/gi,K=/^(@?[a-z\-]+)\[(\w+)\]$/,L=/-([a-z0-9_])/g,M=function(a,b){return b.toUpperCase()},N=/[\-+]?[\d]*\.?[\d]+/g,O=/\{\?\}/g,P=/rgba?\(\s*-?\d+\s*,\s*-?\d+\s*,\s*-?\d+/g,Q=/[a-z\-]+-gradient/g,R="",S="",T=function(){var a=/^(?:O|Moz|webkit|ms)|(?:-(?:o|moz|webkit|ms)-)/;if(j){var b=j(f,null);for(var c in b)if(R=c.match(a)||+c==c&&b[c].match(a))break;if(!R)return void(R=S="");R=R[0],"-"===R.slice(0,1)?(S=R,R={"-webkit-":"webkit","-moz-":"Moz","-ms-":"ms","-o-":"O"}[R]):S="-"+R.toLowerCase()+"-"}},U=function(){var b=a.requestAnimationFrame||a[R.toLowerCase()+"RequestAnimationFrame"],c=Ha();return(Sa||!b)&&(b=function(b){var d=Ha()-c,e=i.max(0,1e3/60-d);return a.setTimeout(function(){c=Ha(),b()},e)}),b},V=function(){var b=a.cancelAnimationFrame||a[R.toLowerCase()+"CancelAnimationFrame"];return(Sa||!b)&&(b=function(b){return a.clearTimeout(b)}),b},W={begin:function(){return 0},end:function(){return 1},linear:function(a){return a},quadratic:function(a){return a*a},cubic:function(a){return a*a*a},swing:function(a){return-i.cos(a*i.PI)/2+.5},sqrt:function(a){return i.sqrt(a)},outCubic:function(a){return i.pow(a-1,3)+1},bounce:function(a){var b;if(.5083>=a)b=3;else if(.8489>=a)b=9;else if(.96208>=a)b=27;else{if(!(.99981>=a))return 1;b=91}return 1-i.abs(3*i.cos(a*b*1.028)/b)}};d.prototype.refresh=function(a){var d,e,f=!1;for(a===c?(f=!0,ia=[],Ra=0,a=b.getElementsByTagName("*")):a.length===c&&(a=[a]),d=0,e=a.length;e>d;d++){var g=a[d],h=g,i=[],j=pa,k=ta,l=!1;if(f&&F in g&&delete g[F],g.attributes){for(var m=0,n=g.attributes.length;n>m;m++){var p=g.attributes[m];if("data-anchor-target"!==p.name)if("data-smooth-scrolling"!==p.name)if("data-edge-strategy"!==p.name)if("data-emit-events"!==p.name){var q=p.name.match(I);if(null!==q){var r={props:p.value,element:g,eventType:p.name.replace(L,M)};i.push(r);var s=q[1];s&&(r.constant=s.substr(1));var t=q[2];/p$/.test(t)?(r.isPercentage=!0,r.offset=(0|t.slice(0,-1))/100):r.offset=0|t;var u=q[3],v=q[4]||u;u&&u!==B&&u!==C?(r.mode="relative",r.anchors=[u,v]):(r.mode="absolute",u===C?r.isEnd=!0:r.isPercentage||(r.offset=r.offset*Ka))}}else l=!0;else k=p.value;else j="off"!==p.value;else if(h=b.querySelector(p.value),null===h)throw'Unable to find anchor target "'+p.value+'"'}if(i.length){var w,x,y;!f&&F in g?(y=g[F],w=ia[y].styleAttr,x=ia[y].classAttr):(y=g[F]=Ra++,w=g.style.cssText,x=Da(g)),ia[y]={element:g,styleAttr:w,classAttr:x,anchorTarget:h,keyFrames:i,smoothScrolling:j,edgeStrategy:k,emitEvents:l,lastFrameIndex:-1},Ea(g,[o],[])}}}for(Aa(),d=0,e=a.length;e>d;d++){var z=ia[a[d][F]];z!==c&&(_(z),ba(z))}return ha},d.prototype.relativeToAbsolute=function(a,b,c){var d=e.clientHeight,f=a.getBoundingClientRect(),g=f.top,h=f.bottom-f.top;return b===E?g-=d:b===D&&(g-=d/2),c===E?g+=h:c===D&&(g+=h/2),g+=ha.getScrollTop(),g+.5|0},d.prototype.animateTo=function(a,b){b=b||{};var d=Ha(),e=ha.getScrollTop(),f=b.duration===c?x:b.duration;return oa={startTop:e,topDiff:a-e,targetTop:a,duration:f,startTime:d,endTime:d+f,easing:W[b.easing||w],done:b.done},oa.topDiff||(oa.done&&oa.done.call(ha,!1),oa=c),ha},d.prototype.stopAnimateTo=function(){oa&&oa.done&&oa.done.call(ha,!0),oa=c},d.prototype.isAnimatingTo=function(){return!!oa},d.prototype.isMobile=function(){return Sa},d.prototype.setScrollTop=function(b,c){return sa=c===!0,Sa?Ta=i.min(i.max(b,0),Ja):a.scrollTo(0,b),ha},d.prototype.getScrollTop=function(){return Sa?Ta:a.pageYOffset||e.scrollTop||f.scrollTop||0},d.prototype.getMaxScrollTop=function(){return Ja},d.prototype.on=function(a,b){return ka[a]=b,ha},d.prototype.off=function(a){return delete ka[a],ha},d.prototype.destroy=function(){var a=V();a(va),ya(),Ea(e,[t],[s,u,v]);for(var b=0,d=ia.length;d>b;b++)fa(ia[b].element);e.style.overflow=f.style.overflow="",e.style.height=f.style.height="",ja&&g.setStyle(ja,"transform","none"),ha=c,ja=c,ka=c,la=c,Ja=0,Ka=1,ma=c,na=c,La="down",Ma=-1,Oa=0,Pa=0,Qa=!1,oa=c,pa=c,qa=c,ra=c,sa=c,Ra=0,ta=c,Sa=!1,Ta=0,ua=c};var X=function(){var d,g,h,j,o,p,q,r,s,t,u,v;wa(e,[k,l,m,n].join(" "),function(a){var e=a.changedTouches[0];for(j=a.target;3===j.nodeType;)j=j.parentNode;switch(o=e.clientY,p=e.clientX,t=a.timeStamp,G.test(j.tagName)||a.preventDefault(),a.type){case k:d&&d.blur(),ha.stopAnimateTo(),d=j,g=q=o,h=p,s=t;break;case l:G.test(j.tagName)&&b.activeElement!==j&&a.preventDefault(),r=o-q,v=t-u,ha.setScrollTop(Ta-r,!0),q=o,u=t;break;default:case m:case n:var f=g-o,w=h-p,x=w*w+f*f;if(49>x){if(!G.test(d.tagName)){d.focus();var y=b.createEvent("MouseEvents");y.initMouseEvent("click",!0,!0,a.view,1,e.screenX,e.screenY,e.clientX,e.clientY,a.ctrlKey,a.altKey,a.shiftKey,a.metaKey,0,null),d.dispatchEvent(y)}return}d=c;var z=r/v;z=i.max(i.min(z,3),-3);var A=i.abs(z/na),B=z*A+.5*na*A*A,C=ha.getScrollTop()-B,D=0;C>Ja?(D=(Ja-C)/B,C=Ja):0>C&&(D=-C/B,C=0),A*=1-D,ha.animateTo(C+.5|0,{easing:"outCubic",duration:A})}}),a.scrollTo(0,0),e.style.overflow=f.style.overflow="hidden"},Y=function(){var a,b,c,d,f,g,h,j,k,l,m,n=e.clientHeight,o=Ba();for(j=0,k=ia.length;k>j;j++)for(a=ia[j],b=a.element,c=a.anchorTarget,d=a.keyFrames,f=0,g=d.length;g>f;f++)h=d[f],l=h.offset,m=o[h.constant]||0,h.frame=l,h.isPercentage&&(l*=n,h.frame=l),"relative"===h.mode&&(fa(b),h.frame=ha.relativeToAbsolute(c,h.anchors[0],h.anchors[1])-l,fa(b,!0)),h.frame+=m,la&&!h.isEnd&&h.frame>Ja&&(Ja=h.frame);for(Ja=i.max(Ja,Ca()),j=0,k=ia.length;k>j;j++){for(a=ia[j],d=a.keyFrames,f=0,g=d.length;g>f;f++)h=d[f],m=o[h.constant]||0,h.isEnd&&(h.frame=Ja-h.offset+m);a.keyFrames.sort(Ia)}},Z=function(a,b){for(var c=0,d=ia.length;d>c;c++){var e,f,i=ia[c],j=i.element,k=i.smoothScrolling?a:b,l=i.keyFrames,m=l.length,n=l[0],s=l[l.length-1],t=ks.frame,v=t?n:s,w=i.emitEvents,x=i.lastFrameIndex;if(t||u){if(t&&-1===i.edge||u&&1===i.edge)continue;switch(t?(Ea(j,[p],[r,q]),w&&x>-1&&(za(j,n.eventType,La),i.lastFrameIndex=-1)):(Ea(j,[r],[p,q]),w&&m>x&&(za(j,s.eventType,La),i.lastFrameIndex=m)),i.edge=t?-1:1,i.edgeStrategy){case"reset":fa(j);continue;case"ease":k=v.frame;break;default:case"set":var y=v.props;for(e in y)h.call(y,e)&&(f=ea(y[e].value),0===e.indexOf("@")?j.setAttribute(e.substr(1),f):g.setStyle(j,e,f));continue}}else 0!==i.edge&&(Ea(j,[o,q],[p,r]),i.edge=0);for(var z=0;m-1>z;z++)if(k>=l[z].frame&&k<=l[z+1].frame){var A=l[z],B=l[z+1];for(e in A.props)if(h.call(A.props,e)){var C=(k-A.frame)/(B.frame-A.frame);C=A.props[e].easing(C),f=da(A.props[e].value,B.props[e].value,C),f=ea(f),0===e.indexOf("@")?j.setAttribute(e.substr(1),f):g.setStyle(j,e,f)}w&&x!==z&&("down"===La?za(j,A.eventType,La):za(j,B.eventType,La),i.lastFrameIndex=z);break}}},$=function(){Qa&&(Qa=!1,Aa());var a,b,d=ha.getScrollTop(),e=Ha();if(oa)e>=oa.endTime?(d=oa.targetTop,a=oa.done,oa=c):(b=oa.easing((e-oa.startTime)/oa.duration),d=oa.startTop+b*oa.topDiff|0),ha.setScrollTop(d,!0);else if(!sa){var f=ra.targetTop-d;f&&(ra={startTop:Ma,topDiff:d-Ma,targetTop:d,startTime:Na,endTime:Na+qa}),e<=ra.endTime&&(b=W.sqrt((e-ra.startTime)/qa),d=ra.startTop+b*ra.topDiff|0)}if(sa||Ma!==d){La=d>Ma?"down":Ma>d?"up":La,sa=!1;var h={curTop:d,lastTop:Ma,maxTop:Ja,direction:La},i=ka.beforerender&&ka.beforerender.call(ha,h);i!==!1&&(Z(d,ha.getScrollTop()),Sa&&ja&&g.setStyle(ja,"transform","translate(0, "+-Ta+"px) "+ua),Ma=d,ka.render&&ka.render.call(ha,h)),a&&a.call(ha,!1)}Na=e},_=function(a){for(var b=0,c=a.keyFrames.length;c>b;b++){for(var d,e,f,g,h=a.keyFrames[b],i={};null!==(g=J.exec(h.props));)f=g[1],e=g[2],d=f.match(K),null!==d?(f=d[1],d=d[2]):d=w,e=e.indexOf("!")?aa(e):[e.slice(1)],i[f]={value:e,easing:W[d]};h.props=i}},aa=function(a){var b=[];return P.lastIndex=0,a=a.replace(P,function(a){return a.replace(N,function(a){return a/255*100+"%"})}),S&&(Q.lastIndex=0,a=a.replace(Q,function(a){return S+a})),a=a.replace(N,function(a){return b.push(+a),"{?}"}),b.unshift(a),b},ba=function(a){var b,c,d={};for(b=0,c=a.keyFrames.length;c>b;b++)ca(a.keyFrames[b],d);for(d={},b=a.keyFrames.length-1;b>=0;b--)ca(a.keyFrames[b],d)},ca=function(a,b){var c;for(c in b)h.call(a.props,c)||(a.props[c]=b[c]);for(c in a.props)b[c]=a.props[c]},da=function(a,b,c){var d,e=a.length;if(e!==b.length)throw"Can't interpolate between \""+a[0]+'" and "'+b[0]+'"';var f=[a[0]];for(d=1;e>d;d++)f[d]=a[d]+(b[d]-a[d])*c;return f},ea=function(a){var b=1;return O.lastIndex=0,a[0].replace(O,function(){return a[b++]})},fa=function(a,b){a=[].concat(a);for(var c,d,e=0,f=a.length;f>e;e++)d=a[e],c=ia[d[F]],c&&(b?(d.style.cssText=c.dirtyStyleAttr,Ea(d,c.dirtyClassAttr)):(c.dirtyStyleAttr=d.style.cssText,c.dirtyClassAttr=Da(d),d.style.cssText=c.styleAttr,Ea(d,c.classAttr)))},ga=function(){ua="translateZ(0)",g.setStyle(ja,"transform",ua);var a=j(ja),b=a.getPropertyValue("transform"),c=a.getPropertyValue(S+"transform"),d=b&&"none"!==b||c&&"none"!==c;d||(ua="")};g.setStyle=function(a,b,c){var d=a.style;if(b=b.replace(L,M).replace("-",""),"zIndex"===b)isNaN(c)?d[b]=c:d[b]=""+(0|c);else if("float"===b)d.styleFloat=d.cssFloat=c;else try{R&&(d[R+b.slice(0,1).toUpperCase()+b.slice(1)]=c),d[b]=c}catch(e){}};var ha,ia,ja,ka,la,ma,na,oa,pa,qa,ra,sa,ta,ua,va,wa=g.addEvent=function(b,c,d){var e=function(b){return b=b||a.event,b.target||(b.target=b.srcElement),b.preventDefault||(b.preventDefault=function(){b.returnValue=!1,b.defaultPrevented=!0}),d.call(this,b)};c=c.split(" ");for(var f,g=0,h=c.length;h>g;g++)f=c[g],b.addEventListener?b.addEventListener(f,d,!1):b.attachEvent("on"+f,e),Ua.push({element:b,name:f,listener:d})},xa=g.removeEvent=function(a,b,c){b=b.split(" ");for(var d=0,e=b.length;e>d;d++)a.removeEventListener?a.removeEventListener(b[d],c,!1):a.detachEvent("on"+b[d],c)},ya=function(){for(var a,b=0,c=Ua.length;c>b;b++)a=Ua[b],xa(a.element,a.name,a.listener);Ua=[]},za=function(a,b,c){ka.keyframe&&ka.keyframe.call(ha,a,b,c)},Aa=function(){var a=ha.getScrollTop();Ja=0,la&&!Sa&&(f.style.height=""),Y(),la&&!Sa&&(f.style.height=Ja+e.clientHeight+"px"),Sa?ha.setScrollTop(i.min(ha.getScrollTop(),Ja)):ha.setScrollTop(a,!0),sa=!0},Ba=function(){var a,b,c=e.clientHeight,d={};for(a in ma)b=ma[a],"function"==typeof b?b=b.call(ha):/p$/.test(b)&&(b=b.slice(0,-1)/100*c),d[a]=b;return d},Ca=function(){var a,b=0;return ja&&(b=i.max(ja.offsetHeight,ja.scrollHeight)),a=i.max(b,f.scrollHeight,f.offsetHeight,e.scrollHeight,e.offsetHeight,e.clientHeight),a-e.clientHeight},Da=function(b){var c="className";return a.SVGElement&&b instanceof a.SVGElement&&(b=b[c],c="baseVal"),b[c]},Ea=function(b,d,e){var f="className";if(a.SVGElement&&b instanceof a.SVGElement&&(b=b[f],f="baseVal"),e===c)return void(b[f]=d);for(var g=b[f],h=0,i=e.length;i>h;h++)g=Ga(g).replace(Ga(e[h])," ");g=Fa(g);for(var j=0,k=d.length;k>j;j++)-1===Ga(g).indexOf(Ga(d[j]))&&(g+=" "+d[j]);b[f]=Fa(g)},Fa=function(a){return a.replace(H,"")},Ga=function(a){return" "+a+" "},Ha=Date.now||function(){return+new Date},Ia=function(a,b){return a.frame-b.frame},Ja=0,Ka=1,La="down",Ma=-1,Na=Ha(),Oa=0,Pa=0,Qa=!1,Ra=0,Sa=!1,Ta=0,Ua=[];"function"==typeof define&&define.amd?define([],function(){return g}):"undefined"!=typeof module&&module.exports?module.exports=g:a.skrollr=g}(window,document);PK<\l11(assets/lib/bower/lessjs/dist/less.min.jsnu[/*! * Less - Leaner CSS v2.7.1 * http://lesscss.org * * Copyright (c) 2009-2016, Alexis Sellier * Licensed under the Apache-2.0 License. * */ /** * @license Apache-2.0 */ !function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.less=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;d.length>g;g++)e(d[g]);return e}({1:[function(a,b,c){var d=a("./utils").addDataAttr,e=a("./browser");b.exports=function(a,b){d(b,e.currentScript(a)),void 0===b.isFileProtocol&&(b.isFileProtocol=/^(file|(chrome|safari)(-extension)?|resource|qrc|app):/.test(a.location.protocol)),b.async=b.async||!1,b.fileAsync=b.fileAsync||!1,b.poll=b.poll||(b.isFileProtocol?1e3:1500),b.env=b.env||("127.0.0.1"==a.location.hostname||"0.0.0.0"==a.location.hostname||"localhost"==a.location.hostname||a.location.port&&a.location.port.length>0||b.isFileProtocol?"development":"production");var c=/!dumpLineNumbers:(comments|mediaquery|all)/.exec(a.location.hash);c&&(b.dumpLineNumbers=c[1]),void 0===b.useFileCache&&(b.useFileCache=!0),void 0===b.onReady&&(b.onReady=!0)}},{"./browser":3,"./utils":10}],2:[function(a,b,c){function d(a){a.filename&&console.warn(a),e.async||h.removeChild(i)}a("promise/polyfill.js");var e=window.less||{};a("./add-default-options")(window,e);var f=b.exports=a("./index")(window,e);window.less=f;var g,h,i;e.onReady&&(/!watch/.test(window.location.hash)&&f.watch(),e.async||(g="body { display: none !important }",h=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style"),i.type="text/css",i.styleSheet?i.styleSheet.cssText=g:i.appendChild(document.createTextNode(g)),h.appendChild(i)),f.registerStylesheetsImmediately(),f.pageLoadFinished=f.refresh("development"===f.env).then(d,d))},{"./add-default-options":1,"./index":8,"promise/polyfill.js":97}],3:[function(a,b,c){var d=a("./utils");b.exports={createCSS:function(a,b,c){var e=c.href||"",f="less:"+(c.title||d.extractId(e)),g=a.getElementById(f),h=!1,i=a.createElement("style");i.setAttribute("type","text/css"),c.media&&i.setAttribute("media",c.media),i.id=f,i.styleSheet||(i.appendChild(a.createTextNode(b)),h=null!==g&&g.childNodes.length>0&&i.childNodes.length>0&&g.firstChild.nodeValue===i.firstChild.nodeValue);var j=a.getElementsByTagName("head")[0];if(null===g||h===!1){var k=c&&c.nextSibling||null;k?k.parentNode.insertBefore(i,k):j.appendChild(i)}if(g&&h===!1&&g.parentNode.removeChild(g),i.styleSheet)try{i.styleSheet.cssText=b}catch(l){throw new Error("Couldn't reassign styleSheet.cssText.")}},currentScript:function(a){var b=a.document;return b.currentScript||function(){var a=b.getElementsByTagName("script");return a[a.length-1]}()}}},{"./utils":10}],4:[function(a,b,c){b.exports=function(a,b,c){var d=null;if("development"!==b.env)try{d="undefined"==typeof a.localStorage?null:a.localStorage}catch(e){}return{setCSS:function(a,b,e,f){if(d){c.info("saving "+a+" to cache.");try{d.setItem(a,f),d.setItem(a+":timestamp",b),e&&d.setItem(a+":vars",JSON.stringify(e))}catch(g){c.error('failed to save "'+a+'" to local storage for caching.')}}},getCSS:function(a,b,c){var e=d&&d.getItem(a),f=d&&d.getItem(a+":timestamp"),g=d&&d.getItem(a+":vars");return c=c||{},f&&b.lastModified&&new Date(b.lastModified).valueOf()===new Date(f).valueOf()&&(!c&&!g||JSON.stringify(c)===g)?e:void 0}}}},{}],5:[function(a,b,c){var d=a("./utils"),e=a("./browser");b.exports=function(a,b,c){function f(b,f){var g,h,i="less-error-message:"+d.extractId(f||""),j='
  • {content}
  • ',k=a.document.createElement("div"),l=[],m=b.filename||f,n=m.match(/([^\/]+(\?.*)?)$/)[1];k.id=i,k.className="less-error-message",h="

    "+(b.type||"Syntax")+"Error: "+(b.message||"There is an error in your .less file")+'

    in '+n+" ";var o=function(a,b,c){void 0!==a.extract[b]&&l.push(j.replace(/\{line\}/,(parseInt(a.line,10)||0)+(b-1)).replace(/\{class\}/,c).replace(/\{content\}/,a.extract[b]))};b.extract&&(o(b,0,""),o(b,1,"line"),o(b,2,""),h+="on line "+b.line+", column "+(b.column+1)+":

      "+l.join("")+"
    "),b.stack&&(b.extract||c.logLevel>=4)&&(h+="
    Stack Trace
    "+b.stack.split("\n").slice(1).join("
    ")),k.innerHTML=h,e.createCSS(a.document,[".less-error-message ul, .less-error-message li {","list-style-type: none;","margin-right: 15px;","padding: 4px 0;","margin: 0;","}",".less-error-message label {","font-size: 12px;","margin-right: 15px;","padding: 4px 0;","color: #cc7777;","}",".less-error-message pre {","color: #dd6666;","padding: 4px 0;","margin: 0;","display: inline-block;","}",".less-error-message pre.line {","color: #ff0000;","}",".less-error-message h3 {","font-size: 20px;","font-weight: bold;","padding: 15px 0 5px 0;","margin: 0;","}",".less-error-message a {","color: #10a","}",".less-error-message .error {","color: red;","font-weight: bold;","padding-bottom: 2px;","border-bottom: 1px dashed red;","}"].join("\n"),{title:"error-message"}),k.style.cssText=["font-family: Arial, sans-serif","border: 1px solid #e00","background-color: #eee","border-radius: 5px","-webkit-border-radius: 5px","-moz-border-radius: 5px","color: #e00","padding: 15px","margin-bottom: 15px"].join(";"),"development"===c.env&&(g=setInterval(function(){var b=a.document,c=b.body;c&&(b.getElementById(i)?c.replaceChild(k,b.getElementById(i)):c.insertBefore(k,c.firstChild),clearInterval(g))},10))}function g(b){var c=a.document.getElementById("less-error-message:"+d.extractId(b));c&&c.parentNode.removeChild(c)}function h(a){}function i(a){c.errorReporting&&"html"!==c.errorReporting?"console"===c.errorReporting?h(a):"function"==typeof c.errorReporting&&c.errorReporting("remove",a):g(a)}function j(a,d){var e="{line} {content}",f=a.filename||d,g=[],h=(a.type||"Syntax")+"Error: "+(a.message||"There is an error in your .less file")+" in "+f+" ",i=function(a,b,c){void 0!==a.extract[b]&&g.push(e.replace(/\{line\}/,(parseInt(a.line,10)||0)+(b-1)).replace(/\{class\}/,c).replace(/\{content\}/,a.extract[b]))};a.extract&&(i(a,0,""),i(a,1,"line"),i(a,2,""),h+="on line "+a.line+", column "+(a.column+1)+":\n"+g.join("\n")),a.stack&&(a.extract||c.logLevel>=4)&&(h+="\nStack Trace\n"+a.stack),b.logger.error(h)}function k(a,b){c.errorReporting&&"html"!==c.errorReporting?"console"===c.errorReporting?j(a,b):"function"==typeof c.errorReporting&&c.errorReporting("add",a,b):f(a,b)}return{add:k,remove:i}}},{"./browser":3,"./utils":10}],6:[function(a,b,c){b.exports=function(b,c){function d(){if(window.XMLHttpRequest&&!("file:"===window.location.protocol&&"ActiveXObject"in window))return new XMLHttpRequest;try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(a){return c.error("browser doesn't support AJAX."),null}}var e=a("../less/environment/abstract-file-manager.js"),f={},g=function(){};return g.prototype=new e,g.prototype.alwaysMakePathsAbsolute=function(){return!0},g.prototype.join=function(a,b){return a?this.extractUrlParts(b,a).path:b},g.prototype.doXHR=function(a,e,f,g){function h(b,c,d){b.status>=200&&300>b.status?c(b.responseText,b.getResponseHeader("Last-Modified")):"function"==typeof d&&d(b.status,a)}var i=d(),j=b.isFileProtocol?b.fileAsync:!0;"function"==typeof i.overrideMimeType&&i.overrideMimeType("text/css"),c.debug("XHR: Getting '"+a+"'"),i.open("GET",a,j),i.setRequestHeader("Accept",e||"text/x-less, text/css; q=0.9, */*; q=0.5"),i.send(null),b.isFileProtocol&&!b.fileAsync?0===i.status||i.status>=200&&300>i.status?f(i.responseText):g(i.status,a):j?i.onreadystatechange=function(){4==i.readyState&&h(i,f,g)}:h(i,f,g)},g.prototype.supports=function(a,b,c,d){return!0},g.prototype.clearFileCache=function(){f={}},g.prototype.loadFile=function(a,b,c,d,e){b&&!this.isPathAbsolute(a)&&(a=b+a),c=c||{};var g=this.extractUrlParts(a,window.location.href),h=g.url;if(c.useFileCache&&f[h])try{var i=f[h];e(null,{contents:i,filename:h,webInfo:{lastModified:new Date}})}catch(j){e({filename:h,message:"Error loading file "+h+" error was "+j.message})}else this.doXHR(h,c.mime,function(a,b){f[h]=a,e(null,{contents:a,filename:h,webInfo:{lastModified:b}})},function(a,b){e({type:"File",message:"'"+b+"' wasn't found ("+a+")",href:h})})},g}},{"../less/environment/abstract-file-manager.js":15}],7:[function(a,b,c){b.exports=function(){function b(){throw{type:"Runtime",message:"Image size functions are not supported in browser version of less"}}var c=a("./../less/functions/function-registry"),d={"image-size":function(a){return b(this,a),-1},"image-width":function(a){return b(this,a),-1},"image-height":function(a){return b(this,a),-1}};c.addMultiple(d)}},{"./../less/functions/function-registry":22}],8:[function(a,b,c){var d=a("./utils").addDataAttr,e=a("./browser");b.exports=function(b,c){function f(a){return c.postProcessor&&"function"==typeof c.postProcessor&&(a=c.postProcessor.call(a,a)||a),a}function g(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b}function h(a,b){var c=Array.prototype.slice.call(arguments,2);return function(){var d=c.concat(Array.prototype.slice.call(arguments,0));return a.apply(b,d)}}function i(a){for(var b,d=m.getElementsByTagName("style"),e=0;d.length>e;e++)if(b=d[e],b.type.match(t)){var f=g(c);f.modifyVars=a;var i=b.innerHTML||"";f.filename=m.location.href.replace(/#.*$/,""),n.render(i,f,h(function(a,b,c){b?r.add(b,"inline"):(a.type="text/css",a.styleSheet?a.styleSheet.cssText=c.css:a.innerHTML=c.css)},null,b))}}function j(a,b,e,h,i){function j(c){var d=c.contents,g=c.filename,i=c.webInfo,j={currentDirectory:q.getPath(g),filename:g,rootFilename:g,relativeUrls:k.relativeUrls};if(j.entryPath=j.currentDirectory,j.rootpath=k.rootpath||j.currentDirectory,i){i.remaining=h;var l=s.getCSS(g,i,k.modifyVars);if(!e&&l)return i.local=!0,void b(null,l,d,a,i,g)}r.remove(g),k.rootFileInfo=j,n.render(d,k,function(c,e){c?(c.href=g,b(c)):(e.css=f(e.css),s.setCSS(a.href,i.lastModified,k.modifyVars,e.css),b(null,e.css,d,a,i,g))})}var k=g(c);d(k,a),k.mime=a.type,i&&(k.modifyVars=i),q.loadFile(a.href,null,k,o,function(a,c){return a?void b(a):void j(c)})}function k(a,b,c){for(var d=0;n.sheets.length>d;d++)j(n.sheets[d],a,b,n.sheets.length-(d+1),c)}function l(){"development"===n.env&&(n.watchTimer=setInterval(function(){n.watchMode&&(q.clearFileCache(),k(function(a,c,d,f,g){a?r.add(a,a.href||f.href):c&&e.createCSS(b.document,c,f)}))},c.poll))}var m=b.document,n=a("../less")();n.options=c;var o=n.environment,p=a("./file-manager")(c,n.logger),q=new p;o.addFileManager(q),n.FileManager=p,a("./log-listener")(n,c);var r=a("./error-reporting")(b,n,c),s=n.cache=c.cache||a("./cache")(b,c,n.logger);a("./image-size")(n.environment),c.functions&&n.functions.functionRegistry.addMultiple(c.functions);var t=/^text\/(x-)?less$/;return n.watch=function(){return n.watchMode||(n.env="development",l()),this.watchMode=!0,!0},n.unwatch=function(){return clearInterval(n.watchTimer),this.watchMode=!1,!1},n.registerStylesheetsImmediately=function(){var a=m.getElementsByTagName("link");n.sheets=[];for(var b=0;a.length>b;b++)("stylesheet/less"===a[b].rel||a[b].rel.match(/stylesheet/)&&a[b].type.match(t))&&n.sheets.push(a[b])},n.registerStylesheets=function(){return new Promise(function(a,b){n.registerStylesheetsImmediately(),a()})},n.modifyVars=function(a){return n.refresh(!0,a,!1)},n.refresh=function(a,c,d){return(a||d)&&d!==!1&&q.clearFileCache(),new Promise(function(d,f){var g,h,j,l;g=h=new Date,l=n.sheets.length,0===l?(h=new Date,j=h-g,n.logger.info("Less has finished and no sheets were loaded."),d({startTime:g,endTime:h,totalMilliseconds:j,sheets:n.sheets.length})):k(function(a,c,i,k,m){return a?(r.add(a,a.href||k.href),void f(a)):(n.logger.info(m.local?"Loading "+k.href+" from cache.":"Rendered "+k.href+" successfully."),e.createCSS(b.document,c,k),n.logger.info("CSS for "+k.href+" generated in "+(new Date-h)+"ms"),l--,0===l&&(j=new Date-g,n.logger.info("Less has finished. CSS generated in "+j+"ms"),d({startTime:g,endTime:h,totalMilliseconds:j,sheets:n.sheets.length})),void(h=new Date))},a,c),i(c)})},n.refreshStyles=i,n}},{"../less":31,"./browser":3,"./cache":4,"./error-reporting":5,"./file-manager":6,"./image-size":7,"./log-listener":9,"./utils":10}],9:[function(a,b,c){b.exports=function(a,b){var c=4,d=3,e=2,f=1;b.logLevel="undefined"!=typeof b.logLevel?b.logLevel:"development"===b.env?d:f,b.loggers||(b.loggers=[{debug:function(a){b.logLevel>=c&&console.log(a)},info:function(a){b.logLevel>=d&&console.log(a)},warn:function(a){b.logLevel>=e&&console.warn(a)},error:function(a){b.logLevel>=f&&console.error(a)}}]);for(var g=0;b.loggers.length>g;g++)a.logger.addListener(b.loggers[g])}},{}],10:[function(a,b,c){b.exports={extractId:function(a){return a.replace(/^[a-z-]+:\/+?[^\/]+/,"").replace(/[\?\&]livereload=\w+/,"").replace(/^\//,"").replace(/\.[a-zA-Z]+$/,"").replace(/[^\.\w-]+/g,"-").replace(/\./g,":")},addDataAttr:function(a,b){for(var c in b.dataset)if(b.dataset.hasOwnProperty(c))if("env"===c||"dumpLineNumbers"===c||"rootpath"===c||"errorReporting"===c)a[c]=b.dataset[c];else try{a[c]=JSON.parse(b.dataset[c])}catch(d){}}}},{}],11:[function(a,b,c){var d={};b.exports=d;var e=function(a,b,c){if(a)for(var d=0;c.length>d;d++)a.hasOwnProperty(c[d])&&(b[c[d]]=a[c[d]])},f=["paths","relativeUrls","rootpath","strictImports","insecure","dumpLineNumbers","compress","syncImport","chunkInput","mime","useFileCache","processImports","pluginManager"];d.Parse=function(a){e(a,this,f),"string"==typeof this.paths&&(this.paths=[this.paths])};var g=["paths","compress","ieCompat","strictMath","strictUnits","sourceMap","importMultiple","urlArgs","javascriptEnabled","pluginManager","importantScope"];d.Eval=function(a,b){e(a,this,g),"string"==typeof this.paths&&(this.paths=[this.paths]),this.frames=b||[],this.importantScope=this.importantScope||[]},d.Eval.prototype.inParenthesis=function(){this.parensStack||(this.parensStack=[]),this.parensStack.push(!0)},d.Eval.prototype.outOfParenthesis=function(){this.parensStack.pop()},d.Eval.prototype.isMathOn=function(){return this.strictMath?this.parensStack&&this.parensStack.length:!0},d.Eval.prototype.isPathRelative=function(a){return!/^(?:[a-z-]+:|\/|#)/i.test(a)},d.Eval.prototype.normalizePath=function(a){var b,c=a.split("/").reverse();for(a=[];0!==c.length;)switch(b=c.pop()){case".":break;case"..":0===a.length||".."===a[a.length-1]?a.push(b):a.pop();break;default:a.push(b)}return a.join("/")}},{}],12:[function(a,b,c){b.exports={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgrey:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"}},{}],13:[function(a,b,c){b.exports={colors:a("./colors"),unitConversions:a("./unit-conversions")}},{"./colors":12,"./unit-conversions":14}],14:[function(a,b,c){b.exports={length:{m:1,cm:.01,mm:.001,"in":.0254,px:.0254/96,pt:.0254/72,pc:.0254/72*12},duration:{s:1,ms:.001},angle:{rad:1/(2*Math.PI),deg:1/360,grad:.0025,turn:1}}},{}],15:[function(a,b,c){var d=function(){};d.prototype.getPath=function(a){var b=a.lastIndexOf("?");return b>0&&(a=a.slice(0,b)),b=a.lastIndexOf("/"),0>b&&(b=a.lastIndexOf("\\")),0>b?"":a.slice(0,b+1)},d.prototype.tryAppendExtension=function(a,b){return/(\.[a-z]*$)|([\?;].*)$/.test(a)?a:a+b},d.prototype.tryAppendLessExtension=function(a){return this.tryAppendExtension(a,".less")},d.prototype.supportsSync=function(){return!1},d.prototype.alwaysMakePathsAbsolute=function(){return!1},d.prototype.isPathAbsolute=function(a){return/^(?:[a-z-]+:|\/|\\|#)/i.test(a)},d.prototype.join=function(a,b){return a?a+b:b},d.prototype.pathDiff=function(a,b){var c,d,e,f,g=this.extractUrlParts(a),h=this.extractUrlParts(b),i="";if(g.hostPart!==h.hostPart)return"";for(d=Math.max(h.directories.length,g.directories.length),c=0;d>c&&h.directories[c]===g.directories[c];c++);for(f=h.directories.slice(c),e=g.directories.slice(c),c=0;f.length-1>c;c++)i+="../";for(c=0;e.length-1>c;c++)i+=e[c]+"/";return i},d.prototype.extractUrlParts=function(a,b){var c,d,e=/^((?:[a-z-]+:)?\/{2}(?:[^\/\?#]*\/)|([\/\\]))?((?:[^\/\\\?#]*[\/\\])*)([^\/\\\?#]*)([#\?].*)?$/i,f=a.match(e),g={},h=[];if(!f)throw new Error("Could not parse sheet href - '"+a+"'");if(b&&(!f[1]||f[2])){if(d=b.match(e),!d)throw new Error("Could not parse page url - '"+b+"'");f[1]=f[1]||d[1]||"",f[2]||(f[3]=d[3]+f[3])}if(f[3]){for(h=f[3].replace(/\\/g,"/").split("/"),c=0;h.length>c;c++)"."===h[c]&&(h.splice(c,1),c-=1);for(c=0;h.length>c;c++)".."===h[c]&&c>0&&(h.splice(c-1,2),c-=2)}return g.hostPart=f[1],g.directories=h,g.path=(f[1]||"")+h.join("/"),g.fileUrl=g.path+(f[4]||""),g.url=g.fileUrl+(f[5]||""),g},b.exports=d},{}],16:[function(a,b,c){var d=a("../logger"),e=function(a,b){this.fileManagers=b||[],a=a||{};for(var c=["encodeBase64","mimeLookup","charsetLookup","getSourceMapGenerator"],d=[],e=d.concat(c),f=0;e.length>f;f++){var g=e[f],h=a[g];h?this[g]=h.bind(a):d.length>f&&this.warn("missing required function in environment - "+g)}};e.prototype.getFileManager=function(a,b,c,e,f){a||d.warn("getFileManager called with no filename.. Please report this issue. continuing."),null==b&&d.warn("getFileManager called with null directory.. Please report this issue. continuing.");var g=this.fileManagers;c.pluginManager&&(g=[].concat(g).concat(c.pluginManager.getFileManagers()));for(var h=g.length-1;h>=0;h--){var i=g[h];if(i[f?"supportsSync":"supports"](a,b,c,e))return i}return null},e.prototype.addFileManager=function(a){this.fileManagers.push(a)},e.prototype.clearFileManagers=function(){this.fileManagers=[]},b.exports=e},{"../logger":33}],17:[function(a,b,c){function d(a,b,c){var d,f,g,h,i=b.alpha,j=c.alpha,k=[];g=j+i*(1-j);for(var l=0;3>l;l++)d=b.rgb[l]/255,f=c.rgb[l]/255,h=a(d,f),g&&(h=(j*f+i*(d-j*(d+f-h)))/g),k[l]=255*h;return new e(k,g)}var e=a("../tree/color"),f=a("./function-registry"),g={multiply:function(a,b){return a*b},screen:function(a,b){return a+b-a*b},overlay:function(a,b){return a*=2,1>=a?g.multiply(a,b):g.screen(a-1,b)},softlight:function(a,b){var c=1,d=a;return b>.5&&(d=1,c=a>.25?Math.sqrt(a):((16*a-12)*a+4)*a),a-(1-2*b)*d*(c-a)},hardlight:function(a,b){return g.overlay(b,a)},difference:function(a,b){return Math.abs(a-b)},exclusion:function(a,b){return a+b-2*a*b},average:function(a,b){return(a+b)/2},negation:function(a,b){return 1-Math.abs(a+b-1)}};for(var h in g)g.hasOwnProperty(h)&&(d[h]=d.bind(null,g[h]));f.addMultiple(d)},{"../tree/color":50,"./function-registry":22}],18:[function(a,b,c){function d(a){return Math.min(1,Math.max(0,a))}function e(a){return h.hsla(a.h,a.s,a.l,a.a)}function f(a){if(a instanceof i)return parseFloat(a.unit.is("%")?a.value/100:a.value);if("number"==typeof a)return a;throw{type:"Argument",message:"color functions take numbers as parameters"}}function g(a,b){return a instanceof i&&a.unit.is("%")?parseFloat(a.value*b/100):f(a)}var h,i=a("../tree/dimension"),j=a("../tree/color"),k=a("../tree/quoted"),l=a("../tree/anonymous"),m=a("./function-registry");h={rgb:function(a,b,c){return h.rgba(a,b,c,1)},rgba:function(a,b,c,d){var e=[a,b,c].map(function(a){return g(a,255)});return d=f(d),new j(e,d)},hsl:function(a,b,c){return h.hsla(a,b,c,1)},hsla:function(a,b,c,e){function g(a){return a=0>a?a+1:a>1?a-1:a,1>6*a?i+(j-i)*a*6:1>2*a?j:2>3*a?i+(j-i)*(2/3-a)*6:i}var i,j;return a=f(a)%360/360,b=d(f(b)),c=d(f(c)),e=d(f(e)),j=.5>=c?c*(b+1):c+b-c*b,i=2*c-j,h.rgba(255*g(a+1/3),255*g(a),255*g(a-1/3),e)},hsv:function(a,b,c){return h.hsva(a,b,c,1)},hsva:function(a,b,c,d){a=f(a)%360/360*360,b=f(b),c=f(c),d=f(d);var e,g;e=Math.floor(a/60%6),g=a/60-e;var i=[c,c*(1-b),c*(1-g*b),c*(1-(1-g)*b)],j=[[0,3,1],[2,0,1],[1,0,3],[1,2,0],[3,1,0],[0,1,2]];return h.rgba(255*i[j[e][0]],255*i[j[e][1]],255*i[j[e][2]],d)},hue:function(a){return new i(a.toHSL().h)},saturation:function(a){return new i(100*a.toHSL().s,"%")},lightness:function(a){return new i(100*a.toHSL().l,"%")},hsvhue:function(a){return new i(a.toHSV().h)},hsvsaturation:function(a){return new i(100*a.toHSV().s,"%")},hsvvalue:function(a){return new i(100*a.toHSV().v,"%")},red:function(a){return new i(a.rgb[0])},green:function(a){return new i(a.rgb[1])},blue:function(a){return new i(a.rgb[2])},alpha:function(a){return new i(a.toHSL().a)},luma:function(a){return new i(a.luma()*a.alpha*100,"%")},luminance:function(a){var b=.2126*a.rgb[0]/255+.7152*a.rgb[1]/255+.0722*a.rgb[2]/255;return new i(b*a.alpha*100,"%")},saturate:function(a,b,c){if(!a.rgb)return null;var f=a.toHSL();return f.s+="undefined"!=typeof c&&"relative"===c.value?f.s*b.value/100:b.value/100,f.s=d(f.s),e(f)},desaturate:function(a,b,c){var f=a.toHSL();return f.s-="undefined"!=typeof c&&"relative"===c.value?f.s*b.value/100:b.value/100,f.s=d(f.s),e(f)},lighten:function(a,b,c){var f=a.toHSL();return f.l+="undefined"!=typeof c&&"relative"===c.value?f.l*b.value/100:b.value/100,f.l=d(f.l),e(f)},darken:function(a,b,c){var f=a.toHSL();return f.l-="undefined"!=typeof c&&"relative"===c.value?f.l*b.value/100:b.value/100,f.l=d(f.l),e(f)},fadein:function(a,b,c){var f=a.toHSL();return f.a+="undefined"!=typeof c&&"relative"===c.value?f.a*b.value/100:b.value/100,f.a=d(f.a),e(f)},fadeout:function(a,b,c){var f=a.toHSL();return f.a-="undefined"!=typeof c&&"relative"===c.value?f.a*b.value/100:b.value/100,f.a=d(f.a),e(f)},fade:function(a,b){var c=a.toHSL();return c.a=b.value/100,c.a=d(c.a),e(c)},spin:function(a,b){var c=a.toHSL(),d=(c.h+b.value)%360;return c.h=0>d?360+d:d,e(c)},mix:function(a,b,c){a.toHSL&&b.toHSL||(console.log(b.type),console.dir(b)),c||(c=new i(50));var d=c.value/100,e=2*d-1,f=a.toHSL().a-b.toHSL().a,g=((e*f==-1?e:(e+f)/(1+e*f))+1)/2,h=1-g,k=[a.rgb[0]*g+b.rgb[0]*h,a.rgb[1]*g+b.rgb[1]*h,a.rgb[2]*g+b.rgb[2]*h],l=a.alpha*d+b.alpha*(1-d);return new j(k,l)},greyscale:function(a){return h.desaturate(a,new i(100))},contrast:function(a,b,c,d){if(!a.rgb)return null;"undefined"==typeof b&&(b=h.rgba(0,0,0,1)),"undefined"==typeof c&&(c=h.rgba(255,255,255,1));var e,f,g=a.luma(),i=b.luma(),j=c.luma();return e=g>i?(g+.05)/(i+.05):(i+.05)/(g+.05),f=g>j?(g+.05)/(j+.05):(j+.05)/(g+.05),e>f?b:c},argb:function(a){return new l(a.toARGB())},color:function(a){if(a instanceof k&&/^#([a-f0-9]{6}|[a-f0-9]{3})$/i.test(a.value))return new j(a.value.slice(1));if(a instanceof j||(a=j.fromKeyword(a.value)))return a.value=void 0,a;throw{type:"Argument",message:"argument must be a color keyword or 3/6 digit hex e.g. #FFF"}},tint:function(a,b){return h.mix(h.rgb(255,255,255),a,b)},shade:function(a,b){return h.mix(h.rgb(0,0,0),a,b)}},m.addMultiple(h)},{"../tree/anonymous":46,"../tree/color":50,"../tree/dimension":56,"../tree/quoted":73,"./function-registry":22}],19:[function(a,b,c){b.exports=function(b){var c=a("../tree/quoted"),d=a("../tree/url"),e=a("./function-registry"),f=function(a,b){return new d(b,a.index,a.currentFileInfo).eval(a.context)},g=a("../logger");e.add("data-uri",function(a,e){e||(e=a,a=null);var h=a&&a.value,i=e.value,j=this.currentFileInfo,k=j.relativeUrls?j.currentDirectory:j.entryPath,l=i.indexOf("#"),m="";-1!==l&&(m=i.slice(l),i=i.slice(0,l));var n=b.getFileManager(i,k,this.context,b,!0);if(!n)return f(this,e);var o=!1;if(a)o=/;base64$/.test(h);else{if(h=b.mimeLookup(i),"image/svg+xml"===h)o=!1;else{var p=b.charsetLookup(h);o=["US-ASCII","UTF-8"].indexOf(p)<0}o&&(h+=";base64")}var q=n.loadFileSync(i,k,this.context,b);if(!q.contents)return g.warn("Skipped data-uri embedding of "+i+" because file not found"),f(this,e||a);var r=q.contents;if(o&&!b.encodeBase64)return f(this,e);r=o?b.encodeBase64(r):encodeURIComponent(r);var s="data:"+h+","+r+m,t=32768;return s.length>=t&&this.context.ieCompat!==!1?(g.warn("Skipped data-uri embedding of "+i+" because its size ("+s.length+" characters) exceeds IE8-safe "+t+" characters!"),f(this,e||a)):new d(new c('"'+s+'"',s,!1,this.index,this.currentFileInfo),this.index,this.currentFileInfo)})}},{"../logger":33,"../tree/quoted":73,"../tree/url":80,"./function-registry":22}],20:[function(a,b,c){var d=a("../tree/keyword"),e=a("./function-registry"),f={eval:function(){var a=this.value_,b=this.error_;if(b)throw b;return null!=a?a?d.True:d.False:void 0},value:function(a){this.value_=a},error:function(a){this.error_=a},reset:function(){this.value_=this.error_=null}};e.add("default",f.eval.bind(f)),b.exports=f},{"../tree/keyword":65,"./function-registry":22}],21:[function(a,b,c){var d=a("../tree/expression"),e=function(a,b,c,d){this.name=a.toLowerCase(),this.index=c,this.context=b,this.currentFileInfo=d,this.func=b.frames[0].functionRegistry.get(this.name)};e.prototype.isValid=function(){return Boolean(this.func)},e.prototype.call=function(a){return Array.isArray(a)&&(a=a.filter(function(a){return"Comment"!==a.type}).map(function(a){if("Expression"===a.type){var b=a.value.filter(function(a){return"Comment"!==a.type});return 1===b.length?b[0]:new d(b)}return a})),this.func.apply(this,a)},b.exports=e},{"../tree/expression":59}],22:[function(a,b,c){function d(a){return{_data:{},add:function(a,b){a=a.toLowerCase(),this._data.hasOwnProperty(a),this._data[a]=b},addMultiple:function(a){Object.keys(a).forEach(function(b){this.add(b,a[b])}.bind(this))},get:function(b){return this._data[b]||a&&a.get(b)},inherit:function(){return d(this)}}}b.exports=d(null)},{}],23:[function(a,b,c){b.exports=function(b){var c={functionRegistry:a("./function-registry"),functionCaller:a("./function-caller")};return a("./default"),a("./color"),a("./color-blending"),a("./data-uri")(b),a("./math"),a("./number"),a("./string"),a("./svg")(b),a("./types"),c}},{"./color":18,"./color-blending":17,"./data-uri":19,"./default":20,"./function-caller":21,"./function-registry":22,"./math":25,"./number":26,"./string":27,"./svg":28,"./types":29}],24:[function(a,b,c){var d=a("../tree/dimension"),e=function(){};e._math=function(a,b,c){if(!(c instanceof d))throw{type:"Argument",message:"argument must be a number"};return null==b?b=c.unit:c=c.unify(),new d(a(parseFloat(c.value)),b)},b.exports=e},{"../tree/dimension":56}],25:[function(a,b,c){var d=a("./function-registry"),e=a("./math-helper.js"),f={ceil:null,floor:null,sqrt:null,abs:null,tan:"",sin:"",cos:"",atan:"rad",asin:"rad",acos:"rad"};for(var g in f)f.hasOwnProperty(g)&&(f[g]=e._math.bind(null,Math[g],f[g]));f.round=function(a,b){var c="undefined"==typeof b?0:b.value;return e._math(function(a){return a.toFixed(c)},null,a)},d.addMultiple(f)},{"./function-registry":22,"./math-helper.js":24}],26:[function(a,b,c){var d=a("../tree/dimension"),e=a("../tree/anonymous"),f=a("./function-registry"),g=a("./math-helper.js"),h=function(a,b){switch(b=Array.prototype.slice.call(b),b.length){case 0:throw{type:"Argument",message:"one or more arguments required"}}var c,f,g,h,i,j,k,l,m=[],n={};for(c=0;b.length>c;c++)if(g=b[c],g instanceof d)if(h=""===g.unit.toString()&&void 0!==l?new d(g.value,l).unify():g.unify(),j=""===h.unit.toString()&&void 0!==k?k:h.unit.toString(),k=""!==j&&void 0===k||""!==j&&""===m[0].unify().unit.toString()?j:k,l=""!==j&&void 0===l?g.unit.toString():l,f=void 0!==n[""]&&""!==j&&j===k?n[""]:n[j],void 0!==f)i=""===m[f].unit.toString()&&void 0!==l?new d(m[f].value,l).unify():m[f].unify(),(a&&i.value>h.value||!a&&h.value>i.value)&&(m[f]=g);else{if(void 0!==k&&j!==k)throw{type:"Argument",message:"incompatible types"};n[j]=m.length,m.push(g)}else Array.isArray(b[c].value)&&Array.prototype.push.apply(b,Array.prototype.slice.call(b[c].value));return 1==m.length?m[0]:(b=m.map(function(a){return a.toCSS(this.context)}).join(this.context.compress?",":", "),new e((a?"min":"max")+"("+b+")"))};f.addMultiple({min:function(){return h(!0,arguments)},max:function(){return h(!1,arguments)},convert:function(a,b){return a.convertTo(b.value)},pi:function(){return new d(Math.PI)},mod:function(a,b){return new d(a.value%b.value,a.unit)},pow:function(a,b){if("number"==typeof a&&"number"==typeof b)a=new d(a),b=new d(b);else if(!(a instanceof d&&b instanceof d))throw{type:"Argument",message:"arguments must be numbers"};return new d(Math.pow(a.value,b.value),a.unit)},percentage:function(a){var b=g._math(function(a){return 100*a},"%",a);return b}})},{"../tree/anonymous":46,"../tree/dimension":56,"./function-registry":22,"./math-helper.js":24}],27:[function(a,b,c){var d=a("../tree/quoted"),e=a("../tree/anonymous"),f=a("../tree/javascript"),g=a("./function-registry");g.addMultiple({e:function(a){return new e(a instanceof f?a.evaluated:a.value)},escape:function(a){return new e(encodeURI(a.value).replace(/=/g,"%3D").replace(/:/g,"%3A").replace(/#/g,"%23").replace(/;/g,"%3B").replace(/\(/g,"%28").replace(/\)/g,"%29"))},replace:function(a,b,c,e){var f=a.value;return c="Quoted"===c.type?c.value:c.toCSS(),f=f.replace(new RegExp(b.value,e?e.value:""),c),new d(a.quote||"",f,a.escaped)},"%":function(a){for(var b=Array.prototype.slice.call(arguments,1),c=a.value,e=0;b.length>e;e++)c=c.replace(/%[sda]/i,function(a){var c="Quoted"===b[e].type&&a.match(/s/i)?b[e].value:b[e].toCSS();return a.match(/[A-Z]$/)?encodeURIComponent(c):c});return c=c.replace(/%%/g,"%"),new d(a.quote||"",c,a.escaped); }})},{"../tree/anonymous":46,"../tree/javascript":63,"../tree/quoted":73,"./function-registry":22}],28:[function(a,b,c){b.exports=function(b){var c=a("../tree/dimension"),d=a("../tree/color"),e=a("../tree/expression"),f=a("../tree/quoted"),g=a("../tree/url"),h=a("./function-registry");h.add("svg-gradient",function(a){function b(){throw{type:"Argument",message:"svg-gradient expects direction, start_color [start_position], [color position,]..., end_color [end_position] or direction, color list"}}var h,i,j,k,l,m,n,o,p="linear",q='x="0" y="0" width="1" height="1"',r={compress:!1},s=a.toCSS(r);switch(2==arguments.length?(2>arguments[1].value.length&&b(),h=arguments[1].value):3>arguments.length?b():h=Array.prototype.slice.call(arguments,1),s){case"to bottom":i='x1="0%" y1="0%" x2="0%" y2="100%"';break;case"to right":i='x1="0%" y1="0%" x2="100%" y2="0%"';break;case"to bottom right":i='x1="0%" y1="0%" x2="100%" y2="100%"';break;case"to top right":i='x1="0%" y1="100%" x2="100%" y2="0%"';break;case"ellipse":case"ellipse at center":p="radial",i='cx="50%" cy="50%" r="75%"',q='x="-50" y="-50" width="101" height="101"';break;default:throw{type:"Argument",message:"svg-gradient direction must be 'to bottom', 'to right', 'to bottom right', 'to top right' or 'ellipse at center'"}}for(j='<'+p+'Gradient id="gradient" gradientUnits="userSpaceOnUse" '+i+">",k=0;h.length>k;k+=1)h[k]instanceof e?(l=h[k].value[0],m=h[k].value[1]):(l=h[k],m=void 0),l instanceof d&&((0===k||k+1===h.length)&&void 0===m||m instanceof c)||b(),n=m?m.toCSS(r):0===k?"0%":"100%",o=l.alpha,j+='o?' stop-opacity="'+o+'"':"")+"/>";return j+="',j=encodeURIComponent(j),j="data:image/svg+xml,"+j,new g(new f("'"+j+"'",j,!1,this.index,this.currentFileInfo),this.index,this.currentFileInfo)})}},{"../tree/color":50,"../tree/dimension":56,"../tree/expression":59,"../tree/quoted":73,"../tree/url":80,"./function-registry":22}],29:[function(a,b,c){var d=a("../tree/keyword"),e=a("../tree/detached-ruleset"),f=a("../tree/dimension"),g=a("../tree/color"),h=a("../tree/quoted"),i=a("../tree/anonymous"),j=a("../tree/url"),k=a("../tree/operation"),l=a("./function-registry"),m=function(a,b){return a instanceof b?d.True:d.False},n=function(a,b){if(void 0===b)throw{type:"Argument",message:"missing the required second argument to isunit."};if(b="string"==typeof b.value?b.value:b,"string"!=typeof b)throw{type:"Argument",message:"Second argument to isunit should be a unit or a string."};return a instanceof f&&a.unit.is(b)?d.True:d.False},o=function(a){var b=Array.isArray(a.value)?a.value:Array(a);return b};l.addMultiple({isruleset:function(a){return m(a,e)},iscolor:function(a){return m(a,g)},isnumber:function(a){return m(a,f)},isstring:function(a){return m(a,h)},iskeyword:function(a){return m(a,d)},isurl:function(a){return m(a,j)},ispixel:function(a){return n(a,"px")},ispercentage:function(a){return n(a,"%")},isem:function(a){return n(a,"em")},isunit:n,unit:function(a,b){if(!(a instanceof f))throw{type:"Argument",message:"the first argument to unit must be a number"+(a instanceof k?". Have you forgotten parenthesis?":"")};return b=b?b instanceof d?b.value:b.toCSS():"",new f(a.value,b)},"get-unit":function(a){return new i(a.unit)},extract:function(a,b){return b=b.value-1,o(a)[b]},length:function(a){return new f(o(a).length)}})},{"../tree/anonymous":46,"../tree/color":50,"../tree/detached-ruleset":55,"../tree/dimension":56,"../tree/keyword":65,"../tree/operation":71,"../tree/quoted":73,"../tree/url":80,"./function-registry":22}],30:[function(a,b,c){var d=a("./contexts"),e=a("./parser/parser"),f=a("./plugins/function-importer");b.exports=function(a){var b=function(a,b){this.rootFilename=b.filename,this.paths=a.paths||[],this.contents={},this.contentsIgnoredChars={},this.mime=a.mime,this.error=null,this.context=a,this.queue=[],this.files={}};return b.prototype.push=function(b,c,g,h,i){var j=this;this.queue.push(b);var k=function(a,c,d){j.queue.splice(j.queue.indexOf(b),1);var e=d===j.rootFilename;h.optional&&a?i(null,{rules:[]},!1,null):(j.files[d]=c,a&&!j.error&&(j.error=a),i(a,c,e,d))},l={relativeUrls:this.context.relativeUrls,entryPath:g.entryPath,rootpath:g.rootpath,rootFilename:g.rootFilename},m=a.getFileManager(b,g.currentDirectory,this.context,a);if(!m)return void k({message:"Could not find a file-manager for "+b});c&&(b=m.tryAppendExtension(b,h.plugin?".js":".less"));var n=function(a){var b=a.filename,c=a.contents.replace(/^\uFEFF/,"");l.currentDirectory=m.getPath(b),l.relativeUrls&&(l.rootpath=m.join(j.context.rootpath||"",m.pathDiff(l.currentDirectory,l.entryPath)),!m.isPathAbsolute(l.rootpath)&&m.alwaysMakePathsAbsolute()&&(l.rootpath=m.join(l.entryPath,l.rootpath))),l.filename=b;var i=new d.Parse(j.context);i.processImports=!1,j.contents[b]=c,(g.reference||h.reference)&&(l.reference=!0),h.plugin?new f(i,l).eval(c,function(a,c){k(a,c,b)}):h.inline?k(null,c,b):new e(i,j,l).parse(c,function(a,c){k(a,c,b)})},o=m.loadFile(b,g.currentDirectory,this.context,a,function(a,b){a?k(a):n(b)});o&&o.then(n,k)},b}},{"./contexts":11,"./parser/parser":38,"./plugins/function-importer":40}],31:[function(a,b,c){b.exports=function(b,c){var d,e,f,g,h,i={version:[2,7,1],data:a("./data"),tree:a("./tree"),Environment:h=a("./environment/environment"),AbstractFileManager:a("./environment/abstract-file-manager"),environment:b=new h(b,c),visitors:a("./visitors"),Parser:a("./parser/parser"),functions:a("./functions")(b),contexts:a("./contexts"),SourceMapOutput:d=a("./source-map-output")(b),SourceMapBuilder:e=a("./source-map-builder")(d,b),ParseTree:f=a("./parse-tree")(e),ImportManager:g=a("./import-manager")(b),render:a("./render")(b,f,g),parse:a("./parse")(b,f,g),LessError:a("./less-error"),transformTree:a("./transform-tree"),utils:a("./utils"),PluginManager:a("./plugin-manager"),logger:a("./logger")};return i}},{"./contexts":11,"./data":13,"./environment/abstract-file-manager":15,"./environment/environment":16,"./functions":23,"./import-manager":30,"./less-error":32,"./logger":33,"./parse":35,"./parse-tree":34,"./parser/parser":38,"./plugin-manager":39,"./render":41,"./source-map-builder":42,"./source-map-output":43,"./transform-tree":44,"./tree":62,"./utils":83,"./visitors":87}],32:[function(a,b,c){var d=a("./utils"),e=b.exports=function(a,b,c){Error.call(this);var e=a.filename||c;if(b&&e){var f=b.contents[e],g=d.getLocation(a.index,f),h=g.line,i=g.column,j=a.call&&d.getLocation(a.call,f).line,k=f.split("\n");this.type=a.type||"Syntax",this.filename=e,this.index=a.index,this.line="number"==typeof h?h+1:null,this.callLine=j+1,this.callExtract=k[j],this.column=i,this.extract=[k[h-1],k[h],k[h+1]]}this.message=a.message,this.stack=a.stack};if("undefined"==typeof Object.create){var f=function(){};f.prototype=Error.prototype,e.prototype=new f}else e.prototype=Object.create(Error.prototype);e.prototype.constructor=e},{"./utils":83}],33:[function(a,b,c){b.exports={error:function(a){this._fireEvent("error",a)},warn:function(a){this._fireEvent("warn",a)},info:function(a){this._fireEvent("info",a)},debug:function(a){this._fireEvent("debug",a)},addListener:function(a){this._listeners.push(a)},removeListener:function(a){for(var b=0;this._listeners.length>b;b++)if(this._listeners[b]===a)return void this._listeners.splice(b,1)},_fireEvent:function(a,b){for(var c=0;this._listeners.length>c;c++){var d=this._listeners[c][a];d&&d(b)}},_listeners:[]}},{}],34:[function(a,b,c){var d=a("./less-error"),e=a("./transform-tree"),f=a("./logger");b.exports=function(a){var b=function(a,b){this.root=a,this.imports=b};return b.prototype.toCSS=function(b){var c,g,h={};try{c=e(this.root,b)}catch(i){throw new d(i,this.imports)}try{var j=Boolean(b.compress);j&&f.warn("The compress option has been deprecated. We recommend you use a dedicated css minifier, for instance see less-plugin-clean-css.");var k={compress:j,dumpLineNumbers:b.dumpLineNumbers,strictUnits:Boolean(b.strictUnits),numPrecision:8};b.sourceMap?(g=new a(b.sourceMap),h.css=g.toCSS(c,k,this.imports)):h.css=c.toCSS(k)}catch(i){throw new d(i,this.imports)}if(b.pluginManager)for(var l=b.pluginManager.getPostProcessors(),m=0;l.length>m;m++)h.css=l[m].process(h.css,{sourceMap:g,options:b,imports:this.imports});b.sourceMap&&(h.map=g.getExternalSourceMap()),h.imports=[];for(var n in this.imports.files)this.imports.files.hasOwnProperty(n)&&n!==this.imports.rootFilename&&h.imports.push(n);return h},b}},{"./less-error":32,"./logger":33,"./transform-tree":44}],35:[function(a,b,c){var d,e=a("./contexts"),f=a("./parser/parser"),g=a("./plugin-manager");b.exports=function(b,c,h){var i=function(b,c,j){if(c=c||{},"function"==typeof c&&(j=c,c={}),!j){d||(d="undefined"==typeof Promise?a("promise"):Promise);var k=this;return new d(function(a,d){i.call(k,b,c,function(b,c){b?d(b):a(c)})})}var l,m,n=new g(this);if(n.addPlugins(c.plugins),c.pluginManager=n,l=new e.Parse(c),c.rootFileInfo)m=c.rootFileInfo;else{var o=c.filename||"input",p=o.replace(/[^\/\\]*$/,"");m={filename:o,relativeUrls:l.relativeUrls,rootpath:l.rootpath||"",currentDirectory:p,entryPath:p,rootFilename:o},m.rootpath&&"/"!==m.rootpath.slice(-1)&&(m.rootpath+="/")}var q=new h(l,m);new f(l,q,m).parse(b,function(a,b){return a?j(a):void j(null,b,q,c)},c)};return i}},{"./contexts":11,"./parser/parser":38,"./plugin-manager":39,promise:void 0}],36:[function(a,b,c){b.exports=function(a,b){function c(b){var c=h-q;512>c&&!b||!c||(p.push(a.slice(q,h+1)),q=h+1)}var d,e,f,g,h,i,j,k,l,m=a.length,n=0,o=0,p=[],q=0;for(h=0;m>h;h++)if(j=a.charCodeAt(h),!(j>=97&&122>=j||34>j))switch(j){case 40:o++,e=h;continue;case 41:if(--o<0)return b("missing opening `(`",h);continue;case 59:o||c();continue;case 123:n++,d=h;continue;case 125:if(--n<0)return b("missing opening `{`",h);n||o||c();continue;case 92:if(m-1>h){h++;continue}return b("unescaped `\\`",h);case 34:case 39:case 96:for(l=0,i=h,h+=1;m>h;h++)if(k=a.charCodeAt(h),!(k>96)){if(k==j){l=1;break}if(92==k){if(h==m-1)return b("unescaped `\\`",h);h++}}if(l)continue;return b("unmatched `"+String.fromCharCode(j)+"`",i);case 47:if(o||h==m-1)continue;if(k=a.charCodeAt(h+1),47==k)for(h+=2;m>h&&(k=a.charCodeAt(h),!(13>=k)||10!=k&&13!=k);h++);else if(42==k){for(f=i=h,h+=2;m-1>h&&(k=a.charCodeAt(h),125==k&&(g=h),42!=k||47!=a.charCodeAt(h+1));h++);if(h==m-1)return b("missing closing `*/`",i);h++}continue;case 42:if(m-1>h&&47==a.charCodeAt(h+1))return b("unmatched `/*`",h);continue}return 0!==n?f>d&&g>f?b("missing closing `}` or `*/`",d):b("missing closing `}`",d):0!==o?b("missing closing `)`",e):(c(!0),p)}},{}],37:[function(a,b,c){var d=a("./chunker");b.exports=function(){function a(d){for(var e,f,j,p=k.i,q=c,s=k.i-i,t=k.i+h.length-s,u=k.i+=d,v=b;t>k.i;k.i++){if(e=v.charCodeAt(k.i),k.autoCommentAbsorb&&e===r){if(f=v.charAt(k.i+1),"/"===f){j={index:k.i,isLineComment:!0};var w=v.indexOf("\n",k.i+2);0>w&&(w=t),k.i=w,j.text=v.substr(j.index,k.i-j.index),k.commentStore.push(j);continue}if("*"===f){var x=v.indexOf("*/",k.i+2);if(x>=0){j={index:k.i,text:v.substr(k.i,x+2-k.i),isLineComment:!1},k.i+=j.text.length-1,k.commentStore.push(j);continue}}break}if(e!==l&&e!==n&&e!==m&&e!==o)break}if(h=h.slice(d+k.i-u+s),i=k.i,!h.length){if(g.length-1>c)return h=g[++c],a(0),!0;k.finished=!0}return p!==k.i||q!==c}var b,c,e,f,g,h,i,j=[],k={},l=32,m=9,n=10,o=13,p=43,q=44,r=47,s=57;return k.save=function(){i=k.i,j.push({current:h,i:k.i,j:c})},k.restore=function(a){(k.i>e||k.i===e&&a&&!f)&&(e=k.i,f=a);var b=j.pop();h=b.current,i=k.i=b.i,c=b.j},k.forget=function(){j.pop()},k.isWhitespace=function(a){var c=k.i+(a||0),d=b.charCodeAt(c);return d===l||d===o||d===m||d===n},k.$re=function(b){k.i>i&&(h=h.slice(k.i-i),i=k.i);var c=b.exec(h);return c?(a(c[0].length),"string"==typeof c?c:1===c.length?c[0]:c):null},k.$char=function(c){return b.charAt(k.i)!==c?null:(a(1),c)},k.$str=function(c){for(var d=c.length,e=0;d>e;e++)if(b.charAt(k.i+e)!==c.charAt(e))return null;return a(d),c},k.$quoted=function(){var c=b.charAt(k.i);if("'"===c||'"'===c){for(var d=b.length,e=k.i,f=1;d>f+e;f++){var g=b.charAt(f+e);switch(g){case"\\":f++;continue;case"\r":case"\n":break;case c:var h=b.substr(e,f+1);return a(f+1),h}}return null}},k.autoCommentAbsorb=!0,k.commentStore=[],k.finished=!1,k.peek=function(a){if("string"==typeof a){for(var c=0;a.length>c;c++)if(b.charAt(k.i+c)!==a.charAt(c))return!1;return!0}return a.test(h)},k.peekChar=function(a){return b.charAt(k.i)===a},k.currentChar=function(){return b.charAt(k.i)},k.getInput=function(){return b},k.peekNotNumeric=function(){var a=b.charCodeAt(k.i);return a>s||p>a||a===r||a===q},k.start=function(f,j,l){b=f,k.i=c=i=e=0,g=j?d(f,l):[f],h=g[0],a(0)},k.end=function(){var a,c=k.i>=b.length;return e>k.i&&(a=f,k.i=e),{isFinished:c,furthest:k.i,furthestPossibleErrorMessage:a,furthestReachedEnd:k.i>=b.length-1,furthestChar:b[k.i]}},k}},{"./chunker":36}],38:[function(a,b,c){var d=a("../less-error"),e=a("../tree"),f=a("../visitors"),g=a("./parser-input"),h=a("../utils"),i=function j(a,b,c){function i(a,e){throw new d({index:o.i,filename:c.filename,type:e||"Syntax",message:a},b)}function k(a,b,c){var d=a instanceof Function?a.call(n):o.$re(a);return d?d:void i(b||("string"==typeof a?"expected '"+a+"' got '"+o.currentChar()+"'":"unexpected token"))}function l(a,b){return o.$char(a)?a:void i(b||"expected '"+a+"' got '"+o.currentChar()+"'")}function m(a){var b=c.filename;return{lineNumber:h.getLocation(a,o.getInput()).line+1,fileName:b}}var n,o=g();return{parse:function(g,h,i){var k,l,m,n,p=null,q="";if(l=i&&i.globalVars?j.serializeVars(i.globalVars)+"\n":"",m=i&&i.modifyVars?"\n"+j.serializeVars(i.modifyVars):"",a.pluginManager)for(var r=a.pluginManager.getPreProcessors(),s=0;r.length>s;s++)g=r[s].process(g,{context:a,imports:b,fileInfo:c});(l||i&&i.banner)&&(q=(i&&i.banner?i.banner:"")+l,n=b.contentsIgnoredChars,n[c.filename]=n[c.filename]||0,n[c.filename]+=q.length),g=g.replace(/\r\n?/g,"\n"),g=q+g.replace(/^\uFEFF/,"")+m,b.contents[c.filename]=g;try{o.start(g,a.chunkInput,function(a,e){throw new d({index:e,type:"Parse",message:a,filename:c.filename},b)}),k=new e.Ruleset(null,this.parsers.primary()),k.root=!0,k.firstRoot=!0}catch(t){return h(new d(t,b,c.filename))}var u=o.end();if(!u.isFinished){var v=u.furthestPossibleErrorMessage;v||(v="Unrecognised input","}"===u.furthestChar?v+=". Possibly missing opening '{'":")"===u.furthestChar?v+=". Possibly missing opening '('":u.furthestReachedEnd&&(v+=". Possibly missing something")),p=new d({type:"Parse",message:v,index:u.furthest,filename:c.filename},b)}var w=function(a){return a=p||a||b.error,a?(a instanceof d||(a=new d(a,b,c.filename)),h(a)):h(null,k)};return a.processImports===!1?w():void new f.ImportVisitor(b,w).run(k)},parsers:n={primary:function(){for(var a,b=this.mixin,c=[];;){for(;;){if(a=this.comment(),!a)break;c.push(a)}if(o.finished)break;if(o.peek("}"))break;if(a=this.extendRule())c=c.concat(a);else if(a=b.definition()||this.rule()||this.ruleset()||b.call()||this.rulesetCall()||this.entities.call()||this.directive())c.push(a);else{for(var d=!1;o.$char(";");)d=!0;if(!d)break}}return c},comment:function(){if(o.commentStore.length){var a=o.commentStore.shift();return new e.Comment(a.text,a.isLineComment,a.index,c)}},entities:{quoted:function(){var a,b=o.i,d=!1;return o.save(),o.$char("~")&&(d=!0),(a=o.$quoted())?(o.forget(),new e.Quoted(a.charAt(0),a.substr(1,a.length-2),d,b,c)):void o.restore()},keyword:function(){var a=o.$char("%")||o.$re(/^[_A-Za-z-][_A-Za-z0-9-]*/);return a?e.Color.fromKeyword(a)||new e.Keyword(a):void 0},call:function(){var a,b,d,f,g=o.i;if(!o.peek(/^url\(/i))return o.save(),(a=o.$re(/^([\w-]+|%|progid:[\w\.]+)\(/))?(a=a[1],b=a.toLowerCase(),"alpha"===b&&(f=n.alpha())?(o.forget(),f):(d=this.arguments(),o.$char(")")?(o.forget(),new e.Call(a,d,g,c)):void o.restore("Could not parse call arguments or missing ')'"))):void o.forget()},arguments:function(){var a,b,c,d=[],f=[],g=[];for(o.save();;){if(c=n.detachedRuleset()||this.assignment()||n.expression(),!c)break;b=c,c.value&&1==c.value.length&&(b=c.value[0]),b&&g.push(b),f.push(b),o.$char(",")||(o.$char(";")||a)&&(a=!0,g.length>1&&(b=new e.Value(g)),d.push(b),g=[])}return o.forget(),a?d:f},literal:function(){return this.dimension()||this.color()||this.quoted()||this.unicodeDescriptor()},assignment:function(){var a,b;return o.save(),(a=o.$re(/^\w+(?=\s?=)/i))&&o.$char("=")&&(b=n.entity())?(o.forget(),new e.Assignment(a,b)):void o.restore()},url:function(){var a,b=o.i;return o.autoCommentAbsorb=!1,o.$str("url(")?(a=this.quoted()||this.variable()||o.$re(/^(?:(?:\\[\(\)'"])|[^\(\)'"])+/)||"",o.autoCommentAbsorb=!0,l(")"),new e.URL(null!=a.value||a instanceof e.Variable?a:new e.Anonymous(a),b,c)):void(o.autoCommentAbsorb=!0)},variable:function(){var a,b=o.i;return"@"===o.currentChar()&&(a=o.$re(/^@@?[\w-]+/))?new e.Variable(a,b,c):void 0},variableCurly:function(){var a,b=o.i;return"@"===o.currentChar()&&(a=o.$re(/^@\{([\w-]+)\}/))?new e.Variable("@"+a[1],b,c):void 0},color:function(){var a;if("#"===o.currentChar()&&(a=o.$re(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})/))){var b=a.input.match(/^#([\w]+).*/);return b=b[1],b.match(/^[A-Fa-f0-9]+$/)||i("Invalid HEX color code"),new e.Color(a[1],void 0,"#"+b)}},colorKeyword:function(){o.save();var a=o.autoCommentAbsorb;o.autoCommentAbsorb=!1;var b=o.$re(/^[_A-Za-z-][_A-Za-z0-9-]+/);if(o.autoCommentAbsorb=a,!b)return void o.forget();o.restore();var c=e.Color.fromKeyword(b);return c?(o.$str(b),c):void 0},dimension:function(){if(!o.peekNotNumeric()){var a=o.$re(/^([+-]?\d*\.?\d+)(%|[a-z_]+)?/i);return a?new e.Dimension(a[1],a[2]):void 0}},unicodeDescriptor:function(){var a;return a=o.$re(/^U\+[0-9a-fA-F?]+(\-[0-9a-fA-F?]+)?/),a?new e.UnicodeDescriptor(a[0]):void 0},javascript:function(){var a,b=o.i;o.save();var d=o.$char("~"),f=o.$char("`");return f?(a=o.$re(/^[^`]*`/))?(o.forget(),new e.JavaScript(a.substr(0,a.length-1),Boolean(d),b,c)):void o.restore("invalid javascript definition"):void o.restore()}},variable:function(){var a;return"@"===o.currentChar()&&(a=o.$re(/^(@[\w-]+)\s*:/))?a[1]:void 0},rulesetCall:function(){var a;return"@"===o.currentChar()&&(a=o.$re(/^(@[\w-]+)\(\s*\)\s*;/))?new e.RulesetCall(a[1]):void 0},extend:function(a){var b,d,f,g,h,j=o.i;if(o.$str(a?"&:extend(":":extend(")){do{for(f=null,b=null;!(f=o.$re(/^(all)(?=\s*(\)|,))/))&&(d=this.element());)b?b.push(d):b=[d];f=f&&f[1],b||i("Missing target selector for :extend()."),h=new e.Extend(new e.Selector(b),f,j,c),g?g.push(h):g=[h]}while(o.$char(","));return k(/^\)/),a&&k(/^;/),g}},extendRule:function(){return this.extend(!0)},mixin:{call:function(){var a,b,d,f,g,h,i=o.currentChar(),j=!1,k=o.i;if("."===i||"#"===i){for(o.save();;){if(a=o.i,f=o.$re(/^[#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/),!f)break;d=new e.Element(g,f,a,c),b?b.push(d):b=[d],g=o.$char(">")}return b&&(o.$char("(")&&(h=this.args(!0).args,l(")")),n.important()&&(j=!0),n.end())?(o.forget(),new e.mixin.Call(b,h,k,c,j)):void o.restore()}},args:function(a){var b,c,d,f,g,h,j,k=n.entities,l={args:null,variadic:!1},m=[],p=[],q=[];for(o.save();;){if(a)h=n.detachedRuleset()||n.expression();else{if(o.commentStore.length=0,o.$str("...")){l.variadic=!0,o.$char(";")&&!b&&(b=!0),(b?p:q).push({variadic:!0});break}h=k.variable()||k.literal()||k.keyword()}if(!h)break;f=null,h.throwAwayComments&&h.throwAwayComments(),g=h;var r=null;if(a?h.value&&1==h.value.length&&(r=h.value[0]):r=h,r&&r instanceof e.Variable)if(o.$char(":")){if(m.length>0&&(b&&i("Cannot mix ; and , as delimiter types"),c=!0),g=n.detachedRuleset()||n.expression(),!g){if(!a)return o.restore(),l.args=[],l;i("could not understand value for named argument")}f=d=r.name}else if(o.$str("...")){if(!a){l.variadic=!0,o.$char(";")&&!b&&(b=!0),(b?p:q).push({name:h.name,variadic:!0});break}j=!0}else a||(d=f=r.name,g=null);g&&m.push(g),q.push({name:f,value:g,expand:j}),o.$char(",")||(o.$char(";")||b)&&(c&&i("Cannot mix ; and , as delimiter types"),b=!0,m.length>1&&(g=new e.Value(m)),p.push({name:d,value:g,expand:j}),d=null,m=[],c=!1)}return o.forget(),l.args=b?p:q,l},definition:function(){var a,b,c,d,f=[],g=!1;if(!("."!==o.currentChar()&&"#"!==o.currentChar()||o.peek(/^[^{]*\}/)))if(o.save(),b=o.$re(/^([#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\s*\(/)){a=b[1];var h=this.args(!1);if(f=h.args,g=h.variadic,!o.$char(")"))return void o.restore("Missing closing ')'");if(o.commentStore.length=0,o.$str("when")&&(d=k(n.conditions,"expected condition")),c=n.block())return o.forget(),new e.mixin.Definition(a,f,c,d,g);o.restore()}else o.forget()}},entity:function(){var a=this.entities;return this.comment()||a.literal()||a.variable()||a.url()||a.call()||a.keyword()||a.javascript()},end:function(){return o.$char(";")||o.peek("}")},alpha:function(){var a;if(o.$re(/^opacity=/i))return a=o.$re(/^\d+/),a||(a=k(this.entities.variable,"Could not parse alpha")),l(")"),new e.Alpha(a)},element:function(){var a,b,d,f=o.i;return b=this.combinator(),a=o.$re(/^(?:\d+\.\d+|\d+)%/)||o.$re(/^(?:[.#]?|:*)(?:[\w-]|[^\x00-\x9f]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/)||o.$char("*")||o.$char("&")||this.attribute()||o.$re(/^\([^&()@]+\)/)||o.$re(/^[\.#:](?=@)/)||this.entities.variableCurly(),a||(o.save(),o.$char("(")?(d=this.selector())&&o.$char(")")?(a=new e.Paren(d),o.forget()):o.restore("Missing closing ')'"):o.forget()),a?new e.Element(b,a,f,c):void 0},combinator:function(){var a=o.currentChar();if("/"===a){o.save();var b=o.$re(/^\/[a-z]+\//i);if(b)return o.forget(),new e.Combinator(b);o.restore()}if(">"===a||"+"===a||"~"===a||"|"===a||"^"===a){for(o.i++,"^"===a&&"^"===o.currentChar()&&(a="^^",o.i++);o.isWhitespace();)o.i++;return new e.Combinator(a)}return new e.Combinator(o.isWhitespace(-1)?" ":null)},lessSelector:function(){return this.selector(!0)},selector:function(a){for(var b,d,f,g,h,j,l,m=o.i;(a&&(d=this.extend())||a&&(j=o.$str("when"))||(g=this.element()))&&(j?l=k(this.conditions,"expected condition"):l?i("CSS guard can only be used at the end of selector"):d?h=h?h.concat(d):d:(h&&i("Extend can only be used at the end of selector"),f=o.currentChar(),b?b.push(g):b=[g],g=null),"{"!==f&&"}"!==f&&";"!==f&&","!==f&&")"!==f););return b?new e.Selector(b,h,l,m,c):void(h&&i("Extend must be used to extend a selector, it cannot be used on its own"))},attribute:function(){if(o.$char("[")){var a,b,c,d=this.entities;return(a=d.variableCurly())||(a=k(/^(?:[_A-Za-z0-9-\*]*\|)?(?:[_A-Za-z0-9-]|\\.)+/)),c=o.$re(/^[|~*$^]?=/),c&&(b=d.quoted()||o.$re(/^[0-9]+%/)||o.$re(/^[\w-]+/)||d.variableCurly()),l("]"),new e.Attribute(a,c,b)}},block:function(){var a;return o.$char("{")&&(a=this.primary())&&o.$char("}")?a:void 0},blockRuleset:function(){var a=this.block();return a&&(a=new e.Ruleset(null,a)),a},detachedRuleset:function(){var a=this.blockRuleset();return a?new e.DetachedRuleset(a):void 0},ruleset:function(){var b,c,d,f;for(o.save(),a.dumpLineNumbers&&(f=m(o.i));;){if(c=this.lessSelector(),!c)break;if(b?b.push(c):b=[c],o.commentStore.length=0,c.condition&&b.length>1&&i("Guards are only currently allowed on a single selector."),!o.$char(","))break;c.condition&&i("Guards are only currently allowed on a single selector."),o.commentStore.length=0}if(b&&(d=this.block())){o.forget();var g=new e.Ruleset(b,d,a.strictImports);return a.dumpLineNumbers&&(g.debugInfo=f),g}o.restore()},rule:function(b){var d,f,g,h,i,j=o.i,k=o.currentChar();if("."!==k&&"#"!==k&&"&"!==k&&":"!==k)if(o.save(),d=this.variable()||this.ruleProperty()){if(i="string"==typeof d,i&&(f=this.detachedRuleset()),o.commentStore.length=0,!f){h=!i&&d.length>1&&d.pop().value;var l=!b&&(a.compress||i);if(l&&(f=this.value()),!f&&(f=this.anonymousValue()))return o.forget(),new e.Rule(d,f,!1,h,j,c);l||f||(f=this.value()),g=this.important()}if(f&&this.end())return o.forget(),new e.Rule(d,f,g,h,j,c);if(o.restore(),f&&!b)return this.rule(!0)}else o.forget()},anonymousValue:function(){var a=o.$re(/^([^@+\/'"*`(;{}-]*);/);return a?new e.Anonymous(a[1]):void 0},"import":function(){var a,b,d=o.i,f=o.$re(/^@import?\s+/);if(f){var g=(f?this.importOptions():null)||{};if(a=this.entities.quoted()||this.entities.url())return b=this.mediaFeatures(),o.$char(";")||(o.i=d,i("missing semi-colon or unrecognised media features on import")),b=b&&new e.Value(b),new e.Import(a,b,g,d,c);o.i=d,i("malformed import statement")}},importOptions:function(){var a,b,c,d={};if(!o.$char("("))return null;do if(a=this.importOption()){switch(b=a,c=!0,b){case"css":b="less",c=!1;break;case"once":b="multiple",c=!1}if(d[b]=c,!o.$char(","))break}while(a);return l(")"),d},importOption:function(){var a=o.$re(/^(less|css|multiple|once|inline|reference|optional)/);return a?a[1]:void 0},mediaFeature:function(){var a,b,d=this.entities,f=[];o.save();do a=d.keyword()||d.variable(),a?f.push(a):o.$char("(")&&(b=this.property(),a=this.value(),o.$char(")")?b&&a?f.push(new e.Paren(new e.Rule(b,a,null,null,o.i,c,!0))):a?f.push(new e.Paren(a)):i("badly formed media feature definition"):i("Missing closing ')'","Parse"));while(a);return o.forget(),f.length>0?new e.Expression(f):void 0},mediaFeatures:function(){var a,b=this.entities,c=[];do if(a=this.mediaFeature()){if(c.push(a),!o.$char(","))break}else if(a=b.variable(),a&&(c.push(a),!o.$char(",")))break;while(a);return c.length>0?c:null},media:function(){var b,d,f,g,h=o.i;return a.dumpLineNumbers&&(g=m(h)),o.save(),o.$str("@media")?(b=this.mediaFeatures(),d=this.block(),d||i("media definitions require block statements after any features"),o.forget(),f=new e.Media(d,b,h,c),a.dumpLineNumbers&&(f.debugInfo=g),f):void o.restore()},plugin:function(){var a,b=o.i,d=o.$re(/^@plugin?\s+/);if(d){var f={plugin:!0};if(a=this.entities.quoted()||this.entities.url())return o.$char(";")||(o.i=b,i("missing semi-colon on plugin")),new e.Import(a,null,f,b,c);o.i=b,i("malformed plugin statement")}},directive:function(){var b,d,f,g,h,j,k,l=o.i,n=!0,p=!0;if("@"===o.currentChar()){if(d=this["import"]()||this.plugin()||this.media())return d;if(o.save(),b=o.$re(/^@[a-z-]+/)){switch(g=b,"-"==b.charAt(1)&&b.indexOf("-",2)>0&&(g="@"+b.slice(b.indexOf("-",2)+1)),g){case"@charset":h=!0,n=!1;break;case"@namespace":j=!0,n=!1;break;case"@keyframes":case"@counter-style":h=!0;break;case"@document":case"@supports":k=!0,p=!1;break;default:k=!0}return o.commentStore.length=0,h?(d=this.entity(),d||i("expected "+b+" identifier")):j?(d=this.expression(),d||i("expected "+b+" expression")):k&&(d=(o.$re(/^[^{;]+/)||"").trim(),n="{"==o.currentChar(),d&&(d=new e.Anonymous(d))),n&&(f=this.blockRuleset()),f||!n&&d&&o.$char(";")?(o.forget(),new e.Directive(b,d,f,l,c,a.dumpLineNumbers?m(l):null,p)):void o.restore("directive options not recognised")}}},value:function(){var a,b=[];do if(a=this.expression(),a&&(b.push(a),!o.$char(",")))break;while(a);return b.length>0?new e.Value(b):void 0},important:function(){return"!"===o.currentChar()?o.$re(/^! *important/):void 0},sub:function(){var a,b;return o.save(),o.$char("(")?(a=this.addition(),a&&o.$char(")")?(o.forget(),b=new e.Expression([a]),b.parens=!0,b):void o.restore("Expected ')'")):void o.restore()},multiplication:function(){var a,b,c,d,f;if(a=this.operand()){for(f=o.isWhitespace(-1);;){if(o.peek(/^\/[*\/]/))break;if(o.save(),c=o.$char("/")||o.$char("*"),!c){o.forget();break}if(b=this.operand(),!b){o.restore();break}o.forget(),a.parensInOp=!0,b.parensInOp=!0,d=new e.Operation(c,[d||a,b],f),f=o.isWhitespace(-1)}return d||a}},addition:function(){var a,b,c,d,f;if(a=this.multiplication()){for(f=o.isWhitespace(-1);;){if(c=o.$re(/^[-+]\s+/)||!f&&(o.$char("+")||o.$char("-")),!c)break;if(b=this.multiplication(),!b)break;a.parensInOp=!0,b.parensInOp=!0,d=new e.Operation(c,[d||a,b],f),f=o.isWhitespace(-1)}return d||a}},conditions:function(){var a,b,c,d=o.i;if(a=this.condition()){for(;;){if(!o.peek(/^,\s*(not\s*)?\(/)||!o.$char(","))break;if(b=this.condition(),!b)break;c=new e.Condition("or",c||a,b,d)}return c||a}},condition:function(){function a(){return o.$str("or")}var b,c,d;if(b=this.conditionAnd(this)){if(c=a()){if(d=this.condition(),!d)return;b=new e.Condition(c,b,d)}return b}},conditionAnd:function(){function a(a){return a.negatedCondition()||a.parenthesisCondition()}function b(){return o.$str("and")}var c,d,f;if(c=a(this)){if(d=b()){if(f=this.conditionAnd(),!f)return;c=new e.Condition(d,c,f)}return c}},negatedCondition:function(){if(o.$str("not")){var a=this.parenthesisCondition();return a&&(a.negate=!a.negate),a}},parenthesisCondition:function(){function a(a){var b;return o.save(),(b=a.condition())&&o.$char(")")?(o.forget(),b):void o.restore()}var b;return o.save(),o.$str("(")?(b=a(this))?(o.forget(),b):(b=this.atomicCondition())?o.$char(")")?(o.forget(),b):void o.restore("expected ')' got '"+o.currentChar()+"'"):void o.restore():void o.restore()},atomicCondition:function(){var a,b,c,d,f=this.entities,g=o.i;return a=this.addition()||f.keyword()||f.quoted(),a?(o.$char(">")?d=o.$char("=")?">=":">":o.$char("<")?d=o.$char("=")?"<=":"<":o.$char("=")&&(d=o.$char(">")?"=>":o.$char("<")?"=<":"="),d?(b=this.addition()||f.keyword()||f.quoted(),b?c=new e.Condition(d,a,b,g,!1):i("expected expression")):c=new e.Condition("=",a,new e.Keyword("true"),g,!1),c):void 0},operand:function(){var a,b=this.entities;o.peek(/^-[@\(]/)&&(a=o.$char("-"));var c=this.sub()||b.dimension()||b.color()||b.variable()||b.call()||b.colorKeyword();return a&&(c.parensInOp=!0,c=new e.Negative(c)),c},expression:function(){var a,b,c=[];do a=this.comment(),a?c.push(a):(a=this.addition()||this.entity(),a&&(c.push(a),o.peek(/^\/[\/*]/)||(b=o.$char("/"),b&&c.push(new e.Anonymous(b)))));while(a);return c.length>0?new e.Expression(c):void 0},property:function(){var a=o.$re(/^(\*?-?[_a-zA-Z0-9-]+)\s*:/);return a?a[1]:void 0},ruleProperty:function(){function a(a){var b=o.i,c=o.$re(a);return c?(g.push(b),f.push(c[1])):void 0}var b,d,f=[],g=[];o.save();var h=o.$re(/^([_a-zA-Z0-9-]+)\s*:/);if(h)return f=[new e.Keyword(h[1])],o.forget(),f;for(a(/^(\*?)/);;)if(!a(/^((?:[\w-]+)|(?:@\{[\w-]+\}))/))break;if(f.length>1&&a(/^((?:\+_|\+)?)\s*:/)){for(o.forget(),""===f[0]&&(f.shift(),g.shift()),d=0;f.length>d;d++)b=f[d],f[d]="@"!==b.charAt(0)?new e.Keyword(b):new e.Variable("@"+b.slice(2,-1),g[d],c);return f}o.restore()}}}};i.serializeVars=function(a){var b="";for(var c in a)if(Object.hasOwnProperty.call(a,c)){var d=a[c];b+=("@"===c[0]?"":"@")+c+": "+d+(";"===String(d).slice(-1)?"":";")}return b},b.exports=i},{"../less-error":32,"../tree":62,"../utils":83,"../visitors":87,"./parser-input":37}],39:[function(a,b,c){var d=function(a){this.less=a,this.visitors=[],this.preProcessors=[],this.postProcessors=[],this.installedPlugins=[],this.fileManagers=[]};d.prototype.addPlugins=function(a){if(a)for(var b=0;a.length>b;b++)this.addPlugin(a[b])},d.prototype.addPlugin=function(a){this.installedPlugins.push(a),a.install(this.less,this)},d.prototype.addVisitor=function(a){this.visitors.push(a)},d.prototype.addPreProcessor=function(a,b){var c;for(c=0;this.preProcessors.length>c&&!(this.preProcessors[c].priority>=b);c++);this.preProcessors.splice(c,0,{preProcessor:a,priority:b})},d.prototype.addPostProcessor=function(a,b){var c;for(c=0;this.postProcessors.length>c&&!(this.postProcessors[c].priority>=b);c++);this.postProcessors.splice(c,0,{postProcessor:a,priority:b})},d.prototype.addFileManager=function(a){this.fileManagers.push(a)},d.prototype.getPreProcessors=function(){for(var a=[],b=0;this.preProcessors.length>b;b++)a.push(this.preProcessors[b].preProcessor);return a},d.prototype.getPostProcessors=function(){for(var a=[],b=0;this.postProcessors.length>b;b++)a.push(this.postProcessors[b].postProcessor);return a},d.prototype.getVisitors=function(){return this.visitors},d.prototype.getFileManagers=function(){return this.fileManagers},b.exports=d},{}],40:[function(a,b,c){var d=a("../less-error"),e=a("../tree"),f=b.exports=function(a,b){this.fileInfo=b};f.prototype.eval=function(a,b){var c,f,g={}; f={add:function(a,b){g[a]=b},addMultiple:function(a){Object.keys(a).forEach(function(b){g[b]=a[b]})}};try{c=new Function("functions","tree","fileInfo",a),c(f,e,this.fileInfo)}catch(h){b(new d({message:"Plugin evaluation error: '"+h.name+": "+h.message.replace(/["]/g,"'")+"'",filename:this.fileInfo.filename}),null)}b(null,{functions:g})}},{"../less-error":32,"../tree":62}],41:[function(a,b,c){var d;b.exports=function(b,c,e){var f=function(b,e,g){if("function"==typeof e&&(g=e,e={}),!g){d||(d="undefined"==typeof Promise?a("promise"):Promise);var h=this;return new d(function(a,c){f.call(h,b,e,function(b,d){b?c(b):a(d)})})}this.parse(b,e,function(a,b,d,e){if(a)return g(a);var f;try{var h=new c(b,d);f=h.toCSS(e)}catch(a){return g(a)}g(null,f)})};return f}},{promise:void 0}],42:[function(a,b,c){b.exports=function(a,b){var c=function(a){this.options=a};return c.prototype.toCSS=function(b,c,d){var e=new a({contentsIgnoredCharsMap:d.contentsIgnoredChars,rootNode:b,contentsMap:d.contents,sourceMapFilename:this.options.sourceMapFilename,sourceMapURL:this.options.sourceMapURL,outputFilename:this.options.sourceMapOutputFilename,sourceMapBasepath:this.options.sourceMapBasepath,sourceMapRootpath:this.options.sourceMapRootpath,outputSourceFiles:this.options.outputSourceFiles,sourceMapGenerator:this.options.sourceMapGenerator,sourceMapFileInline:this.options.sourceMapFileInline}),f=e.toCSS(c);return this.sourceMap=e.sourceMap,this.sourceMapURL=e.sourceMapURL,this.options.sourceMapInputFilename&&(this.sourceMapInputFilename=e.normalizeFilename(this.options.sourceMapInputFilename)),f+this.getCSSAppendage()},c.prototype.getCSSAppendage=function(){var a=this.sourceMapURL;if(this.options.sourceMapFileInline){if(void 0===this.sourceMap)return"";a="data:application/json;base64,"+b.encodeBase64(this.sourceMap)}return a?"/*# sourceMappingURL="+a+" */":""},c.prototype.getExternalSourceMap=function(){return this.sourceMap},c.prototype.setExternalSourceMap=function(a){this.sourceMap=a},c.prototype.isInline=function(){return this.options.sourceMapFileInline},c.prototype.getSourceMapURL=function(){return this.sourceMapURL},c.prototype.getOutputFilename=function(){return this.options.sourceMapOutputFilename},c.prototype.getInputFilename=function(){return this.sourceMapInputFilename},c}},{}],43:[function(a,b,c){b.exports=function(a){var b=function(b){this._css=[],this._rootNode=b.rootNode,this._contentsMap=b.contentsMap,this._contentsIgnoredCharsMap=b.contentsIgnoredCharsMap,b.sourceMapFilename&&(this._sourceMapFilename=b.sourceMapFilename.replace(/\\/g,"/")),this._outputFilename=b.outputFilename,this.sourceMapURL=b.sourceMapURL,b.sourceMapBasepath&&(this._sourceMapBasepath=b.sourceMapBasepath.replace(/\\/g,"/")),b.sourceMapRootpath?(this._sourceMapRootpath=b.sourceMapRootpath.replace(/\\/g,"/"),"/"!==this._sourceMapRootpath.charAt(this._sourceMapRootpath.length-1)&&(this._sourceMapRootpath+="/")):this._sourceMapRootpath="",this._outputSourceFiles=b.outputSourceFiles,this._sourceMapGeneratorConstructor=a.getSourceMapGenerator(),this._lineNumber=0,this._column=0};return b.prototype.normalizeFilename=function(a){return a=a.replace(/\\/g,"/"),this._sourceMapBasepath&&0===a.indexOf(this._sourceMapBasepath)&&(a=a.substring(this._sourceMapBasepath.length),"\\"!==a.charAt(0)&&"/"!==a.charAt(0)||(a=a.substring(1))),(this._sourceMapRootpath||"")+a},b.prototype.add=function(a,b,c,d){if(a){var e,f,g,h,i;if(b){var j=this._contentsMap[b.filename];this._contentsIgnoredCharsMap[b.filename]&&(c-=this._contentsIgnoredCharsMap[b.filename],0>c&&(c=0),j=j.slice(this._contentsIgnoredCharsMap[b.filename])),j=j.substring(0,c),f=j.split("\n"),h=f[f.length-1]}if(e=a.split("\n"),g=e[e.length-1],b)if(d)for(i=0;e.length>i;i++)this._sourceMapGenerator.addMapping({generated:{line:this._lineNumber+i+1,column:0===i?this._column:0},original:{line:f.length+i,column:0===i?h.length:0},source:this.normalizeFilename(b.filename)});else this._sourceMapGenerator.addMapping({generated:{line:this._lineNumber+1,column:this._column},original:{line:f.length,column:h.length},source:this.normalizeFilename(b.filename)});1===e.length?this._column+=g.length:(this._lineNumber+=e.length-1,this._column=g.length),this._css.push(a)}},b.prototype.isEmpty=function(){return 0===this._css.length},b.prototype.toCSS=function(a){if(this._sourceMapGenerator=new this._sourceMapGeneratorConstructor({file:this._outputFilename,sourceRoot:null}),this._outputSourceFiles)for(var b in this._contentsMap)if(this._contentsMap.hasOwnProperty(b)){var c=this._contentsMap[b];this._contentsIgnoredCharsMap[b]&&(c=c.slice(this._contentsIgnoredCharsMap[b])),this._sourceMapGenerator.setSourceContent(this.normalizeFilename(b),c)}if(this._rootNode.genCSS(a,this),this._css.length>0){var d,e=JSON.stringify(this._sourceMapGenerator.toJSON());this.sourceMapURL?d=this.sourceMapURL:this._sourceMapFilename&&(d=this._sourceMapFilename),this.sourceMapURL=d,this.sourceMap=e}return this._css.join("")},b}},{}],44:[function(a,b,c){var d=a("./contexts"),e=a("./visitors"),f=a("./tree");b.exports=function(a,b){b=b||{};var c,g=b.variables,h=new d.Eval(b);"object"!=typeof g||Array.isArray(g)||(g=Object.keys(g).map(function(a){var b=g[a];return b instanceof f.Value||(b instanceof f.Expression||(b=new f.Expression([b])),b=new f.Value([b])),new f.Rule("@"+a,b,!1,null,0)}),h.frames=[new f.Ruleset(null,g)]);var i,j=[],k=[new e.JoinSelectorVisitor,new e.MarkVisibleSelectorsVisitor(!0),new e.ExtendVisitor,new e.ToCSSVisitor({compress:Boolean(b.compress)})];if(b.pluginManager){var l=b.pluginManager.getVisitors();for(i=0;l.length>i;i++){var m=l[i];m.isPreEvalVisitor?j.push(m):m.isPreVisitor?k.splice(0,0,m):k.push(m)}}for(i=0;j.length>i;i++)j[i].run(a);for(c=a.eval(h),i=0;k.length>i;i++)k[i].run(c);return c}},{"./contexts":11,"./tree":62,"./visitors":87}],45:[function(a,b,c){var d=a("./node"),e=function(a){this.value=a};e.prototype=new d,e.prototype.type="Alpha",e.prototype.accept=function(a){this.value=a.visit(this.value)},e.prototype.eval=function(a){return this.value.eval?new e(this.value.eval(a)):this},e.prototype.genCSS=function(a,b){b.add("alpha(opacity="),this.value.genCSS?this.value.genCSS(a,b):b.add(this.value),b.add(")")},b.exports=e},{"./node":70}],46:[function(a,b,c){var d=a("./node"),e=function(a,b,c,d,e,f){this.value=a,this.index=b,this.mapLines=d,this.currentFileInfo=c,this.rulesetLike="undefined"==typeof e?!1:e,this.allowRoot=!0,this.copyVisibilityInfo(f)};e.prototype=new d,e.prototype.type="Anonymous",e.prototype.eval=function(){return new e(this.value,this.index,this.currentFileInfo,this.mapLines,this.rulesetLike,this.visibilityInfo())},e.prototype.compare=function(a){return a.toCSS&&this.toCSS()===a.toCSS()?0:void 0},e.prototype.isRulesetLike=function(){return this.rulesetLike},e.prototype.genCSS=function(a,b){b.add(this.value,this.currentFileInfo,this.index,this.mapLines)},b.exports=e},{"./node":70}],47:[function(a,b,c){var d=a("./node"),e=function(a,b){this.key=a,this.value=b};e.prototype=new d,e.prototype.type="Assignment",e.prototype.accept=function(a){this.value=a.visit(this.value)},e.prototype.eval=function(a){return this.value.eval?new e(this.key,this.value.eval(a)):this},e.prototype.genCSS=function(a,b){b.add(this.key+"="),this.value.genCSS?this.value.genCSS(a,b):b.add(this.value)},b.exports=e},{"./node":70}],48:[function(a,b,c){var d=a("./node"),e=function(a,b,c){this.key=a,this.op=b,this.value=c};e.prototype=new d,e.prototype.type="Attribute",e.prototype.eval=function(a){return new e(this.key.eval?this.key.eval(a):this.key,this.op,this.value&&this.value.eval?this.value.eval(a):this.value)},e.prototype.genCSS=function(a,b){b.add(this.toCSS(a))},e.prototype.toCSS=function(a){var b=this.key.toCSS?this.key.toCSS(a):this.key;return this.op&&(b+=this.op,b+=this.value.toCSS?this.value.toCSS(a):this.value),"["+b+"]"},b.exports=e},{"./node":70}],49:[function(a,b,c){var d=a("./node"),e=a("../functions/function-caller"),f=function(a,b,c,d){this.name=a,this.args=b,this.index=c,this.currentFileInfo=d};f.prototype=new d,f.prototype.type="Call",f.prototype.accept=function(a){this.args&&(this.args=a.visitArray(this.args))},f.prototype.eval=function(a){var b,c=this.args.map(function(b){return b.eval(a)}),d=new e(this.name,a,this.index,this.currentFileInfo);if(d.isValid()){try{b=d.call(c)}catch(g){throw{type:g.type||"Runtime",message:"error evaluating function `"+this.name+"`"+(g.message?": "+g.message:""),index:this.index,filename:this.currentFileInfo.filename}}if(null!=b)return b.index=this.index,b.currentFileInfo=this.currentFileInfo,b}return new f(this.name,c,this.index,this.currentFileInfo)},f.prototype.genCSS=function(a,b){b.add(this.name+"(",this.currentFileInfo,this.index);for(var c=0;this.args.length>c;c++)this.args[c].genCSS(a,b),this.args.length>c+1&&b.add(", ");b.add(")")},b.exports=f},{"../functions/function-caller":21,"./node":70}],50:[function(a,b,c){function d(a,b){return Math.min(Math.max(a,0),b)}function e(a){return"#"+a.map(function(a){return a=d(Math.round(a),255),(16>a?"0":"")+a.toString(16)}).join("")}var f=a("./node"),g=a("../data/colors"),h=function(a,b,c){this.rgb=Array.isArray(a)?a:6==a.length?a.match(/.{2}/g).map(function(a){return parseInt(a,16)}):a.split("").map(function(a){return parseInt(a+a,16)}),this.alpha="number"==typeof b?b:1,"undefined"!=typeof c&&(this.value=c)};h.prototype=new f,h.prototype.type="Color",h.prototype.luma=function(){var a=this.rgb[0]/255,b=this.rgb[1]/255,c=this.rgb[2]/255;return a=.03928>=a?a/12.92:Math.pow((a+.055)/1.055,2.4),b=.03928>=b?b/12.92:Math.pow((b+.055)/1.055,2.4),c=.03928>=c?c/12.92:Math.pow((c+.055)/1.055,2.4),.2126*a+.7152*b+.0722*c},h.prototype.genCSS=function(a,b){b.add(this.toCSS(a))},h.prototype.toCSS=function(a,b){var c,e,f=a&&a.compress&&!b;if(this.value)return this.value;if(e=this.fround(a,this.alpha),1>e)return"rgba("+this.rgb.map(function(a){return d(Math.round(a),255)}).concat(d(e,1)).join(","+(f?"":" "))+")";if(c=this.toRGB(),f){var g=c.split("");g[1]===g[2]&&g[3]===g[4]&&g[5]===g[6]&&(c="#"+g[1]+g[3]+g[5])}return c},h.prototype.operate=function(a,b,c){for(var d=[],e=this.alpha*(1-c.alpha)+c.alpha,f=0;3>f;f++)d[f]=this._operate(a,b,this.rgb[f],c.rgb[f]);return new h(d,e)},h.prototype.toRGB=function(){return e(this.rgb)},h.prototype.toHSL=function(){var a,b,c=this.rgb[0]/255,d=this.rgb[1]/255,e=this.rgb[2]/255,f=this.alpha,g=Math.max(c,d,e),h=Math.min(c,d,e),i=(g+h)/2,j=g-h;if(g===h)a=b=0;else{switch(b=i>.5?j/(2-g-h):j/(g+h),g){case c:a=(d-e)/j+(e>d?6:0);break;case d:a=(e-c)/j+2;break;case e:a=(c-d)/j+4}a/=6}return{h:360*a,s:b,l:i,a:f}},h.prototype.toHSV=function(){var a,b,c=this.rgb[0]/255,d=this.rgb[1]/255,e=this.rgb[2]/255,f=this.alpha,g=Math.max(c,d,e),h=Math.min(c,d,e),i=g,j=g-h;if(b=0===g?0:j/g,g===h)a=0;else{switch(g){case c:a=(d-e)/j+(e>d?6:0);break;case d:a=(e-c)/j+2;break;case e:a=(c-d)/j+4}a/=6}return{h:360*a,s:b,v:i,a:f}},h.prototype.toARGB=function(){return e([255*this.alpha].concat(this.rgb))},h.prototype.compare=function(a){return a.rgb&&a.rgb[0]===this.rgb[0]&&a.rgb[1]===this.rgb[1]&&a.rgb[2]===this.rgb[2]&&a.alpha===this.alpha?0:void 0},h.fromKeyword=function(a){var b,c=a.toLowerCase();return g.hasOwnProperty(c)?b=new h(g[c].slice(1)):"transparent"===c&&(b=new h([0,0,0],0)),b?(b.value=a,b):void 0},b.exports=h},{"../data/colors":12,"./node":70}],51:[function(a,b,c){var d=a("./node"),e=function(a){" "===a?(this.value=" ",this.emptyOrWhitespace=!0):(this.value=a?a.trim():"",this.emptyOrWhitespace=""===this.value)};e.prototype=new d,e.prototype.type="Combinator";var f={"":!0," ":!0,"|":!0};e.prototype.genCSS=function(a,b){var c=a.compress||f[this.value]?"":" ";b.add(c+this.value+c)},b.exports=e},{"./node":70}],52:[function(a,b,c){var d=a("./node"),e=a("./debug-info"),f=function(a,b,c,d){this.value=a,this.isLineComment=b,this.currentFileInfo=d,this.allowRoot=!0};f.prototype=new d,f.prototype.type="Comment",f.prototype.genCSS=function(a,b){this.debugInfo&&b.add(e(a,this),this.currentFileInfo,this.index),b.add(this.value)},f.prototype.isSilent=function(a){var b=a.compress&&"!"!==this.value[2];return this.isLineComment||b},b.exports=f},{"./debug-info":54,"./node":70}],53:[function(a,b,c){var d=a("./node"),e=function(a,b,c,d,e){this.op=a.trim(),this.lvalue=b,this.rvalue=c,this.index=d,this.negate=e};e.prototype=new d,e.prototype.type="Condition",e.prototype.accept=function(a){this.lvalue=a.visit(this.lvalue),this.rvalue=a.visit(this.rvalue)},e.prototype.eval=function(a){var b=function(a,b,c){switch(a){case"and":return b&&c;case"or":return b||c;default:switch(d.compare(b,c)){case-1:return"<"===a||"=<"===a||"<="===a;case 0:return"="===a||">="===a||"=<"===a||"<="===a;case 1:return">"===a||">="===a;default:return!1}}}(this.op,this.lvalue.eval(a),this.rvalue.eval(a));return this.negate?!b:b},b.exports=e},{"./node":70}],54:[function(a,b,c){var d=function(a,b,c){var e="";if(a.dumpLineNumbers&&!a.compress)switch(a.dumpLineNumbers){case"comments":e=d.asComment(b);break;case"mediaquery":e=d.asMediaQuery(b);break;case"all":e=d.asComment(b)+(c||"")+d.asMediaQuery(b)}return e};d.asComment=function(a){return"/* line "+a.debugInfo.lineNumber+", "+a.debugInfo.fileName+" */\n"},d.asMediaQuery=function(a){var b=a.debugInfo.fileName;return/^[a-z]+:\/\//i.test(b)||(b="file://"+b),"@media -sass-debug-info{filename{font-family:"+b.replace(/([.:\/\\])/g,function(a){return"\\"==a&&(a="/"),"\\"+a})+"}line{font-family:\\00003"+a.debugInfo.lineNumber+"}}\n"},b.exports=d},{}],55:[function(a,b,c){var d=a("./node"),e=a("../contexts"),f=function(a,b){this.ruleset=a,this.frames=b};f.prototype=new d,f.prototype.type="DetachedRuleset",f.prototype.evalFirst=!0,f.prototype.accept=function(a){this.ruleset=a.visit(this.ruleset)},f.prototype.eval=function(a){var b=this.frames||a.frames.slice(0);return new f(this.ruleset,b)},f.prototype.callEval=function(a){return this.ruleset.eval(this.frames?new e.Eval(a,this.frames.concat(a.frames)):a)},b.exports=f},{"../contexts":11,"./node":70}],56:[function(a,b,c){var d=a("./node"),e=a("../data/unit-conversions"),f=a("./unit"),g=a("./color"),h=function(a,b){this.value=parseFloat(a),this.unit=b&&b instanceof f?b:new f(b?[b]:void 0)};h.prototype=new d,h.prototype.type="Dimension",h.prototype.accept=function(a){this.unit=a.visit(this.unit)},h.prototype.eval=function(a){return this},h.prototype.toColor=function(){return new g([this.value,this.value,this.value])},h.prototype.genCSS=function(a,b){if(a&&a.strictUnits&&!this.unit.isSingular())throw new Error("Multiple units in dimension. Correct the units or use the unit function. Bad unit: "+this.unit.toString());var c=this.fround(a,this.value),d=String(c);if(0!==c&&1e-6>c&&c>-1e-6&&(d=c.toFixed(20).replace(/0+$/,"")),a&&a.compress){if(0===c&&this.unit.isLength())return void b.add(d);c>0&&1>c&&(d=d.substr(1))}b.add(d),this.unit.genCSS(a,b)},h.prototype.operate=function(a,b,c){var d=this._operate(a,b,this.value,c.value),e=this.unit.clone();if("+"===b||"-"===b)if(0===e.numerator.length&&0===e.denominator.length)e=c.unit.clone(),this.unit.backupUnit&&(e.backupUnit=this.unit.backupUnit);else if(0===c.unit.numerator.length&&0===e.denominator.length);else{if(c=c.convertTo(this.unit.usedUnits()),a.strictUnits&&c.unit.toString()!==e.toString())throw new Error("Incompatible units. Change the units or use the unit function. Bad units: '"+e.toString()+"' and '"+c.unit.toString()+"'.");d=this._operate(a,b,this.value,c.value)}else"*"===b?(e.numerator=e.numerator.concat(c.unit.numerator).sort(),e.denominator=e.denominator.concat(c.unit.denominator).sort(),e.cancel()):"/"===b&&(e.numerator=e.numerator.concat(c.unit.denominator).sort(),e.denominator=e.denominator.concat(c.unit.numerator).sort(),e.cancel());return new h(d,e)},h.prototype.compare=function(a){var b,c;if(a instanceof h){if(this.unit.isEmpty()||a.unit.isEmpty())b=this,c=a;else if(b=this.unify(),c=a.unify(),0!==b.unit.compare(c.unit))return;return d.numericCompare(b.value,c.value)}},h.prototype.unify=function(){return this.convertTo({length:"px",duration:"s",angle:"rad"})},h.prototype.convertTo=function(a){var b,c,d,f,g,i=this.value,j=this.unit.clone(),k={};if("string"==typeof a){for(b in e)e[b].hasOwnProperty(a)&&(k={},k[b]=a);a=k}g=function(a,b){return d.hasOwnProperty(a)?(b?i/=d[a]/d[f]:i*=d[a]/d[f],f):a};for(c in a)a.hasOwnProperty(c)&&(f=a[c],d=e[c],j.map(g));return j.cancel(),new h(i,j)},b.exports=h},{"../data/unit-conversions":14,"./color":50,"./node":70,"./unit":79}],57:[function(a,b,c){var d=a("./node"),e=a("./selector"),f=a("./ruleset"),g=function(a,b,c,d,f,g,h,i){var j;if(this.name=a,this.value=b,c)for(Array.isArray(c)?this.rules=c:(this.rules=[c],this.rules[0].selectors=new e([],null,null,this.index,f).createEmptySelectors()),j=0;this.rules.length>j;j++)this.rules[j].allowImports=!0;this.index=d,this.currentFileInfo=f,this.debugInfo=g,this.isRooted=h||!1,this.copyVisibilityInfo(i),this.allowRoot=!0};g.prototype=new d,g.prototype.type="Directive",g.prototype.accept=function(a){var b=this.value,c=this.rules;c&&(this.rules=a.visitArray(c)),b&&(this.value=a.visit(b))},g.prototype.isRulesetLike=function(){return this.rules||!this.isCharset()},g.prototype.isCharset=function(){return"@charset"===this.name},g.prototype.genCSS=function(a,b){var c=this.value,d=this.rules;b.add(this.name,this.currentFileInfo,this.index),c&&(b.add(" "),c.genCSS(a,b)),d?this.outputRuleset(a,b,d):b.add(";")},g.prototype.eval=function(a){var b,c,d=this.value,e=this.rules;return b=a.mediaPath,c=a.mediaBlocks,a.mediaPath=[],a.mediaBlocks=[],d&&(d=d.eval(a)),e&&(e=[e[0].eval(a)],e[0].root=!0),a.mediaPath=b,a.mediaBlocks=c,new g(this.name,d,e,this.index,this.currentFileInfo,this.debugInfo,this.isRooted,this.visibilityInfo())},g.prototype.variable=function(a){return this.rules?f.prototype.variable.call(this.rules[0],a):void 0},g.prototype.find=function(){return this.rules?f.prototype.find.apply(this.rules[0],arguments):void 0},g.prototype.rulesets=function(){return this.rules?f.prototype.rulesets.apply(this.rules[0]):void 0},g.prototype.outputRuleset=function(a,b,c){var d,e=c.length;if(a.tabLevel=(0|a.tabLevel)+1,a.compress){for(b.add("{"),d=0;e>d;d++)c[d].genCSS(a,b);return b.add("}"),void a.tabLevel--}var f="\n"+Array(a.tabLevel).join(" "),g=f+" ";if(e){for(b.add(" {"+g),c[0].genCSS(a,b),d=1;e>d;d++)b.add(g),c[d].genCSS(a,b);b.add(f+"}")}else b.add(" {"+f+"}");a.tabLevel--},b.exports=g},{"./node":70,"./ruleset":76,"./selector":77}],58:[function(a,b,c){var d=a("./node"),e=a("./paren"),f=a("./combinator"),g=function(a,b,c,d,e){this.combinator=a instanceof f?a:new f(a),this.value="string"==typeof b?b.trim():b?b:"",this.index=c,this.currentFileInfo=d,this.copyVisibilityInfo(e)};g.prototype=new d,g.prototype.type="Element",g.prototype.accept=function(a){var b=this.value;this.combinator=a.visit(this.combinator),"object"==typeof b&&(this.value=a.visit(b))},g.prototype.eval=function(a){return new g(this.combinator,this.value.eval?this.value.eval(a):this.value,this.index,this.currentFileInfo,this.visibilityInfo())},g.prototype.clone=function(){return new g(this.combinator,this.value,this.index,this.currentFileInfo,this.visibilityInfo())},g.prototype.genCSS=function(a,b){b.add(this.toCSS(a),this.currentFileInfo,this.index)},g.prototype.toCSS=function(a){a=a||{};var b=this.value,c=a.firstSelector;return b instanceof e&&(a.firstSelector=!0),b=b.toCSS?b.toCSS(a):b,a.firstSelector=c,""===b&&"&"===this.combinator.value.charAt(0)?"":this.combinator.toCSS(a)+b},b.exports=g},{"./combinator":51,"./node":70,"./paren":72}],59:[function(a,b,c){var d=a("./node"),e=a("./paren"),f=a("./comment"),g=function(a){if(this.value=a,!a)throw new Error("Expression requires an array parameter")};g.prototype=new d,g.prototype.type="Expression",g.prototype.accept=function(a){this.value=a.visitArray(this.value)},g.prototype.eval=function(a){var b,c=this.parens&&!this.parensInOp,d=!1;return c&&a.inParenthesis(),this.value.length>1?b=new g(this.value.map(function(b){return b.eval(a)})):1===this.value.length?(this.value[0].parens&&!this.value[0].parensInOp&&(d=!0),b=this.value[0].eval(a)):b=this,c&&a.outOfParenthesis(),this.parens&&this.parensInOp&&!a.isMathOn()&&!d&&(b=new e(b)),b},g.prototype.genCSS=function(a,b){for(var c=0;this.value.length>c;c++)this.value[c].genCSS(a,b),this.value.length>c+1&&b.add(" ")},g.prototype.throwAwayComments=function(){this.value=this.value.filter(function(a){return!(a instanceof f)})},b.exports=g},{"./comment":52,"./node":70,"./paren":72}],60:[function(a,b,c){var d=a("./node"),e=a("./selector"),f=function g(a,b,c,d,e){switch(this.selector=a,this.option=b,this.index=c,this.object_id=g.next_id++,this.parent_ids=[this.object_id],this.currentFileInfo=d||{},this.copyVisibilityInfo(e),this.allowRoot=!0,b){case"all":this.allowBefore=!0,this.allowAfter=!0;break;default:this.allowBefore=!1,this.allowAfter=!1}};f.next_id=0,f.prototype=new d,f.prototype.type="Extend",f.prototype.accept=function(a){this.selector=a.visit(this.selector)},f.prototype.eval=function(a){return new f(this.selector.eval(a),this.option,this.index,this.currentFileInfo,this.visibilityInfo())},f.prototype.clone=function(a){return new f(this.selector,this.option,this.index,this.currentFileInfo,this.visibilityInfo())},f.prototype.findSelfSelectors=function(a){var b,c,d=[];for(b=0;a.length>b;b++)c=a[b].elements,b>0&&c.length&&""===c[0].combinator.value&&(c[0].combinator.value=" "),d=d.concat(a[b].elements);this.selfSelectors=[new e(d)],this.selfSelectors[0].copyVisibilityInfo(this.visibilityInfo())},b.exports=f},{"./node":70,"./selector":77}],61:[function(a,b,c){var d=a("./node"),e=a("./media"),f=a("./url"),g=a("./quoted"),h=a("./ruleset"),i=a("./anonymous"),j=function(a,b,c,d,e,f){if(this.options=c,this.index=d,this.path=a,this.features=b,this.currentFileInfo=e,this.allowRoot=!0,void 0!==this.options.less||this.options.inline)this.css=!this.options.less||this.options.inline;else{var g=this.getPath();g&&/[#\.\&\?\/]css([\?;].*)?$/.test(g)&&(this.css=!0)}this.copyVisibilityInfo(f)};j.prototype=new d,j.prototype.type="Import",j.prototype.accept=function(a){this.features&&(this.features=a.visit(this.features)),this.path=a.visit(this.path),this.options.plugin||this.options.inline||!this.root||(this.root=a.visit(this.root))},j.prototype.genCSS=function(a,b){this.css&&void 0===this.path.currentFileInfo.reference&&(b.add("@import ",this.currentFileInfo,this.index),this.path.genCSS(a,b),this.features&&(b.add(" "),this.features.genCSS(a,b)),b.add(";"))},j.prototype.getPath=function(){return this.path instanceof f?this.path.value.value:this.path.value},j.prototype.isVariableImport=function(){var a=this.path;return a instanceof f&&(a=a.value),a instanceof g?a.containsVariables():!0},j.prototype.evalForImport=function(a){var b=this.path;return b instanceof f&&(b=b.value),new j(b.eval(a),this.features,this.options,this.index,this.currentFileInfo,this.visibilityInfo())},j.prototype.evalPath=function(a){var b=this.path.eval(a),c=this.currentFileInfo&&this.currentFileInfo.rootpath;if(!(b instanceof f)){if(c){var d=b.value;d&&a.isPathRelative(d)&&(b.value=c+d)}b.value=a.normalizePath(b.value)}return b},j.prototype.eval=function(a){var b=this.doEval(a);return(this.options.reference||this.blocksVisibility())&&(b.length||0===b.length?b.forEach(function(a){a.addVisibilityBlock()}):b.addVisibilityBlock()),b},j.prototype.doEval=function(a){var b,c,d=this.features&&this.features.eval(a);if(this.options.plugin)return c=a.frames[0]&&a.frames[0].functionRegistry,c&&this.root&&this.root.functions&&c.addMultiple(this.root.functions),[];if(this.skip&&("function"==typeof this.skip&&(this.skip=this.skip()),this.skip))return[];if(this.options.inline){var f=new i(this.root,0,{filename:this.importedFilename,reference:this.path.currentFileInfo&&this.path.currentFileInfo.reference},!0,!0);return this.features?new e([f],this.features.value):[f]}if(this.css){var g=new j(this.evalPath(a),d,this.options,this.index);if(!g.css&&this.error)throw this.error;return g}return b=new h(null,this.root.rules.slice(0)),b.evalImports(a),this.features?new e(b.rules,this.features.value):b.rules},b.exports=j},{"./anonymous":46,"./media":66,"./node":70,"./quoted":73,"./ruleset":76,"./url":80}],62:[function(a,b,c){var d={};d.Node=a("./node"),d.Alpha=a("./alpha"),d.Color=a("./color"),d.Directive=a("./directive"),d.DetachedRuleset=a("./detached-ruleset"),d.Operation=a("./operation"),d.Dimension=a("./dimension"),d.Unit=a("./unit"),d.Keyword=a("./keyword"),d.Variable=a("./variable"),d.Ruleset=a("./ruleset"),d.Element=a("./element"),d.Attribute=a("./attribute"),d.Combinator=a("./combinator"),d.Selector=a("./selector"),d.Quoted=a("./quoted"),d.Expression=a("./expression"),d.Rule=a("./rule"),d.Call=a("./call"),d.URL=a("./url"),d.Import=a("./import"),d.mixin={Call:a("./mixin-call"),Definition:a("./mixin-definition")},d.Comment=a("./comment"),d.Anonymous=a("./anonymous"),d.Value=a("./value"),d.JavaScript=a("./javascript"),d.Assignment=a("./assignment"),d.Condition=a("./condition"),d.Paren=a("./paren"),d.Media=a("./media"),d.UnicodeDescriptor=a("./unicode-descriptor"),d.Negative=a("./negative"),d.Extend=a("./extend"),d.RulesetCall=a("./ruleset-call"),b.exports=d},{"./alpha":45,"./anonymous":46,"./assignment":47,"./attribute":48,"./call":49,"./color":50,"./combinator":51,"./comment":52,"./condition":53,"./detached-ruleset":55,"./dimension":56,"./directive":57,"./element":58,"./expression":59,"./extend":60,"./import":61,"./javascript":63,"./keyword":65,"./media":66,"./mixin-call":67,"./mixin-definition":68,"./negative":69,"./node":70,"./operation":71,"./paren":72,"./quoted":73,"./rule":74,"./ruleset":76,"./ruleset-call":75,"./selector":77,"./unicode-descriptor":78,"./unit":79,"./url":80,"./value":81,"./variable":82}],63:[function(a,b,c){var d=a("./js-eval-node"),e=a("./dimension"),f=a("./quoted"),g=a("./anonymous"),h=function(a,b,c,d){this.escaped=b,this.expression=a,this.index=c,this.currentFileInfo=d};h.prototype=new d,h.prototype.type="JavaScript",h.prototype.eval=function(a){var b=this.evaluateJavaScript(this.expression,a);return"number"==typeof b?new e(b):"string"==typeof b?new f('"'+b+'"',b,this.escaped,this.index):new g(Array.isArray(b)?b.join(", "):b)},b.exports=h},{"./anonymous":46,"./dimension":56,"./js-eval-node":64,"./quoted":73}],64:[function(a,b,c){var d=a("./node"),e=a("./variable"),f=function(){};f.prototype=new d,f.prototype.evaluateJavaScript=function(a,b){var c,d=this,f={};if(void 0!==b.javascriptEnabled&&!b.javascriptEnabled)throw{message:"You are using JavaScript, which has been disabled.",filename:this.currentFileInfo.filename,index:this.index};a=a.replace(/@\{([\w-]+)\}/g,function(a,c){return d.jsify(new e("@"+c,d.index,d.currentFileInfo).eval(b))});try{a=new Function("return ("+a+")")}catch(g){throw{message:"JavaScript evaluation error: "+g.message+" from `"+a+"`",filename:this.currentFileInfo.filename,index:this.index}}var h=b.frames[0].variables();for(var i in h)h.hasOwnProperty(i)&&(f[i.slice(1)]={value:h[i].value,toJS:function(){return this.value.eval(b).toCSS()}});try{c=a.call(f)}catch(g){throw{message:"JavaScript evaluation error: '"+g.name+": "+g.message.replace(/["]/g,"'")+"'",filename:this.currentFileInfo.filename,index:this.index}}return c},f.prototype.jsify=function(a){return Array.isArray(a.value)&&a.value.length>1?"["+a.value.map(function(a){return a.toCSS()}).join(", ")+"]":a.toCSS()},b.exports=f},{"./node":70,"./variable":82}],65:[function(a,b,c){var d=a("./node"),e=function(a){this.value=a};e.prototype=new d,e.prototype.type="Keyword",e.prototype.genCSS=function(a,b){if("%"===this.value)throw{type:"Syntax",message:"Invalid % without number"};b.add(this.value)},e.True=new e("true"),e.False=new e("false"),b.exports=e},{"./node":70}],66:[function(a,b,c){var d=a("./ruleset"),e=a("./value"),f=a("./selector"),g=a("./anonymous"),h=a("./expression"),i=a("./directive"),j=function(a,b,c,g,h){this.index=c,this.currentFileInfo=g;var i=new f([],null,null,this.index,this.currentFileInfo).createEmptySelectors();this.features=new e(b),this.rules=[new d(i,a)],this.rules[0].allowImports=!0,this.copyVisibilityInfo(h),this.allowRoot=!0};j.prototype=new i,j.prototype.type="Media",j.prototype.isRulesetLike=!0,j.prototype.accept=function(a){this.features&&(this.features=a.visit(this.features)),this.rules&&(this.rules=a.visitArray(this.rules))},j.prototype.genCSS=function(a,b){b.add("@media ",this.currentFileInfo,this.index),this.features.genCSS(a,b),this.outputRuleset(a,b,this.rules)},j.prototype.eval=function(a){a.mediaBlocks||(a.mediaBlocks=[],a.mediaPath=[]);var b=new j(null,[],this.index,this.currentFileInfo,this.visibilityInfo());this.debugInfo&&(this.rules[0].debugInfo=this.debugInfo,b.debugInfo=this.debugInfo);var c=!1;a.strictMath||(c=!0,a.strictMath=!0);try{b.features=this.features.eval(a)}finally{c&&(a.strictMath=!1)}return a.mediaPath.push(b),a.mediaBlocks.push(b),this.rules[0].functionRegistry=a.frames[0].functionRegistry.inherit(),a.frames.unshift(this.rules[0]),b.rules=[this.rules[0].eval(a)],a.frames.shift(),a.mediaPath.pop(),0===a.mediaPath.length?b.evalTop(a):b.evalNested(a)},j.prototype.evalTop=function(a){var b=this;if(a.mediaBlocks.length>1){var c=new f([],null,null,this.index,this.currentFileInfo).createEmptySelectors();b=new d(c,a.mediaBlocks),b.multiMedia=!0,b.copyVisibilityInfo(this.visibilityInfo())}return delete a.mediaBlocks,delete a.mediaPath,b},j.prototype.evalNested=function(a){var b,c,f=a.mediaPath.concat([this]);for(b=0;f.length>b;b++)c=f[b].features instanceof e?f[b].features.value:f[b].features,f[b]=Array.isArray(c)?c:[c];return this.features=new e(this.permute(f).map(function(a){for(a=a.map(function(a){return a.toCSS?a:new g(a)}),b=a.length-1;b>0;b--)a.splice(b,0,new g("and"));return new h(a)})),new d([],[])},j.prototype.permute=function(a){if(0===a.length)return[];if(1===a.length)return a[0];for(var b=[],c=this.permute(a.slice(1)),d=0;c.length>d;d++)for(var e=0;a[0].length>e;e++)b.push([a[0][e]].concat(c[d]));return b},j.prototype.bubbleSelectors=function(a){a&&(this.rules=[new d(a.slice(0),[this.rules[0]])])},b.exports=j},{"./anonymous":46,"./directive":57,"./expression":59,"./ruleset":76,"./selector":77,"./value":81}],67:[function(a,b,c){var d=a("./node"),e=a("./selector"),f=a("./mixin-definition"),g=a("../functions/default"),h=function(a,b,c,d,f){this.selector=new e(a),this.arguments=b||[],this.index=c,this.currentFileInfo=d,this.important=f,this.allowRoot=!0};h.prototype=new d,h.prototype.type="MixinCall",h.prototype.accept=function(a){this.selector&&(this.selector=a.visit(this.selector)),this.arguments.length&&(this.arguments=a.visitArray(this.arguments))},h.prototype.eval=function(a){function b(b,c){var d,e,f;for(d=0;2>d;d++){for(x[d]=!0,g.value(d),e=0;c.length>e&&x[d];e++)f=c[e],f.matchCondition&&(x[d]=x[d]&&f.matchCondition(null,a));b.matchCondition&&(x[d]=x[d]&&b.matchCondition(t,a))}return x[0]||x[1]?x[0]!=x[1]?x[1]?A:B:z:y}var c,d,e,h,i,j,k,l,m,n,o,p,q,r,s,t=[],u=[],v=!1,w=[],x=[],y=-1,z=0,A=1,B=2;for(j=0;this.arguments.length>j;j++)if(h=this.arguments[j],i=h.value.eval(a),h.expand&&Array.isArray(i.value))for(i=i.value,k=0;i.length>k;k++)t.push({value:i[k]});else t.push({name:h.name,value:i});for(s=function(b){return b.matchArgs(null,a)},j=0;a.frames.length>j;j++)if((c=a.frames[j].find(this.selector,null,s)).length>0){for(n=!0,k=0;c.length>k;k++){for(d=c[k].rule,e=c[k].path,m=!1,l=0;a.frames.length>l;l++)if(!(d instanceof f)&&d===(a.frames[l].originalRuleset||a.frames[l])){m=!0;break}m||d.matchArgs(t,a)&&(o={mixin:d,group:b(d,e)},o.group!==y&&w.push(o),v=!0)}for(g.reset(),q=[0,0,0],k=0;w.length>k;k++)q[w[k].group]++;if(q[z]>0)p=B;else if(p=A,q[A]+q[B]>1)throw{type:"Runtime",message:"Ambiguous use of `default()` found when matching for `"+this.format(t)+"`",index:this.index,filename:this.currentFileInfo.filename};for(k=0;w.length>k;k++)if(o=w[k].group,o===z||o===p)try{d=w[k].mixin,d instanceof f||(r=d.originalRuleset||d,d=new f("",[],d.rules,null,!1,null,r.visibilityInfo()),d.originalRuleset=r);var C=d.evalCall(a,t,this.important).rules; this._setVisibilityToReplacement(C),Array.prototype.push.apply(u,C)}catch(D){throw{message:D.message,index:this.index,filename:this.currentFileInfo.filename,stack:D.stack}}if(v)return u}throw n?{type:"Runtime",message:"No matching definition was found for `"+this.format(t)+"`",index:this.index,filename:this.currentFileInfo.filename}:{type:"Name",message:this.selector.toCSS().trim()+" is undefined",index:this.index,filename:this.currentFileInfo.filename}},h.prototype._setVisibilityToReplacement=function(a){var b,c;if(this.blocksVisibility())for(b=0;a.length>b;b++)c=a[b],c.addVisibilityBlock()},h.prototype.format=function(a){return this.selector.toCSS().trim()+"("+(a?a.map(function(a){var b="";return a.name&&(b+=a.name+":"),b+=a.value.toCSS?a.value.toCSS():"???"}).join(", "):"")+")"},b.exports=h},{"../functions/default":20,"./mixin-definition":68,"./node":70,"./selector":77}],68:[function(a,b,c){var d=a("./selector"),e=a("./element"),f=a("./ruleset"),g=a("./rule"),h=a("./expression"),i=a("../contexts"),j=function(a,b,c,f,g,h,i){this.name=a,this.selectors=[new d([new e(null,a,this.index,this.currentFileInfo)])],this.params=b,this.condition=f,this.variadic=g,this.arity=b.length,this.rules=c,this._lookups={};var j=[];this.required=b.reduce(function(a,b){return!b.name||b.name&&!b.value?a+1:(j.push(b.name),a)},0),this.optionalParameters=j,this.frames=h,this.copyVisibilityInfo(i),this.allowRoot=!0};j.prototype=new f,j.prototype.type="MixinDefinition",j.prototype.evalFirst=!0,j.prototype.accept=function(a){this.params&&this.params.length&&(this.params=a.visitArray(this.params)),this.rules=a.visitArray(this.rules),this.condition&&(this.condition=a.visit(this.condition))},j.prototype.evalParams=function(a,b,c,d){var e,j,k,l,m,n,o,p,q=new f(null,null),r=this.params.slice(0),s=0;if(b.frames&&b.frames[0]&&b.frames[0].functionRegistry&&(q.functionRegistry=b.frames[0].functionRegistry.inherit()),b=new i.Eval(b,[q].concat(b.frames)),c)for(c=c.slice(0),s=c.length,k=0;s>k;k++)if(j=c[k],n=j&&j.name){for(o=!1,l=0;r.length>l;l++)if(!d[l]&&n===r[l].name){d[l]=j.value.eval(a),q.prependRule(new g(n,j.value.eval(a))),o=!0;break}if(o){c.splice(k,1),k--;continue}throw{type:"Runtime",message:"Named argument for "+this.name+" "+c[k].name+" not found"}}for(p=0,k=0;r.length>k;k++)if(!d[k]){if(j=c&&c[p],n=r[k].name)if(r[k].variadic){for(e=[],l=p;s>l;l++)e.push(c[l].value.eval(a));q.prependRule(new g(n,new h(e).eval(a)))}else{if(m=j&&j.value)m=m.eval(a);else{if(!r[k].value)throw{type:"Runtime",message:"wrong number of arguments for "+this.name+" ("+s+" for "+this.arity+")"};m=r[k].value.eval(b),q.resetCache()}q.prependRule(new g(n,m)),d[k]=m}if(r[k].variadic&&c)for(l=p;s>l;l++)d[l]=c[l].value.eval(a);p++}return q},j.prototype.makeImportant=function(){var a=this.rules?this.rules.map(function(a){return a.makeImportant?a.makeImportant(!0):a}):this.rules,b=new j(this.name,this.params,a,this.condition,this.variadic,this.frames);return b},j.prototype.eval=function(a){return new j(this.name,this.params,this.rules,this.condition,this.variadic,this.frames||a.frames.slice(0))},j.prototype.evalCall=function(a,b,c){var d,e,j=[],k=this.frames?this.frames.concat(a.frames):a.frames,l=this.evalParams(a,new i.Eval(a,k),b,j);return l.prependRule(new g("@arguments",new h(j).eval(a))),d=this.rules.slice(0),e=new f(null,d),e.originalRuleset=this,e=e.eval(new i.Eval(a,[this,l].concat(k))),c&&(e=e.makeImportant()),e},j.prototype.matchCondition=function(a,b){return!this.condition||this.condition.eval(new i.Eval(b,[this.evalParams(b,new i.Eval(b,this.frames?this.frames.concat(b.frames):b.frames),a,[])].concat(this.frames||[]).concat(b.frames)))},j.prototype.matchArgs=function(a,b){var c,d=a&&a.length||0,e=this.optionalParameters,f=a?a.reduce(function(a,b){return e.indexOf(b.name)<0?a+1:a},0):0;if(this.variadic){if(this.required-1>f)return!1}else{if(this.required>f)return!1;if(d>this.params.length)return!1}c=Math.min(f,this.arity);for(var g=0;c>g;g++)if(!this.params[g].name&&!this.params[g].variadic&&a[g].value.eval(b).toCSS()!=this.params[g].value.eval(b).toCSS())return!1;return!0},b.exports=j},{"../contexts":11,"./element":58,"./expression":59,"./rule":74,"./ruleset":76,"./selector":77}],69:[function(a,b,c){var d=a("./node"),e=a("./operation"),f=a("./dimension"),g=function(a){this.value=a};g.prototype=new d,g.prototype.type="Negative",g.prototype.genCSS=function(a,b){b.add("-"),this.value.genCSS(a,b)},g.prototype.eval=function(a){return a.isMathOn()?new e("*",[new f(-1),this.value]).eval(a):new g(this.value.eval(a))},b.exports=g},{"./dimension":56,"./node":70,"./operation":71}],70:[function(a,b,c){var d=function(){};d.prototype.toCSS=function(a){var b=[];return this.genCSS(a,{add:function(a,c,d){b.push(a)},isEmpty:function(){return 0===b.length}}),b.join("")},d.prototype.genCSS=function(a,b){b.add(this.value)},d.prototype.accept=function(a){this.value=a.visit(this.value)},d.prototype.eval=function(){return this},d.prototype._operate=function(a,b,c,d){switch(b){case"+":return c+d;case"-":return c-d;case"*":return c*d;case"/":return c/d}},d.prototype.fround=function(a,b){var c=a&&a.numPrecision;return null==c?b:Number((b+2e-16).toFixed(c))},d.compare=function(a,b){if(a.compare&&"Quoted"!==b.type&&"Anonymous"!==b.type)return a.compare(b);if(b.compare)return-b.compare(a);if(a.type===b.type){if(a=a.value,b=b.value,!Array.isArray(a))return a===b?0:void 0;if(a.length===b.length){for(var c=0;a.length>c;c++)if(0!==d.compare(a[c],b[c]))return;return 0}}},d.numericCompare=function(a,b){return b>a?-1:a===b?0:a>b?1:void 0},d.prototype.blocksVisibility=function(){return null==this.visibilityBlocks&&(this.visibilityBlocks=0),0!==this.visibilityBlocks},d.prototype.addVisibilityBlock=function(){null==this.visibilityBlocks&&(this.visibilityBlocks=0),this.visibilityBlocks=this.visibilityBlocks+1},d.prototype.removeVisibilityBlock=function(){null==this.visibilityBlocks&&(this.visibilityBlocks=0),this.visibilityBlocks=this.visibilityBlocks-1},d.prototype.ensureVisibility=function(){this.nodeVisible=!0},d.prototype.ensureInvisibility=function(){this.nodeVisible=!1},d.prototype.isVisible=function(){return this.nodeVisible},d.prototype.visibilityInfo=function(){return{visibilityBlocks:this.visibilityBlocks,nodeVisible:this.nodeVisible}},d.prototype.copyVisibilityInfo=function(a){a&&(this.visibilityBlocks=a.visibilityBlocks,this.nodeVisible=a.nodeVisible)},b.exports=d},{}],71:[function(a,b,c){var d=a("./node"),e=a("./color"),f=a("./dimension"),g=function(a,b,c){this.op=a.trim(),this.operands=b,this.isSpaced=c};g.prototype=new d,g.prototype.type="Operation",g.prototype.accept=function(a){this.operands=a.visit(this.operands)},g.prototype.eval=function(a){var b=this.operands[0].eval(a),c=this.operands[1].eval(a);if(a.isMathOn()){if(b instanceof f&&c instanceof e&&(b=b.toColor()),c instanceof f&&b instanceof e&&(c=c.toColor()),!b.operate)throw{type:"Operation",message:"Operation on an invalid type"};return b.operate(a,this.op,c)}return new g(this.op,[b,c],this.isSpaced)},g.prototype.genCSS=function(a,b){this.operands[0].genCSS(a,b),this.isSpaced&&b.add(" "),b.add(this.op),this.isSpaced&&b.add(" "),this.operands[1].genCSS(a,b)},b.exports=g},{"./color":50,"./dimension":56,"./node":70}],72:[function(a,b,c){var d=a("./node"),e=function(a){this.value=a};e.prototype=new d,e.prototype.type="Paren",e.prototype.genCSS=function(a,b){b.add("("),this.value.genCSS(a,b),b.add(")")},e.prototype.eval=function(a){return new e(this.value.eval(a))},b.exports=e},{"./node":70}],73:[function(a,b,c){var d=a("./node"),e=a("./js-eval-node"),f=a("./variable"),g=function(a,b,c,d,e){this.escaped=null==c?!0:c,this.value=b||"",this.quote=a.charAt(0),this.index=d,this.currentFileInfo=e};g.prototype=new e,g.prototype.type="Quoted",g.prototype.genCSS=function(a,b){this.escaped||b.add(this.quote,this.currentFileInfo,this.index),b.add(this.value),this.escaped||b.add(this.quote)},g.prototype.containsVariables=function(){return this.value.match(/(`([^`]+)`)|@\{([\w-]+)\}/)},g.prototype.eval=function(a){function b(a,b,c){var d=a;do a=d,d=a.replace(b,c);while(a!==d);return d}var c=this,d=this.value,e=function(b,d){return String(c.evaluateJavaScript(d,a))},h=function(b,d){var e=new f("@"+d,c.index,c.currentFileInfo).eval(a,!0);return e instanceof g?e.value:e.toCSS()};return d=b(d,/`([^`]+)`/g,e),d=b(d,/@\{([\w-]+)\}/g,h),new g(this.quote+d+this.quote,d,this.escaped,this.index,this.currentFileInfo)},g.prototype.compare=function(a){return"Quoted"!==a.type||this.escaped||a.escaped?a.toCSS&&this.toCSS()===a.toCSS()?0:void 0:d.numericCompare(this.value,a.value)},b.exports=g},{"./js-eval-node":64,"./node":70,"./variable":82}],74:[function(a,b,c){function d(a,b){var c,d="",e=b.length,f={add:function(a){d+=a}};for(c=0;e>c;c++)b[c].eval(a).genCSS(a,f);return d}var e=a("./node"),f=a("./value"),g=a("./keyword"),h=function(a,b,c,d,g,h,i,j){this.name=a,this.value=b instanceof e?b:new f([b]),this.important=c?" "+c.trim():"",this.merge=d,this.index=g,this.currentFileInfo=h,this.inline=i||!1,this.variable=void 0!==j?j:a.charAt&&"@"===a.charAt(0),this.allowRoot=!0};h.prototype=new e,h.prototype.type="Rule",h.prototype.genCSS=function(a,b){b.add(this.name+(a.compress?":":": "),this.currentFileInfo,this.index);try{this.value.genCSS(a,b)}catch(c){throw c.index=this.index,c.filename=this.currentFileInfo.filename,c}b.add(this.important+(this.inline||a.lastRule&&a.compress?"":";"),this.currentFileInfo,this.index)},h.prototype.eval=function(a){var b,c=!1,e=this.name,f=this.variable;"string"!=typeof e&&(e=1===e.length&&e[0]instanceof g?e[0].value:d(a,e),f=!1),"font"!==e||a.strictMath||(c=!0,a.strictMath=!0);try{if(a.importantScope.push({}),b=this.value.eval(a),!this.variable&&"DetachedRuleset"===b.type)throw{message:"Rulesets cannot be evaluated on a property.",index:this.index,filename:this.currentFileInfo.filename};var i=this.important,j=a.importantScope.pop();return!i&&j.important&&(i=j.important),new h(e,b,i,this.merge,this.index,this.currentFileInfo,this.inline,f)}catch(k){throw"number"!=typeof k.index&&(k.index=this.index,k.filename=this.currentFileInfo.filename),k}finally{c&&(a.strictMath=!1)}},h.prototype.makeImportant=function(){return new h(this.name,this.value,"!important",this.merge,this.index,this.currentFileInfo,this.inline)},b.exports=h},{"./keyword":65,"./node":70,"./value":81}],75:[function(a,b,c){var d=a("./node"),e=a("./variable"),f=function(a){this.variable=a,this.allowRoot=!0};f.prototype=new d,f.prototype.type="RulesetCall",f.prototype.eval=function(a){var b=new e(this.variable).eval(a);return b.callEval(a)},b.exports=f},{"./node":70,"./variable":82}],76:[function(a,b,c){var d=a("./node"),e=a("./rule"),f=a("./selector"),g=a("./element"),h=a("./paren"),i=a("../contexts"),j=a("../functions/function-registry"),k=a("../functions/default"),l=a("./debug-info"),m=function(a,b,c,d){this.selectors=a,this.rules=b,this._lookups={},this.strictImports=c,this.copyVisibilityInfo(d),this.allowRoot=!0};m.prototype=new d,m.prototype.type="Ruleset",m.prototype.isRuleset=!0,m.prototype.isRulesetLike=!0,m.prototype.accept=function(a){this.paths?this.paths=a.visitArray(this.paths,!0):this.selectors&&(this.selectors=a.visitArray(this.selectors)),this.rules&&this.rules.length&&(this.rules=a.visitArray(this.rules))},m.prototype.eval=function(a){var b,c,d,f,g=this.selectors,h=!1;if(g&&(c=g.length)){for(b=[],k.error({type:"Syntax",message:"it is currently only allowed in parametric mixin guards,"}),f=0;c>f;f++)d=g[f].eval(a),b.push(d),d.evaldCondition&&(h=!0);k.reset()}else h=!0;var i,l,n=this.rules?this.rules.slice(0):null,o=new m(b,n,this.strictImports,this.visibilityInfo());o.originalRuleset=this,o.root=this.root,o.firstRoot=this.firstRoot,o.allowImports=this.allowImports,this.debugInfo&&(o.debugInfo=this.debugInfo),h||(n.length=0),o.functionRegistry=function(a){for(var b,c=0,d=a.length;c!==d;++c)if(b=a[c].functionRegistry)return b;return j}(a.frames).inherit();var p=a.frames;p.unshift(o);var q=a.selectors;q||(a.selectors=q=[]),q.unshift(this.selectors),(o.root||o.allowImports||!o.strictImports)&&o.evalImports(a);var r=o.rules,s=r?r.length:0;for(f=0;s>f;f++)r[f].evalFirst&&(r[f]=r[f].eval(a));var t=a.mediaBlocks&&a.mediaBlocks.length||0;for(f=0;s>f;f++)"MixinCall"===r[f].type?(n=r[f].eval(a).filter(function(a){return a instanceof e&&a.variable?!o.variable(a.name):!0}),r.splice.apply(r,[f,1].concat(n)),s+=n.length-1,f+=n.length-1,o.resetCache()):"RulesetCall"===r[f].type&&(n=r[f].eval(a).rules.filter(function(a){return!(a instanceof e&&a.variable)}),r.splice.apply(r,[f,1].concat(n)),s+=n.length-1,f+=n.length-1,o.resetCache());for(f=0;r.length>f;f++)i=r[f],i.evalFirst||(r[f]=i=i.eval?i.eval(a):i);for(f=0;r.length>f;f++)if(i=r[f],i instanceof m&&i.selectors&&1===i.selectors.length&&i.selectors[0].isJustParentSelector()){r.splice(f--,1);for(var u=0;i.rules.length>u;u++)l=i.rules[u],l.copyVisibilityInfo(i.visibilityInfo()),l instanceof e&&l.variable||r.splice(++f,0,l)}if(p.shift(),q.shift(),a.mediaBlocks)for(f=t;a.mediaBlocks.length>f;f++)a.mediaBlocks[f].bubbleSelectors(b);return o},m.prototype.evalImports=function(a){var b,c,d=this.rules;if(d)for(b=0;d.length>b;b++)"Import"===d[b].type&&(c=d[b].eval(a),c&&(c.length||0===c.length)?(d.splice.apply(d,[b,1].concat(c)),b+=c.length-1):d.splice(b,1,c),this.resetCache())},m.prototype.makeImportant=function(){var a=new m(this.selectors,this.rules.map(function(a){return a.makeImportant?a.makeImportant():a}),this.strictImports,this.visibilityInfo());return a},m.prototype.matchArgs=function(a){return!a||0===a.length},m.prototype.matchCondition=function(a,b){var c=this.selectors[this.selectors.length-1];return c.evaldCondition?!c.condition||c.condition.eval(new i.Eval(b,b.frames)):!1},m.prototype.resetCache=function(){this._rulesets=null,this._variables=null,this._lookups={}},m.prototype.variables=function(){return this._variables||(this._variables=this.rules?this.rules.reduce(function(a,b){if(b instanceof e&&b.variable===!0&&(a[b.name]=b),"Import"===b.type&&b.root&&b.root.variables){var c=b.root.variables();for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}return a},{}):{}),this._variables},m.prototype.variable=function(a){return this.variables()[a]},m.prototype.rulesets=function(){if(!this.rules)return[];var a,b,c=[],d=this.rules,e=d.length;for(a=0;e>a;a++)b=d[a],b.isRuleset&&c.push(b);return c},m.prototype.prependRule=function(a){var b=this.rules;b?b.unshift(a):this.rules=[a]},m.prototype.find=function(a,b,c){b=b||this;var d,e,g=[],h=a.toCSS();return h in this._lookups?this._lookups[h]:(this.rulesets().forEach(function(h){if(h!==b)for(var i=0;h.selectors.length>i;i++)if(d=a.match(h.selectors[i])){if(a.elements.length>d){if(!c||c(h)){e=h.find(new f(a.elements.slice(d)),b,c);for(var j=0;e.length>j;++j)e[j].path.push(h);Array.prototype.push.apply(g,e)}}else g.push({rule:h,path:[]});break}}),this._lookups[h]=g,g)},m.prototype.genCSS=function(a,b){function c(a){return"boolean"==typeof a.isRulesetLike?a.isRulesetLike:"function"==typeof a.isRulesetLike?a.isRulesetLike():!1}var d,e,f,g,h,i=[],j=[];a.tabLevel=a.tabLevel||0,this.root||a.tabLevel++;var k,m=a.compress?"":Array(a.tabLevel+1).join(" "),n=a.compress?"":Array(a.tabLevel).join(" "),o=0,p=0;for(d=0;this.rules.length>d;d++)g=this.rules[d],"Comment"===g.type?(p===d&&p++,j.push(g)):g.isCharset&&g.isCharset()?(j.splice(o,0,g),o++,p++):"Import"===g.type?(j.splice(p,0,g),p++):j.push(g);if(j=i.concat(j),!this.root){f=l(a,this,n),f&&(b.add(f),b.add(n));var q,r=this.paths,s=r.length;for(k=a.compress?",":",\n"+n,d=0;s>d;d++)if(h=r[d],q=h.length)for(d>0&&b.add(k),a.firstSelector=!0,h[0].genCSS(a,b),a.firstSelector=!1,e=1;q>e;e++)h[e].genCSS(a,b);b.add((a.compress?"{":" {\n")+m)}for(d=0;j.length>d;d++){g=j[d],d+1===j.length&&(a.lastRule=!0);var t=a.lastRule;c(g)&&(a.lastRule=!1),g.genCSS?g.genCSS(a,b):g.value&&b.add(g.value.toString()),a.lastRule=t,a.lastRule?a.lastRule=!1:b.add(a.compress?"":"\n"+m)}this.root||(b.add(a.compress?"}":"\n"+n+"}"),a.tabLevel--),b.isEmpty()||a.compress||!this.firstRoot||b.add("\n")},m.prototype.joinSelectors=function(a,b,c){for(var d=0;c.length>d;d++)this.joinSelector(a,b,c[d])},m.prototype.joinSelector=function(a,b,c){function d(a,b){var c,d;if(0===a.length)c=new h(a[0]);else{var e=[];for(d=0;a.length>d;d++)e.push(new g(null,a[d],b.index,b.currentFileInfo));c=new h(new f(e))}return c}function e(a,b){var c,d;return c=new g(null,a,b.index,b.currentFileInfo),d=new f([c])}function i(a,b,c,d){var e,f,h;if(e=[],a.length>0?(e=a.slice(0),f=e.pop(),h=d.createDerived(f.elements.slice(0))):h=d.createDerived([]),b.length>0){var i=c.combinator,j=b[0].elements[0];i.emptyOrWhitespace&&!j.combinator.emptyOrWhitespace&&(i=j.combinator),h.elements.push(new g(i,j.value,c.index,c.currentFileInfo)),h.elements=h.elements.concat(b[0].elements.slice(1))}if(0!==h.elements.length&&e.push(h),b.length>1){var k=b.slice(1);k=k.map(function(a){return a.createDerived(a.elements,[])}),e=e.concat(k)}return e}function j(a,b,c,d,e){var f;for(f=0;a.length>f;f++){var g=i(a[f],b,c,d);e.push(g)}return e}function k(a,b){var c,d;if(0!==a.length){if(0===b.length)return void b.push([new f(a)]);for(c=0;b.length>c;c++)d=b[c],d.length>0?d[d.length-1]=d[d.length-1].createDerived(d[d.length-1].elements.concat(a)):d.push(new f(a))}}function l(a,b,c){function f(a){var b;return"Paren"!==a.value.type?null:(b=a.value.value,"Selector"!==b.type?null:b)}var h,m,n,o,p,q,r,s,t,u,v=!1;for(o=[],p=[[]],h=0;c.elements.length>h;h++)if(s=c.elements[h],"&"!==s.value){var w=f(s);if(null!=w){k(o,p);var x,y=[],z=[];for(x=l(y,b,w),v=v||x,n=0;y.length>n;n++){var A=e(d(y[n],s),s);j(p,[A],s,c,z)}p=z,o=[]}else o.push(s)}else{for(v=!0,q=[],k(o,p),m=0;p.length>m;m++)if(r=p[m],0===b.length)r.length>0&&r[0].elements.push(new g(s.combinator,"",s.index,s.currentFileInfo)),q.push(r);else for(n=0;b.length>n;n++){var B=i(r,b[n],s,c);q.push(B)}p=q,o=[]}for(k(o,p),h=0;p.length>h;h++)t=p[h].length,t>0&&(a.push(p[h]),u=p[h][t-1],p[h][t-1]=u.createDerived(u.elements,c.extendList));return v}function m(a,b){var c=b.createDerived(b.elements,b.extendList,b.evaldCondition);return c.copyVisibilityInfo(a),c}var n,o,p;if(o=[],p=l(o,b,c),!p)if(b.length>0)for(o=[],n=0;b.length>n;n++){var q=b[n].map(m.bind(this,c.visibilityInfo()));q.push(c),o.push(q)}else o=[[c]];for(n=0;o.length>n;n++)a.push(o[n])},b.exports=m},{"../contexts":11,"../functions/default":20,"../functions/function-registry":22,"./debug-info":54,"./element":58,"./node":70,"./paren":72,"./rule":74,"./selector":77}],77:[function(a,b,c){var d=a("./node"),e=a("./element"),f=function(a,b,c,d,e,f){this.elements=a,this.extendList=b,this.condition=c,this.currentFileInfo=e||{},c||(this.evaldCondition=!0),this.copyVisibilityInfo(f)};f.prototype=new d,f.prototype.type="Selector",f.prototype.accept=function(a){this.elements&&(this.elements=a.visitArray(this.elements)),this.extendList&&(this.extendList=a.visitArray(this.extendList)),this.condition&&(this.condition=a.visit(this.condition))},f.prototype.createDerived=function(a,b,c){var d=this.visibilityInfo();c=null!=c?c:this.evaldCondition;var e=new f(a,b||this.extendList,null,this.index,this.currentFileInfo,d);return e.evaldCondition=c,e.mediaEmpty=this.mediaEmpty,e},f.prototype.createEmptySelectors=function(){var a=new e("","&",this.index,this.currentFileInfo),b=[new f([a],null,null,this.index,this.currentFileInfo)];return b[0].mediaEmpty=!0,b},f.prototype.match=function(a){var b,c,d=this.elements,e=d.length;if(a.CacheElements(),b=a._elements.length,0===b||b>e)return 0;for(c=0;b>c;c++)if(d[c].value!==a._elements[c])return 0;return b},f.prototype.CacheElements=function(){if(!this._elements){var a=this.elements.map(function(a){return a.combinator.value+(a.value.value||a.value)}).join("").match(/[,&#\*\.\w-]([\w-]|(\\.))*/g);a?"&"===a[0]&&a.shift():a=[],this._elements=a}},f.prototype.isJustParentSelector=function(){return!this.mediaEmpty&&1===this.elements.length&&"&"===this.elements[0].value&&(" "===this.elements[0].combinator.value||""===this.elements[0].combinator.value)},f.prototype.eval=function(a){var b=this.condition&&this.condition.eval(a),c=this.elements,d=this.extendList;return c=c&&c.map(function(b){return b.eval(a)}),d=d&&d.map(function(b){return b.eval(a)}),this.createDerived(c,d,b)},f.prototype.genCSS=function(a,b){var c,d;if(a&&a.firstSelector||""!==this.elements[0].combinator.value||b.add(" ",this.currentFileInfo,this.index),!this._css)for(c=0;this.elements.length>c;c++)d=this.elements[c],d.genCSS(a,b)},f.prototype.getIsOutput=function(){return this.evaldCondition},b.exports=f},{"./element":58,"./node":70}],78:[function(a,b,c){var d=a("./node"),e=function(a){this.value=a};e.prototype=new d,e.prototype.type="UnicodeDescriptor",b.exports=e},{"./node":70}],79:[function(a,b,c){var d=a("./node"),e=a("../data/unit-conversions"),f=function(a,b,c){this.numerator=a?a.slice(0).sort():[],this.denominator=b?b.slice(0).sort():[],c?this.backupUnit=c:a&&a.length&&(this.backupUnit=a[0])};f.prototype=new d,f.prototype.type="Unit",f.prototype.clone=function(){return new f(this.numerator.slice(0),this.denominator.slice(0),this.backupUnit)},f.prototype.genCSS=function(a,b){var c=a&&a.strictUnits;1===this.numerator.length?b.add(this.numerator[0]):!c&&this.backupUnit?b.add(this.backupUnit):!c&&this.denominator.length&&b.add(this.denominator[0])},f.prototype.toString=function(){var a,b=this.numerator.join("*");for(a=0;this.denominator.length>a;a++)b+="/"+this.denominator[a];return b},f.prototype.compare=function(a){return this.is(a.toString())?0:void 0},f.prototype.is=function(a){return this.toString().toUpperCase()===a.toUpperCase()},f.prototype.isLength=function(){return Boolean(this.toCSS().match(/px|em|%|in|cm|mm|pc|pt|ex/))},f.prototype.isEmpty=function(){return 0===this.numerator.length&&0===this.denominator.length},f.prototype.isSingular=function(){return 1>=this.numerator.length&&0===this.denominator.length},f.prototype.map=function(a){var b;for(b=0;this.numerator.length>b;b++)this.numerator[b]=a(this.numerator[b],!1);for(b=0;this.denominator.length>b;b++)this.denominator[b]=a(this.denominator[b],!0)},f.prototype.usedUnits=function(){var a,b,c,d={};b=function(b){return a.hasOwnProperty(b)&&!d[c]&&(d[c]=b),b};for(c in e)e.hasOwnProperty(c)&&(a=e[c],this.map(b));return d},f.prototype.cancel=function(){var a,b,c={};for(b=0;this.numerator.length>b;b++)a=this.numerator[b],c[a]=(c[a]||0)+1;for(b=0;this.denominator.length>b;b++)a=this.denominator[b],c[a]=(c[a]||0)-1;this.numerator=[],this.denominator=[];for(a in c)if(c.hasOwnProperty(a)){var d=c[a];if(d>0)for(b=0;d>b;b++)this.numerator.push(a);else if(0>d)for(b=0;-d>b;b++)this.denominator.push(a)}this.numerator.sort(),this.denominator.sort()},b.exports=f},{"../data/unit-conversions":14,"./node":70}],80:[function(a,b,c){var d=a("./node"),e=function(a,b,c,d){this.value=a,this.currentFileInfo=c,this.index=b,this.isEvald=d};e.prototype=new d,e.prototype.type="Url",e.prototype.accept=function(a){this.value=a.visit(this.value)},e.prototype.genCSS=function(a,b){b.add("url("),this.value.genCSS(a,b),b.add(")")},e.prototype.eval=function(a){var b,c=this.value.eval(a);if(!this.isEvald&&(b=this.currentFileInfo&&this.currentFileInfo.rootpath,b&&"string"==typeof c.value&&a.isPathRelative(c.value)&&(c.quote||(b=b.replace(/[\(\)'"\s]/g,function(a){return"\\"+a})),c.value=b+c.value),c.value=a.normalizePath(c.value),a.urlArgs&&!c.value.match(/^\s*data:/))){var d=-1===c.value.indexOf("?")?"?":"&",f=d+a.urlArgs;-1!==c.value.indexOf("#")?c.value=c.value.replace("#",f+"#"):c.value+=f}return new e(c,this.index,this.currentFileInfo,!0)},b.exports=e},{"./node":70}],81:[function(a,b,c){var d=a("./node"),e=function(a){if(this.value=a,!a)throw new Error("Value requires an array argument")};e.prototype=new d,e.prototype.type="Value",e.prototype.accept=function(a){this.value&&(this.value=a.visitArray(this.value))},e.prototype.eval=function(a){return 1===this.value.length?this.value[0].eval(a):new e(this.value.map(function(b){return b.eval(a)}))},e.prototype.genCSS=function(a,b){var c;for(c=0;this.value.length>c;c++)this.value[c].genCSS(a,b),this.value.length>c+1&&b.add(a&&a.compress?",":", ")},b.exports=e},{"./node":70}],82:[function(a,b,c){var d=a("./node"),e=function(a,b,c){this.name=a,this.index=b,this.currentFileInfo=c||{}};e.prototype=new d,e.prototype.type="Variable",e.prototype.eval=function(a){var b,c=this.name;if(0===c.indexOf("@@")&&(c="@"+new e(c.slice(1),this.index,this.currentFileInfo).eval(a).value),this.evaluating)throw{type:"Name",message:"Recursive variable definition for "+c,filename:this.currentFileInfo.filename,index:this.index};if(this.evaluating=!0,b=this.find(a.frames,function(b){var d=b.variable(c);if(d){if(d.important){var e=a.importantScope[a.importantScope.length-1];e.important=d.important}return d.value.eval(a)}}))return this.evaluating=!1,b;throw{type:"Name",message:"variable "+c+" is undefined",filename:this.currentFileInfo.filename,index:this.index}},e.prototype.find=function(a,b){for(var c,d=0;a.length>d;d++)if(c=b.call(a,a[d]))return c;return null},b.exports=e},{"./node":70}],83:[function(a,b,c){b.exports={getLocation:function(a,b){for(var c=a+1,d=null,e=-1;--c>=0&&"\n"!==b.charAt(c);)e++;return"number"==typeof a&&(d=(b.slice(0,a).match(/\n/g)||"").length),{line:d,column:e}}}},{}],84:[function(a,b,c){var d=a("../tree"),e=a("./visitor"),f=a("../logger"),g=function(){this._visitor=new e(this),this.contexts=[],this.allExtendsStack=[[]]};g.prototype={run:function(a){return a=this._visitor.visit(a),a.allExtends=this.allExtendsStack[0],a},visitRule:function(a,b){b.visitDeeper=!1},visitMixinDefinition:function(a,b){b.visitDeeper=!1},visitRuleset:function(a,b){if(!a.root){var c,e,f,g,h=[],i=a.rules,j=i?i.length:0;for(c=0;j>c;c++)a.rules[c]instanceof d.Extend&&(h.push(i[c]),a.extendOnEveryPath=!0);var k=a.paths;for(c=0;k.length>c;c++){var l=k[c],m=l[l.length-1],n=m.extendList;for(g=n?n.slice(0).concat(h):h,g&&(g=g.map(function(a){return a.clone()})),e=0;g.length>e;e++)this.foundExtends=!0,f=g[e],f.findSelfSelectors(l),f.ruleset=a,0===e&&(f.firstExtendOnThisSelectorPath=!0),this.allExtendsStack[this.allExtendsStack.length-1].push(f)}this.contexts.push(a.selectors)}},visitRulesetOut:function(a){a.root||(this.contexts.length=this.contexts.length-1)},visitMedia:function(a,b){a.allExtends=[],this.allExtendsStack.push(a.allExtends)},visitMediaOut:function(a){this.allExtendsStack.length=this.allExtendsStack.length-1},visitDirective:function(a,b){a.allExtends=[],this.allExtendsStack.push(a.allExtends)},visitDirectiveOut:function(a){this.allExtendsStack.length=this.allExtendsStack.length-1}};var h=function(){this._visitor=new e(this)};h.prototype={run:function(a){var b=new g;if(this.extendIndices={},b.run(a),!b.foundExtends)return a;a.allExtends=a.allExtends.concat(this.doExtendChaining(a.allExtends,a.allExtends)),this.allExtendsStack=[a.allExtends];var c=this._visitor.visit(a);return this.checkExtendsForNonMatched(a.allExtends),c},checkExtendsForNonMatched:function(a){var b=this.extendIndices;a.filter(function(a){return!a.hasFoundMatches&&1==a.parent_ids.length}).forEach(function(a){var c="_unknown_";try{c=a.selector.toCSS({})}catch(d){}b[a.index+" "+c]||(b[a.index+" "+c]=!0,f.warn("extend '"+c+"' has no matches"))})},doExtendChaining:function(a,b,c){var e,f,g,h,i,j,k,l,m=[],n=this;for(c=c||0,e=0;a.length>e;e++)for(f=0;b.length>f;f++)j=a[e],k=b[f],j.parent_ids.indexOf(k.object_id)>=0||(i=[k.selfSelectors[0]],g=n.findMatch(j,i),g.length&&(j.hasFoundMatches=!0,j.selfSelectors.forEach(function(a){var b=k.visibilityInfo();h=n.extendSelector(g,i,a,j.isVisible()),l=new d.Extend(k.selector,k.option,0,k.currentFileInfo,b),l.selfSelectors=h,h[h.length-1].extendList=[l],m.push(l),l.ruleset=k.ruleset,l.parent_ids=l.parent_ids.concat(k.parent_ids,j.parent_ids),k.firstExtendOnThisSelectorPath&&(l.firstExtendOnThisSelectorPath=!0,k.ruleset.paths.push(h))})));if(m.length){if(this.extendChainCount++,c>100){var o="{unable to calculate}",p="{unable to calculate}";try{o=m[0].selfSelectors[0].toCSS(),p=m[0].selector.toCSS()}catch(q){}throw{message:"extend circular reference detected. One of the circular extends is currently:"+o+":extend("+p+")"}}return m.concat(n.doExtendChaining(m,b,c+1))}return m},visitRule:function(a,b){b.visitDeeper=!1},visitMixinDefinition:function(a,b){b.visitDeeper=!1},visitSelector:function(a,b){b.visitDeeper=!1},visitRuleset:function(a,b){if(!a.root){var c,d,e,f,g=this.allExtendsStack[this.allExtendsStack.length-1],h=[],i=this;for(e=0;g.length>e;e++)for(d=0;a.paths.length>d;d++)if(f=a.paths[d],!a.extendOnEveryPath){var j=f[f.length-1].extendList;j&&j.length||(c=this.findMatch(g[e],f),c.length&&(g[e].hasFoundMatches=!0,g[e].selfSelectors.forEach(function(a){var b;b=i.extendSelector(c,f,a,g[e].isVisible()),h.push(b)})))}a.paths=a.paths.concat(h)}},findMatch:function(a,b){var c,d,e,f,g,h,i,j=this,k=a.selector.elements,l=[],m=[];for(c=0;b.length>c;c++)for(d=b[c],e=0;d.elements.length>e;e++)for(f=d.elements[e],(a.allowBefore||0===c&&0===e)&&l.push({pathIndex:c,index:e,matched:0,initialCombinator:f.combinator}),h=0;l.length>h;h++)i=l[h],g=f.combinator.value,""===g&&0===e&&(g=" "),!j.isElementValuesEqual(k[i.matched].value,f.value)||i.matched>0&&k[i.matched].combinator.value!==g?i=null:i.matched++,i&&(i.finished=i.matched===k.length,i.finished&&!a.allowAfter&&(d.elements.length>e+1||b.length>c+1)&&(i=null)),i?i.finished&&(i.length=k.length,i.endPathIndex=c,i.endPathElementIndex=e+1,l.length=0,m.push(i)):(l.splice(h,1),h--);return m},isElementValuesEqual:function(a,b){if("string"==typeof a||"string"==typeof b)return a===b;if(a instanceof d.Attribute)return a.op!==b.op||a.key!==b.key?!1:a.value&&b.value?(a=a.value.value||a.value,b=b.value.value||b.value,a===b):!a.value&&!b.value;if(a=a.value,b=b.value,a instanceof d.Selector){if(!(b instanceof d.Selector)||a.elements.length!==b.elements.length)return!1;for(var c=0;a.elements.length>c;c++){if(a.elements[c].combinator.value!==b.elements[c].combinator.value&&(0!==c||(a.elements[c].combinator.value||" ")!==(b.elements[c].combinator.value||" ")))return!1;if(!this.isElementValuesEqual(a.elements[c].value,b.elements[c].value))return!1}return!0}return!1},extendSelector:function(a,b,c,e){var f,g,h,i,j,k=0,l=0,m=[];for(f=0;a.length>f;f++)i=a[f],g=b[i.pathIndex],h=new d.Element(i.initialCombinator,c.elements[0].value,c.elements[0].index,c.elements[0].currentFileInfo),i.pathIndex>k&&l>0&&(m[m.length-1].elements=m[m.length-1].elements.concat(b[k].elements.slice(l)),l=0,k++),j=g.elements.slice(l,i.index).concat([h]).concat(c.elements.slice(1)),k===i.pathIndex&&f>0?m[m.length-1].elements=m[m.length-1].elements.concat(j):(m=m.concat(b.slice(k,i.pathIndex)),m.push(new d.Selector(j))),k=i.endPathIndex,l=i.endPathElementIndex,l>=b[k].elements.length&&(l=0,k++);return b.length>k&&l>0&&(m[m.length-1].elements=m[m.length-1].elements.concat(b[k].elements.slice(l)),k++),m=m.concat(b.slice(k,b.length)),m=m.map(function(a){var b=a.createDerived(a.elements);return e?b.ensureVisibility():b.ensureInvisibility(),b})},visitMedia:function(a,b){var c=a.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);c=c.concat(this.doExtendChaining(c,a.allExtends)),this.allExtendsStack.push(c)},visitMediaOut:function(a){var b=this.allExtendsStack.length-1;this.allExtendsStack.length=b},visitDirective:function(a,b){var c=a.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);c=c.concat(this.doExtendChaining(c,a.allExtends)),this.allExtendsStack.push(c)},visitDirectiveOut:function(a){var b=this.allExtendsStack.length-1;this.allExtendsStack.length=b}},b.exports=h},{"../logger":33,"../tree":62,"./visitor":91}],85:[function(a,b,c){function d(a){this.imports=[],this.variableImports=[],this._onSequencerEmpty=a,this._currentDepth=0}d.prototype.addImport=function(a){var b=this,c={callback:a,args:null,isReady:!1};return this.imports.push(c),function(){c.args=Array.prototype.slice.call(arguments,0),c.isReady=!0,b.tryRun()}},d.prototype.addVariableImport=function(a){ this.variableImports.push(a)},d.prototype.tryRun=function(){this._currentDepth++;try{for(;;){for(;this.imports.length>0;){var a=this.imports[0];if(!a.isReady)return;this.imports=this.imports.slice(1),a.callback.apply(null,a.args)}if(0===this.variableImports.length)break;var b=this.variableImports[0];this.variableImports=this.variableImports.slice(1),b()}}finally{this._currentDepth--}0===this._currentDepth&&this._onSequencerEmpty&&this._onSequencerEmpty()},b.exports=d},{}],86:[function(a,b,c){var d=a("../contexts"),e=a("./visitor"),f=a("./import-sequencer"),g=function(a,b){this._visitor=new e(this),this._importer=a,this._finish=b,this.context=new d.Eval,this.importCount=0,this.onceFileDetectionMap={},this.recursionDetector={},this._sequencer=new f(this._onSequencerEmpty.bind(this))};g.prototype={isReplacing:!1,run:function(a){try{this._visitor.visit(a)}catch(b){this.error=b}this.isFinished=!0,this._sequencer.tryRun()},_onSequencerEmpty:function(){this.isFinished&&this._finish(this.error)},visitImport:function(a,b){var c=a.options.inline;if(!a.css||c){var e=new d.Eval(this.context,this.context.frames.slice(0)),f=e.frames[0];this.importCount++,a.isVariableImport()?this._sequencer.addVariableImport(this.processImportNode.bind(this,a,e,f)):this.processImportNode(a,e,f)}b.visitDeeper=!1},processImportNode:function(a,b,c){var d,e=a.options.inline;try{d=a.evalForImport(b)}catch(f){f.filename||(f.index=a.index,f.filename=a.currentFileInfo.filename),a.css=!0,a.error=f}if(!d||d.css&&!e)this.importCount--,this.isFinished&&this._sequencer.tryRun();else{d.options.multiple&&(b.importMultiple=!0);for(var g=void 0===d.css,h=0;c.rules.length>h;h++)if(c.rules[h]===a){c.rules[h]=d;break}var i=this.onImported.bind(this,d,b),j=this._sequencer.addImport(i);this._importer.push(d.getPath(),g,d.currentFileInfo,d.options,j)}},onImported:function(a,b,c,d,e,f){c&&(c.filename||(c.index=a.index,c.filename=a.currentFileInfo.filename),this.error=c);var g=this,h=a.options.inline,i=a.options.plugin,j=a.options.optional,k=e||f in g.recursionDetector;if(b.importMultiple||(a.skip=k?!0:function(){return f in g.onceFileDetectionMap?!0:(g.onceFileDetectionMap[f]=!0,!1)}),!f&&j&&(a.skip=!0),d&&(a.root=d,a.importedFilename=f,!h&&!i&&(b.importMultiple||!k))){g.recursionDetector[f]=!0;var l=this.context;this.context=b;try{this._visitor.visit(d)}catch(c){this.error=c}this.context=l}g.importCount--,g.isFinished&&g._sequencer.tryRun()},visitRule:function(a,b){"DetachedRuleset"===a.value.type?this.context.frames.unshift(a):b.visitDeeper=!1},visitRuleOut:function(a){"DetachedRuleset"===a.value.type&&this.context.frames.shift()},visitDirective:function(a,b){this.context.frames.unshift(a)},visitDirectiveOut:function(a){this.context.frames.shift()},visitMixinDefinition:function(a,b){this.context.frames.unshift(a)},visitMixinDefinitionOut:function(a){this.context.frames.shift()},visitRuleset:function(a,b){this.context.frames.unshift(a)},visitRulesetOut:function(a){this.context.frames.shift()},visitMedia:function(a,b){this.context.frames.unshift(a.rules[0])},visitMediaOut:function(a){this.context.frames.shift()}},b.exports=g},{"../contexts":11,"./import-sequencer":85,"./visitor":91}],87:[function(a,b,c){var d={Visitor:a("./visitor"),ImportVisitor:a("./import-visitor"),MarkVisibleSelectorsVisitor:a("./set-tree-visibility-visitor"),ExtendVisitor:a("./extend-visitor"),JoinSelectorVisitor:a("./join-selector-visitor"),ToCSSVisitor:a("./to-css-visitor")};b.exports=d},{"./extend-visitor":84,"./import-visitor":86,"./join-selector-visitor":88,"./set-tree-visibility-visitor":89,"./to-css-visitor":90,"./visitor":91}],88:[function(a,b,c){var d=a("./visitor"),e=function(){this.contexts=[[]],this._visitor=new d(this)};e.prototype={run:function(a){return this._visitor.visit(a)},visitRule:function(a,b){b.visitDeeper=!1},visitMixinDefinition:function(a,b){b.visitDeeper=!1},visitRuleset:function(a,b){var c,d=this.contexts[this.contexts.length-1],e=[];this.contexts.push(e),a.root||(c=a.selectors,c&&(c=c.filter(function(a){return a.getIsOutput()}),a.selectors=c.length?c:c=null,c&&a.joinSelectors(e,d,c)),c||(a.rules=null),a.paths=e)},visitRulesetOut:function(a){this.contexts.length=this.contexts.length-1},visitMedia:function(a,b){var c=this.contexts[this.contexts.length-1];a.rules[0].root=0===c.length||c[0].multiMedia},visitDirective:function(a,b){var c=this.contexts[this.contexts.length-1];a.rules&&a.rules.length&&(a.rules[0].root=a.isRooted||0===c.length||null)}},b.exports=e},{"./visitor":91}],89:[function(a,b,c){var d=function(a){this.visible=a};d.prototype.run=function(a){this.visit(a)},d.prototype.visitArray=function(a){if(!a)return a;var b,c=a.length;for(b=0;c>b;b++)this.visit(a[b]);return a},d.prototype.visit=function(a){return a?a.constructor===Array?this.visitArray(a):!a.blocksVisibility||a.blocksVisibility()?a:(this.visible?a.ensureVisibility():a.ensureInvisibility(),a.accept(this),a):a},b.exports=d},{}],90:[function(a,b,c){var d=a("../tree"),e=a("./visitor"),f=function(a){this._visitor=new e(this),this._context=a};f.prototype={containsSilentNonBlockedChild:function(a){var b;if(null==a)return!1;for(var c=0;a.length>c;c++)if(b=a[c],b.isSilent&&b.isSilent(this._context)&&!b.blocksVisibility())return!0;return!1},keepOnlyVisibleChilds:function(a){null!=a&&null!=a.rules&&(a.rules=a.rules.filter(function(a){return a.isVisible()}))},isEmpty:function(a){return null==a||null==a.rules?!0:0===a.rules.length},hasVisibleSelector:function(a){return null==a||null==a.paths?!1:a.paths.length>0},resolveVisibility:function(a,b){if(!a.blocksVisibility()){if(this.isEmpty(a)&&!this.containsSilentNonBlockedChild(b))return;return a}var c=a.rules[0];return this.keepOnlyVisibleChilds(c),this.isEmpty(c)?void 0:(a.ensureVisibility(),a.removeVisibilityBlock(),a)},isVisibleRuleset:function(a){return a.firstRoot?!0:this.isEmpty(a)?!1:!(!a.root&&!this.hasVisibleSelector(a))}};var g=function(a){this._visitor=new e(this),this._context=a,this.utils=new f(a)};g.prototype={isReplacing:!0,run:function(a){return this._visitor.visit(a)},visitRule:function(a,b){return a.blocksVisibility()||a.variable?void 0:a},visitMixinDefinition:function(a,b){a.frames=[]},visitExtend:function(a,b){},visitComment:function(a,b){return a.blocksVisibility()||a.isSilent(this._context)?void 0:a},visitMedia:function(a,b){var c=a.rules[0].rules;return a.accept(this._visitor),b.visitDeeper=!1,this.utils.resolveVisibility(a,c)},visitImport:function(a,b){return a.blocksVisibility()?void 0:a},visitDirective:function(a,b){return a.rules&&a.rules.length?this.visitDirectiveWithBody(a,b):this.visitDirectiveWithoutBody(a,b)},visitDirectiveWithBody:function(a,b){function c(a){var b=a.rules;return 1===b.length&&(!b[0].paths||0===b[0].paths.length)}function d(a){var b=a.rules;return c(a)?b[0].rules:b}var e=d(a);return a.accept(this._visitor),b.visitDeeper=!1,this.utils.isEmpty(a)||this._mergeRules(a.rules[0].rules),this.utils.resolveVisibility(a,e)},visitDirectiveWithoutBody:function(a,b){if(!a.blocksVisibility()){if("@charset"===a.name){if(this.charset){if(a.debugInfo){var c=new d.Comment("/* "+a.toCSS(this._context).replace(/\n/g,"")+" */\n");return c.debugInfo=a.debugInfo,this._visitor.visit(c)}return}this.charset=!0}return a}},checkValidNodes:function(a,b){if(a)for(var c=0;a.length>c;c++){var e=a[c];if(b&&e instanceof d.Rule&&!e.variable)throw{message:"Properties must be inside selector blocks. They cannot be in the root",index:e.index,filename:e.currentFileInfo&&e.currentFileInfo.filename};if(e instanceof d.Call)throw{message:"Function '"+e.name+"' is undefined",index:e.index,filename:e.currentFileInfo&&e.currentFileInfo.filename};if(e.type&&!e.allowRoot)throw{message:e.type+" node returned by a function is not valid here",index:e.index,filename:e.currentFileInfo&&e.currentFileInfo.filename}}},visitRuleset:function(a,b){var c,d=[];if(this.checkValidNodes(a.rules,a.firstRoot),a.root)a.accept(this._visitor),b.visitDeeper=!1;else{this._compileRulesetPaths(a);for(var e=a.rules,f=e?e.length:0,g=0;f>g;)c=e[g],c&&c.rules?(d.push(this._visitor.visit(c)),e.splice(g,1),f--):g++;f>0?a.accept(this._visitor):a.rules=null,b.visitDeeper=!1}return a.rules&&(this._mergeRules(a.rules),this._removeDuplicateRules(a.rules)),this.utils.isVisibleRuleset(a)&&(a.ensureVisibility(),d.splice(0,0,a)),1===d.length?d[0]:d},_compileRulesetPaths:function(a){a.paths&&(a.paths=a.paths.filter(function(a){var b;for(" "===a[0].elements[0].combinator.value&&(a[0].elements[0].combinator=new d.Combinator("")),b=0;a.length>b;b++)if(a[b].isVisible()&&a[b].getIsOutput())return!0;return!1}))},_removeDuplicateRules:function(a){if(a){var b,c,e,f={};for(e=a.length-1;e>=0;e--)if(c=a[e],c instanceof d.Rule)if(f[c.name]){b=f[c.name],b instanceof d.Rule&&(b=f[c.name]=[f[c.name].toCSS(this._context)]);var g=c.toCSS(this._context);-1!==b.indexOf(g)?a.splice(e,1):b.push(g)}else f[c.name]=c}},_mergeRules:function(a){if(a){for(var b,c,e,f={},g=0;a.length>g;g++)c=a[g],c instanceof d.Rule&&c.merge&&(e=[c.name,c.important?"!":""].join(","),f[e]?a.splice(g--,1):f[e]=[],f[e].push(c));Object.keys(f).map(function(a){function e(a){return new d.Expression(a.map(function(a){return a.value}))}function g(a){return new d.Value(a.map(function(a){return a}))}if(b=f[a],b.length>1){c=b[0];var h=[],i=[];b.map(function(a){"+"===a.merge&&(i.length>0&&h.push(e(i)),i=[]),i.push(a)}),h.push(e(i)),c.value=g(h)}})}},visitAnonymous:function(a,b){return a.blocksVisibility()?void 0:(a.accept(this._visitor),a)}},b.exports=g},{"../tree":62,"./visitor":91}],91:[function(a,b,c){function d(a){return a}function e(a,b){var c,d;for(c in a)if(a.hasOwnProperty(c))switch(d=a[c],typeof d){case"function":d.prototype&&d.prototype.type&&(d.prototype.typeIndex=b++);break;case"object":b=e(d,b)}return b}var f=a("../tree"),g={visitDeeper:!0},h=!1,i=function(a){this._implementation=a,this._visitFnCache=[],h||(e(f,1),h=!0)};i.prototype={visit:function(a){if(!a)return a;var b=a.typeIndex;if(!b)return a;var c,e=this._visitFnCache,f=this._implementation,h=b<<1,i=1|h,j=e[h],k=e[i],l=g;if(l.visitDeeper=!0,j||(c="visit"+a.type,j=f[c]||d,k=f[c+"Out"]||d,e[h]=j,e[i]=k),j!==d){var m=j.call(f,a,l);f.isReplacing&&(a=m)}return l.visitDeeper&&a&&a.accept&&a.accept(this),k!=d&&k.call(f,a),a},visitArray:function(a,b){if(!a)return a;var c,d=a.length;if(b||!this._implementation.isReplacing){for(c=0;d>c;c++)this.visit(a[c]);return a}var e=[];for(c=0;d>c;c++){var f=this.visit(a[c]);void 0!==f&&(f.splice?f.length&&this.flatten(f,e):e.push(f))}return e},flatten:function(a,b){b||(b=[]);var c,d,e,f,g,h;for(d=0,c=a.length;c>d;d++)if(e=a[d],void 0!==e)if(e.splice)for(g=0,f=e.length;f>g;g++)h=e[g],void 0!==h&&(h.splice?h.length&&this.flatten(h,b):b.push(h));else b.push(e);return b}},b.exports=i},{"../tree":62}],92:[function(a,b,c){"use strict";function d(){if(i.length)throw i.shift()}function e(a){var b;b=h.length?h.pop():new f,b.task=a,g(b)}function f(){this.task=null}var g=a("./raw"),h=[],i=[],j=g.makeRequestCallFromTimer(d);b.exports=e,f.prototype.call=function(){try{this.task.call()}catch(a){e.onerror?e.onerror(a):(i.push(a),j())}finally{this.task=null,h[h.length]=this}}},{"./raw":93}],93:[function(a,b,c){(function(a){"use strict";function c(a){h.length||(g(),i=!0),h[h.length]=a}function d(){for(;h.length>j;){var a=j;if(j+=1,h[a].call(),j>k){for(var b=0,c=h.length-j;c>b;b++)h[b]=h[b+j];h.length-=j,j=0}}h.length=0,j=0,i=!1}function e(a){var b=1,c=new l(a),d=document.createTextNode("");return c.observe(d,{characterData:!0}),function(){b=-b,d.data=b}}function f(a){return function(){function b(){clearTimeout(c),clearInterval(d),a()}var c=setTimeout(b,0),d=setInterval(b,50)}}b.exports=c;var g,h=[],i=!1,j=0,k=1024,l=a.MutationObserver||a.WebKitMutationObserver;g="function"==typeof l?e(d):f(d),c.requestFlush=g,c.makeRequestCallFromTimer=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],94:[function(a,b,c){"use strict";function d(){}function e(a){try{return a.then}catch(b){return r=b,s}}function f(a,b){try{return a(b)}catch(c){return r=c,s}}function g(a,b,c){try{a(b,c)}catch(d){return r=d,s}}function h(a){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof a)throw new TypeError("not a function");this._45=0,this._81=0,this._65=null,this._54=null,a!==d&&p(a,this)}function i(a,b,c){return new a.constructor(function(e,f){var g=new h(d);g.then(e,f),j(a,new o(b,c,g))})}function j(a,b){for(;3===a._81;)a=a._65;return h._10&&h._10(a),0===a._81?0===a._45?(a._45=1,void(a._54=b)):1===a._45?(a._45=2,void(a._54=[a._54,b])):void a._54.push(b):void k(a,b)}function k(a,b){q(function(){var c=1===a._81?b.onFulfilled:b.onRejected;if(null===c)return void(1===a._81?l(b.promise,a._65):m(b.promise,a._65));var d=f(c,a._65);d===s?m(b.promise,r):l(b.promise,d)})}function l(a,b){if(b===a)return m(a,new TypeError("A promise cannot be resolved with itself."));if(b&&("object"==typeof b||"function"==typeof b)){var c=e(b);if(c===s)return m(a,r);if(c===a.then&&b instanceof h)return a._81=3,a._65=b,void n(a);if("function"==typeof c)return void p(c.bind(b),a)}a._81=1,a._65=b,n(a)}function m(a,b){a._81=2,a._65=b,h._97&&h._97(a,b),n(a)}function n(a){if(1===a._45&&(j(a,a._54),a._54=null),2===a._45){for(var b=0;a._54.length>b;b++)j(a,a._54[b]);a._54=null}}function o(a,b,c){this.onFulfilled="function"==typeof a?a:null,this.onRejected="function"==typeof b?b:null,this.promise=c}function p(a,b){var c=!1,d=g(a,function(a){c||(c=!0,l(b,a))},function(a){c||(c=!0,m(b,a))});c||d!==s||(c=!0,m(b,r))}var q=a("asap/raw"),r=null,s={};b.exports=h,h._10=null,h._97=null,h._61=d,h.prototype.then=function(a,b){if(this.constructor!==h)return i(this,a,b);var c=new h(d);return j(this,new o(a,b,c)),c}},{"asap/raw":93}],95:[function(a,b,c){"use strict";function d(a){var b=new e(e._61);return b._81=1,b._65=a,b}var e=a("./core.js");b.exports=e;var f=d(!0),g=d(!1),h=d(null),i=d(void 0),j=d(0),k=d("");e.resolve=function(a){if(a instanceof e)return a;if(null===a)return h;if(void 0===a)return i;if(a===!0)return f;if(a===!1)return g;if(0===a)return j;if(""===a)return k;if("object"==typeof a||"function"==typeof a)try{var b=a.then;if("function"==typeof b)return new e(b.bind(a))}catch(c){return new e(function(a,b){b(c)})}return d(a)},e.all=function(a){var b=Array.prototype.slice.call(a);return new e(function(a,c){function d(g,h){if(h&&("object"==typeof h||"function"==typeof h)){if(h instanceof e&&h.then===e.prototype.then){for(;3===h._81;)h=h._65;return 1===h._81?d(g,h._65):(2===h._81&&c(h._65),void h.then(function(a){d(g,a)},c))}var i=h.then;if("function"==typeof i){var j=new e(i.bind(h));return void j.then(function(a){d(g,a)},c)}}b[g]=h,0===--f&&a(b)}if(0===b.length)return a([]);for(var f=b.length,g=0;b.length>g;g++)d(g,b[g])})},e.reject=function(a){return new e(function(b,c){c(a)})},e.race=function(a){return new e(function(b,c){a.forEach(function(a){e.resolve(a).then(b,c)})})},e.prototype["catch"]=function(a){return this.then(null,a)}},{"./core.js":94}],96:[function(a,b,c){"function"!=typeof Promise.prototype.done&&(Promise.prototype.done=function(a,b){var c=arguments.length?this.then.apply(this,arguments):this;c.then(null,function(a){setTimeout(function(){throw a},0)})})},{}],97:[function(a,b,c){a("asap");"undefined"==typeof Promise&&(Promise=a("./lib/core.js"),a("./lib/es6-extensions.js")),a("./polyfill-done.js")},{"./lib/core.js":94,"./lib/es6-extensions.js":95,"./polyfill-done.js":96,asap:92}]},{},[2])(2)});PK<\;`PP(assets/lib/bower/zoom/jquery.zoom.min.jsnu[/*! Zoom 1.7.15 license: MIT http://www.jacklmoore.com/zoom */ (function($){var defaults={url:false,callback:false,target:false,duration:120,on:"mouseover",touch:true,onZoomIn:false,onZoomOut:false,magnify:1};$.zoom=function(target,source,img,magnify){var targetHeight,targetWidth,sourceHeight,sourceWidth,xRatio,yRatio,offset,$target=$(target),position=$target.css("position"),$source=$(source);$target.css("position",/(absolute|fixed)/.test(position)?position:"relative");$target.css("overflow","hidden");img.style.width=img.style.height="";$(img).addClass("zoomImg").css({position:"absolute",top:0,left:0,opacity:0,width:img.width*magnify,height:img.height*magnify,border:"none",maxWidth:"none",maxHeight:"none"}).appendTo(target);return{init:function(){targetWidth=$target.outerWidth();targetHeight=$target.outerHeight();if(source===$target[0]){sourceWidth=targetWidth;sourceHeight=targetHeight}else{sourceWidth=$source.outerWidth();sourceHeight=$source.outerHeight()}xRatio=(img.width-targetWidth)/sourceWidth;yRatio=(img.height-targetHeight)/sourceHeight;offset=$source.offset()},move:function(e){var left=e.pageX-offset.left,top=e.pageY-offset.top;top=Math.max(Math.min(top,sourceHeight),0);left=Math.max(Math.min(left,sourceWidth),0);img.style.left=left*-xRatio+"px";img.style.top=top*-yRatio+"px"}}};$.fn.zoom=function(options){return this.each(function(){var settings=$.extend({},defaults,options||{}),target=settings.target||this,source=this,$source=$(source),$target=$(target),img=document.createElement("img"),$img=$(img),mousemove="mousemove.zoom",clicked=false,touched=false,$urlElement;if(!settings.url){$urlElement=$source.find("img");if($urlElement[0]){settings.url=$urlElement.data("src")||$urlElement.attr("src")}if(!settings.url){return}}(function(){var position=$target.css("position");var overflow=$target.css("overflow");$source.one("zoom.destroy",function(){$source.off(".zoom");$target.css("position",position);$target.css("overflow",overflow);$img.remove()})})();img.onload=function(){var zoom=$.zoom(target,source,img,settings.magnify);function start(e){zoom.init();zoom.move(e);$img.stop().fadeTo($.support.opacity?settings.duration:0,1,$.isFunction(settings.onZoomIn)?settings.onZoomIn.call(img):false)}function stop(){$img.stop().fadeTo(settings.duration,0,$.isFunction(settings.onZoomOut)?settings.onZoomOut.call(img):false)}if(settings.on==="grab"){$source.on("mousedown.zoom",function(e){if(e.which===1){$(document).one("mouseup.zoom",function(){stop();$(document).off(mousemove,zoom.move)});start(e);$(document).on(mousemove,zoom.move);e.preventDefault()}})}else if(settings.on==="click"){$source.on("click.zoom",function(e){if(clicked){return}else{clicked=true;start(e);$(document).on(mousemove,zoom.move);$(document).one("click.zoom",function(){stop();clicked=false;$(document).off(mousemove,zoom.move)});return false}})}else if(settings.on==="toggle"){$source.on("click.zoom",function(e){if(clicked){stop()}else{start(e)}clicked=!clicked})}else if(settings.on==="mouseover"){zoom.init();$source.on("mouseenter.zoom",start).on("mouseleave.zoom",stop).on(mousemove,zoom.move)}if(settings.touch){$source.on("touchstart.zoom",function(e){e.preventDefault();if(touched){touched=false;stop()}else{touched=true;start(e.originalEvent.touches[0]||e.originalEvent.changedTouches[0])}}).on("touchmove.zoom",function(e){e.preventDefault();zoom.move(e.originalEvent.touches[0]||e.originalEvent.changedTouches[0])}).on("touchend.zoom",function(e){e.preventDefault();if(touched){touched=false;stop()}})}if($.isFunction(settings.callback)){settings.callback.call(img)}};img.src=settings.url})};$.fn.zoom.defaults=defaults})(window.jQuery);PK<\мMV  assets/lib/bower/zoom/readme.mdnu[## About Zoom A small jQuery plugin for zooming images on mouseover or mousedown. See the [project page](http://jacklmoore.com/zoom/) for documentation and a demonstration. Released under the [MIT license](http://www.opensource.org/licenses/mit-license.php). To compile the .min.js file, run: `uglifyjs --comments '/license:/' < jquery.zoom.js > jquery.zoom.min.js` ## Changelog: ##### v1.7.15 - 2016/2/8 * Added touchend event, might fix #97 #75 #62. Merges #100. ##### v1.7.14 - 2015/3/18 * Fixes bug with passing the `target` property a selector, rather than a DOM node. Merges #73. ##### v1.7.13 - 2014/4/29 * Destroy event does a better job of reseting back to the original state. ##### v1.7.12 - 2014/2/11 * Set zoomed image's maxHeight to none, just in case a maxHeight has been defined for images in the CSS. ##### v1.7.11 - 2013/11/12 * Added magnify property to allow scaling of the zoomed image. ##### v1.7.10 - 2013/10/16 * Fixed bug relating to the size of the target element when using the target property (Fixes #35) ##### v1.7.9 - 2013/10/16 * Added simple fallback for touch events (Fixes #37 #39) * Renamed minified file to jquery.zoom.min.js to match jQuery's convention. ##### v1.7.8 - 2013/7/30 * Will use data-src attribute if present before checking for the presence of an src attribute. ##### v1.7.7 - 2013/7/14 * Restricted grab to just the left-mouse-button on mousedown ##### v1.7.6 - 2013/6/24 * Fixed misnamed onZoomOut callback ##### v1.7.5 - 2013/6/19 * Fixed a bug with absolutely or fixed position target elements * Set the value of `this` to be zoom-image element for the onZoomIn and onZoomOut callbacks ##### v1.7.4 - 2013/6/18 * Namespaced events to assist unbinding events. * Added destroy event to unbind zoom events & remove created img element. Example: $('.example').trigger('zoom.destroy'); * Added onZoomIn and onZoomOut callbacks ##### v1.7.3 - 2013/6/10 * Fixing mistake made in previous commit ##### v1.7.2 - 2013/6/6 * Replaced new Image() with document.createElement('img') to avoid a potential bug in Chrome 27. ##### v1.7.1 - 2013/3/12 * Replaced jQuery shorthand methods with on() in anticipation of jQuery 2.0 ##### v1.7.0 - 2013/1/31 * Added 'toggle' behavior to zoom in/out on click. Example: $('#example').zoom({ on:'toggle' }); * Removed the icon property in favor of just using CSS. ##### v1.6.0 - 2013/1/22 * Created $.zoom which contains the positioning logic, so that users can write custom controls or event handling. ##### v1.5.0 - 2012/11/19 * Added 'target' property for specifying the element that displays the zoomed image. ##### v1.4.0 - 2012/9/29 * Changed API & added option to activate on click. ##### v1.3.0 - 2011/12/21 * Added 'callback' property that will execute a callback function once the image has loaded. * Fixed a bug relating to the 'grab' property ##### v1.2.0 - 2011/11/15 * Fixed a positioning bug ##### v1.1.0 - 2011/11/15 * Added 'grab' property ##### v1.0.0 - 2011/11/11 * First releasePK<\paa/assets/lib/bower/nivoslider/nivo-slider.min.cssnu[.nivo-box,.nivo-caption,.nivoSlider{overflow:hidden}.nivoSlider{position:relative;width:100%;height:auto}.nivoSlider img{position:absolute;top:0;left:0;max-width:none}.nivo-main-image{display:block!important;position:relative!important;width:100%!important}.nivoSlider a.nivo-imageLink{position:absolute;top:0;left:0;width:100%;height:100%;border:0;padding:0;margin:0;z-index:6;display:none;background:#fff;filter:alpha(opacity=0);opacity:0}.nivo-box,.nivo-slice{z-index:5;position:absolute}.nivo-box,.nivo-box img,.nivo-slice{display:block}.nivo-slice{height:100%;top:0}.nivo-caption{position:absolute;left:0;bottom:0;background:#000;color:#fff;width:100%;z-index:8;padding:5px 10px;opacity:.8;display:none;-moz-opacity:.8;filter:alpha(opacity=8);box-sizing:border-box}.nivo-caption p{padding:5px;margin:0}.nivo-caption a{display:inline!important}.nivo-html-caption{display:none}.nivo-directionNav a{position:absolute;top:45%;z-index:9;cursor:pointer}.nivo-prevNav{left:0}.nivo-nextNav{right:0}.nivo-controlNav{text-align:center;padding:15px 0}.nivo-controlNav a{cursor:pointer}.nivo-controlNav a.active{font-weight:700}PK<\9MMM'assets/lib/bower/nivoslider/license.txtnu[ Copyright (c) 2010-2012 Dev7studios Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. PK<\1885assets/lib/bower/nivoslider/themes/default/arrows.pngnu[PNG  IHDR<p}O pHYs   cHRMz%u0`:o_FIDATxԙs@?d!.q8P빺8pusZTK̤lfs3f20!wwc'0q,Io4/*YfL=2mۻ-p dY%_=>v w;J෬Q&{^x#(U)乪&;捨@l' "X2l1,j6l?]C˃Aґ} *b.$rGrv_nqc[y$dGBE Iw_~V&91k8B1Φ *B0BNPc:'gB3* m%N" qޭ3z7_{3Q kKek=\;5lcHiz<IENDB`PK<\xQQ:assets/lib/bower/nivoslider/themes/default/default.min.cssnu[.theme-default .nivoSlider{position:relative;background:url(loading.gif) 50% 50% no-repeat #fff;margin-bottom:10px;box-shadow:0 1px 5px 0 #4a4a4a}.theme-default .nivoSlider img{position:absolute;top:0;left:0;display:none}.theme-default .nivoSlider a{border:0;display:block}.theme-default .nivo-controlNav{text-align:center;padding:20px 0}.theme-default .nivo-controlNav a{display:inline-block;width:22px;height:22px;background:url(bullets.png) no-repeat;text-indent:-9999px;border:0;margin:0 2px}.theme-default .nivo-controlNav a.active{background-position:0 -22px}.theme-default .nivo-directionNav a{display:block;width:30px;height:30px;background:url(arrows.png) no-repeat;text-indent:-9999px;border:0;opacity:0;transition:all .2s ease-in-out}.theme-default:hover .nivo-directionNav a{opacity:1}.theme-default a.nivo-nextNav{background-position:-30px 0;right:15px}.theme-default a.nivo-prevNav{left:15px}.theme-default .nivo-caption{font-family:Helvetica,Arial,sans-serif}.theme-default .nivo-caption a{color:#fff;border-bottom:1px dotted #fff}.theme-default .nivo-caption a:hover{color:#fff}.theme-default .nivo-controlNav.nivo-thumbs-enabled{width:100%}.theme-default .nivo-controlNav.nivo-thumbs-enabled a{width:auto;height:auto;background:0 0;margin-bottom:5px}.theme-default .nivo-controlNav.nivo-thumbs-enabled img{display:block;width:120px;height:auto}PK<\k6assets/lib/bower/nivoslider/themes/default/bullets.pngnu[PNG  IHDR( pHYs   cHRMz%u0`:o_FIDATxڴWMHcW{yqb'c E?ࢋ .fHKPlQ(ͪxu~H?h%FFB}r}dssOB)0,!deY_B)5@NьT@bO"} ĞFs̢@U<"il>>{8ظ@0GXL&(A$FI>::;Mp6 ~$|ssSEQpNS>88TǬz;gffbp8N V0Эr\|XLJ@#7j7IeSˈNT }.2漕leؠ#dT@aSz5Un9媌 \aoba<&oXѨܻ^B:E>*P<+m$Jb筭-ͩDBfǏE'\y mpĐekk ftb$>mnn~@je`JTɽX,^ZZ) @/E5k`q*|@ݾ@>==G\L%`  CCCc<Ou ^ BzV8??\.Y4Q[r_@{{Rɲ|B*ըIkˮ.n:V WWWN*Slhh CiȊ*яEgdݾ800 t:K&l6#ی[@M:VQX0|dlgg'V,j.}jEdWccclllgggMt( iO.qq+#=Fj?d2]\\FXT"ur&3  '*ȦjM(ЌI?7 776IENDB`PK<\Y6assets/lib/bower/nivoslider/themes/default/loading.gifnu[GIF89aԔ```@@@DDDnnnܤ$$$(((000666>>>jjjrrrŠPPP^^^:::\\\|||ↆhhhfffFFF xxx֮ƼzzzLLLRRRZZZbbbBBB<<B;>CD ;+F &03 8<݄!'14,< "PF`! ,;WX []<U Y-\$_&JOSHTJ^*\GP2 #7HKQ:6L=FF'MijNA:bIT@?R/D924I ::/E`ӃA&V,ZJCaTT9Ij! , i^,CK jl8^ghQCRk "dNJnj2H0T.-435GЄ`eC6:f:=σG5AT770/6@C(CBA;@/܆F r Z@! ,?(N!lG9'g[jNJA#HlF=B]ON*#F`8"p A/`9"07qE "T=36n F o)! ,aoe&? +qe4H2D< @33 %F8<;J @@ce[l>8TBjuaB7KAǐ0Cv^ ur6b?ՅY)3T3+'s 6F0:.ntn830֭! ,0@9(+ATA8cJq >`GT6:"VVA6@>/B4eb= oRTD3>hF^M'0F7BLd63Ӑ]jl7ۅ&NG+TTc1SOJvwn\-Yr;"0:TD AB8Q"6/37;(I@0=:GJ73QfA6D,<3e34.1&2*^Z\3#*N DK$+C9 \T6Jc -:gY(DZe u,AKXqoPt2Q=FAl!+ OjLM^aG1N\@ÕA;PK<\50){if(r.startSlide>=i.totalSlides){r.startSlide=i.totalSlides-1}i.currentSlide=r.startSlide}if(e(o[i.currentSlide]).is("img")){i.currentImage=e(o[i.currentSlide])}else{i.currentImage=e(o[i.currentSlide]).find("img:first")}if(e(o[i.currentSlide]).is("a")){e(o[i.currentSlide]).css("display","block")}var u=e("").addClass("nivo-main-image");u.attr("src",i.currentImage.attr("src")).show();s.append(u);e(window).resize(function(){s.children("img").width(s.width());u.attr("src",i.currentImage.attr("src"));u.stop().height("auto");e(".nivo-slice").remove();e(".nivo-box").remove()});s.append(e('
    '));var a=function(t){var n=e(".nivo-caption",s);if(i.currentImage.attr("title")!=""&&i.currentImage.attr("title")!=undefined){var r=i.currentImage.attr("title");if(r.substr(0,1)=="#")r=e(r).html();if(n.css("display")=="block"){setTimeout(function(){n.html(r)},t.animSpeed)}else{n.html(r);n.stop().fadeIn(t.animSpeed)}}else{n.stop().fadeOut(t.animSpeed)}};a(r);var f=0;if(!r.manualAdvance&&o.length>1){f=setInterval(function(){d(s,o,r,false)},r.pauseTime)}if(r.directionNav){s.append('");e(s).on("click","a.nivo-prevNav",function(){if(i.running){return false}clearInterval(f);f="";i.currentSlide-=2;d(s,o,r,"prev")});e(s).on("click","a.nivo-nextNav",function(){if(i.running){return false}clearInterval(f);f="";d(s,o,r,"next")})}if(r.controlNav){i.controlNavEl=e('
    ');s.after(i.controlNavEl);for(var l=0;l')}else{i.controlNavEl.append(''+(l+1)+"")}}e("a:eq("+i.currentSlide+")",i.controlNavEl).addClass("active");e("a",i.controlNavEl).bind("click",function(){if(i.running)return false;if(e(this).hasClass("active"))return false;clearInterval(f);f="";u.attr("src",i.currentImage.attr("src"));i.currentSlide=e(this).attr("rel")-1;d(s,o,r,"control")})}if(r.pauseOnHover){s.hover(function(){i.paused=true;clearInterval(f);f=""},function(){i.paused=false;if(f===""&&!r.manualAdvance){f=setInterval(function(){d(s,o,r,false)},r.pauseTime)}})}s.bind("nivo:animFinished",function(){u.attr("src",i.currentImage.attr("src"));i.running=false;e(o).each(function(){if(e(this).is("a")){e(this).css("display","none")}});if(e(o[i.currentSlide]).is("a")){e(o[i.currentSlide]).css("display","block")}if(f===""&&!i.paused&&!r.manualAdvance){f=setInterval(function(){d(s,o,r,false)},r.pauseTime)}r.afterChange.call(this)});var h=function(t,n,r){if(e(r.currentImage).parent().is("a"))e(r.currentImage).parent().css("display","block");e('img[src="'+r.currentImage.attr("src")+'"]',t).not(".nivo-main-image,.nivo-control img").width(t.width()).css("visibility","hidden").show();var i=e('img[src="'+r.currentImage.attr("src")+'"]',t).not(".nivo-main-image,.nivo-control img").parent().is("a")?e('img[src="'+r.currentImage.attr("src")+'"]',t).not(".nivo-main-image,.nivo-control img").parent().height():e('img[src="'+r.currentImage.attr("src")+'"]',t).not(".nivo-main-image,.nivo-control img").height();for(var s=0;s
    ').css({left:o*s+"px",width:t.width()-o*s+"px",height:i+"px",opacity:"0",overflow:"hidden"}))}else{t.append(e('
    ').css({left:o*s+"px",width:o+"px",height:i+"px",opacity:"0",overflow:"hidden"}))}}e(".nivo-slice",t).height(i);u.stop().animate({height:e(r.currentImage).height()},n.animSpeed)};var p=function(t,n,r){if(e(r.currentImage).parent().is("a"))e(r.currentImage).parent().css("display","block");e('img[src="'+r.currentImage.attr("src")+'"]',t).not(".nivo-main-image,.nivo-control img").width(t.width()).css("visibility","hidden").show();var i=Math.round(t.width()/n.boxCols),s=Math.round(e('img[src="'+r.currentImage.attr("src")+'"]',t).not(".nivo-main-image,.nivo-control img").height()/n.boxRows);for(var o=0;o
    ').css({opacity:0,left:i*a+"px",top:s*o+"px",width:t.width()-i*a+"px"}));e('.nivo-box[name="'+a+'"]',t).height(e('.nivo-box[name="'+a+'"] img',t).height()+"px")}else{t.append(e('
    ').css({opacity:0,left:i*a+"px",top:s*o+"px",width:i+"px"}));e('.nivo-box[name="'+a+'"]',t).height(e('.nivo-box[name="'+a+'"] img',t).height()+"px")}}}u.stop().animate({height:e(r.currentImage).height()},n.animSpeed)};var d=function(t,n,r,i){var s=t.data("nivo:vars");if(s&&s.currentSlide===s.totalSlides-1){r.lastSlide.call(this)}if((!s||s.stop)&&!i){return false}r.beforeChange.call(this);if(!i){u.attr("src",s.currentImage.attr("src"))}else{if(i==="prev"){u.attr("src",s.currentImage.attr("src"))}if(i==="next"){u.attr("src",s.currentImage.attr("src"))}}s.currentSlide++;if(s.currentSlide===s.totalSlides){s.currentSlide=0;r.slideshowEnd.call(this)}if(s.currentSlide<0){s.currentSlide=s.totalSlides-1}if(e(n[s.currentSlide]).is("img")){s.currentImage=e(n[s.currentSlide])}else{s.currentImage=e(n[s.currentSlide]).find("img:first")}if(r.controlNav){e("a",s.controlNavEl).removeClass("active");e("a:eq("+s.currentSlide+")",s.controlNavEl).addClass("active")}a(r);e(".nivo-slice",t).remove();e(".nivo-box",t).remove();var o=r.effect,f="";if(r.effect==="random"){f=new Array("sliceDownRight","sliceDownLeft","sliceUpRight","sliceUpLeft","sliceUpDown","sliceUpDownLeft","fold","fade","boxRandom","boxRain","boxRainReverse","boxRainGrow","boxRainGrowReverse");o=f[Math.floor(Math.random()*(f.length+1))];if(o===undefined){o="fade"}}if(r.effect.indexOf(",")!==-1){f=r.effect.split(",");o=f[Math.floor(Math.random()*f.length)];if(o===undefined){o="fade"}}if(s.currentImage.attr("data-transition")){o=s.currentImage.attr("data-transition")}s.running=true;var l=0,c=0,d="",m="",g="",y="";if(o==="sliceDown"||o==="sliceDownRight"||o==="sliceDownLeft"){h(t,r,s);l=0;c=0;d=e(".nivo-slice",t);if(o==="sliceDownLeft"){d=e(".nivo-slice",t)._reverse()}d.each(function(){var n=e(this);n.css({top:"0px"});if(c===r.slices-1){setTimeout(function(){n.animate({opacity:"1.0"},r.animSpeed,"",function(){t.trigger("nivo:animFinished")})},100+l)}else{setTimeout(function(){n.animate({opacity:"1.0"},r.animSpeed)},100+l)}l+=50;c++})}else if(o==="sliceUp"||o==="sliceUpRight"||o==="sliceUpLeft"){h(t,r,s);l=0;c=0;d=e(".nivo-slice",t);if(o==="sliceUpLeft"){d=e(".nivo-slice",t)._reverse()}d.each(function(){var n=e(this);n.css({bottom:"0px"});if(c===r.slices-1){setTimeout(function(){n.animate({opacity:"1.0"},r.animSpeed,"",function(){t.trigger("nivo:animFinished")})},100+l)}else{setTimeout(function(){n.animate({opacity:"1.0"},r.animSpeed)},100+l)}l+=50;c++})}else if(o==="sliceUpDown"||o==="sliceUpDownRight"||o==="sliceUpDownLeft"){h(t,r,s);l=0;c=0;var b=0;d=e(".nivo-slice",t);if(o==="sliceUpDownLeft"){d=e(".nivo-slice",t)._reverse()}d.each(function(){var n=e(this);if(c===0){n.css("top","0px");c++}else{n.css("bottom","0px");c=0}if(b===r.slices-1){setTimeout(function(){n.animate({opacity:"1.0"},r.animSpeed,"",function(){t.trigger("nivo:animFinished")})},100+l)}else{setTimeout(function(){n.animate({opacity:"1.0"},r.animSpeed)},100+l)}l+=50;b++})}else if(o==="fold"){h(t,r,s);l=0;c=0;e(".nivo-slice",t).each(function(){var n=e(this);var i=n.width();n.css({top:"0px",width:"0px"});if(c===r.slices-1){setTimeout(function(){n.animate({width:i,opacity:"1.0"},r.animSpeed,"",function(){t.trigger("nivo:animFinished")})},100+l)}else{setTimeout(function(){n.animate({width:i,opacity:"1.0"},r.animSpeed)},100+l)}l+=50;c++})}else if(o==="fade"){h(t,r,s);m=e(".nivo-slice:first",t);m.css({width:t.width()+"px"});m.animate({opacity:"1.0"},r.animSpeed*2,"",function(){t.trigger("nivo:animFinished")})}else if(o==="slideInRight"){h(t,r,s);m=e(".nivo-slice:first",t);m.css({width:"0px",opacity:"1"});m.animate({width:t.width()+"px"},r.animSpeed*2,"",function(){t.trigger("nivo:animFinished")})}else if(o==="slideInLeft"){h(t,r,s);m=e(".nivo-slice:first",t);m.css({width:"0px",opacity:"1",left:"",right:"0px"});m.animate({width:t.width()+"px"},r.animSpeed*2,"",function(){m.css({left:"0px",right:""});t.trigger("nivo:animFinished")})}else if(o==="boxRandom"){p(t,r,s);g=r.boxCols*r.boxRows;c=0;l=0;y=v(e(".nivo-box",t));y.each(function(){var n=e(this);if(c===g-1){setTimeout(function(){n.animate({opacity:"1"},r.animSpeed,"",function(){t.trigger("nivo:animFinished")})},100+l)}else{setTimeout(function(){n.animate({opacity:"1"},r.animSpeed)},100+l)}l+=20;c++})}else if(o==="boxRain"||o==="boxRainReverse"||o==="boxRainGrow"||o==="boxRainGrowReverse"){p(t,r,s);g=r.boxCols*r.boxRows;c=0;l=0;var w=0;var E=0;var S=[];S[w]=[];y=e(".nivo-box",t);if(o==="boxRainReverse"||o==="boxRainGrowReverse"){y=e(".nivo-box",t)._reverse()}y.each(function(){S[w][E]=e(this);E++;if(E===r.boxCols){w++;E=0;S[w]=[]}});for(var x=0;x=0&&Tassets/lib/bower/ace-builds/src-min-noconflict/theme-chrome.jsnu[ace.define("ace/theme/chrome",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-chrome",t.cssText='.ace-chrome .ace_gutter {background: #ebebeb;color: #333;overflow : hidden;}.ace-chrome .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-chrome {background-color: #FFFFFF;color: black;}.ace-chrome .ace_cursor {color: black;}.ace-chrome .ace_invisible {color: rgb(191, 191, 191);}.ace-chrome .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-chrome .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-chrome .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-chrome .ace_invalid {background-color: rgb(153, 0, 0);color: white;}.ace-chrome .ace_fold {}.ace-chrome .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-chrome .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-chrome .ace_support.ace_type,.ace-chrome .ace_support.ace_class.ace-chrome .ace_support.ace_other {color: rgb(109, 121, 222);}.ace-chrome .ace_variable.ace_parameter {font-style:italic;color:#FD971F;}.ace-chrome .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-chrome .ace_comment {color: #236e24;}.ace-chrome .ace_comment.ace_doc {color: #236e24;}.ace-chrome .ace_comment.ace_doc.ace_tag {color: #236e24;}.ace-chrome .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-chrome .ace_variable {color: rgb(49, 132, 149);}.ace-chrome .ace_xml-pe {color: rgb(104, 104, 91);}.ace-chrome .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-chrome .ace_heading {color: rgb(12, 7, 255);}.ace-chrome .ace_list {color:rgb(185, 6, 144);}.ace-chrome .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-chrome .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-chrome .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-chrome .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-chrome .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-chrome .ace_gutter-active-line {background-color : #dcdcdc;}.ace-chrome .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-chrome .ace_storage,.ace-chrome .ace_keyword,.ace-chrome .ace_meta.ace_tag {color: rgb(147, 15, 128);}.ace-chrome .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-chrome .ace_string {color: #1A1AA6;}.ace-chrome .ace_entity.ace_other.ace_attribute-name {color: #994409;}.ace-chrome .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})PK<\ }Jf f <assets/lib/bower/ace-builds/src-min-noconflict/worker-css.jsnu["no use strict";(function(e){if(typeof e.window!="undefined"&&e.document)return;e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console,e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){console.error("Worker "+(i?i.stack:e))},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(t,n){n||(n=t,t=null);if(!n.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");n=e.normalizeModule(t,n);var r=e.require.modules[n];if(r)return r.initialized||(r.initialized=!0,r.exports=r.factory().exports),r.exports;var i=n.split("/");if(!e.require.tlns)return console.log("unable to load "+n);i[0]=e.require.tlns[i[0]]||i[0];var s=i.join("/")+".js";return e.require.id=n,importScripts(s),e.require(t,n)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id),n.length||(n=["require","exports","module"]);if(t.indexOf("text!")===0)return;var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},e.initBaseUrls=function(e){require.tlns=e},e.initSender=function(){var t=e.require("ace/lib/event_emitter").EventEmitter,n=e.require("ace/lib/oop"),r=function(){};return function(){n.implement(this,t),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(r.prototype),new r};var t=e.main=null,n=e.sender=null;e.onmessage=function(r){var i=r.data;if(i.command){if(!t[i.command])throw new Error("Unknown command:"+i.command);t[i.command].apply(t,i.args)}else if(i.init){initBaseUrls(i.tlns),require("ace/lib/es5-shim"),n=e.sender=initSender();var s=require(i.module)[i.classname];t=e.main=new s(n)}else i.event&&n&&n._signal(i.event,i.data)}})(this),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function i(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function s(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function o(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function u(e){var t,n,r;if(o(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(o(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(o(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if(typeof t!="function")throw new TypeError("Function.prototype.bind called on incompatible "+t);var n=c.call(arguments,1),i=function(){if(this instanceof i){var r=t.apply(this,n.concat(c.call(arguments)));return Object(r)===r?r:this}return t.apply(e,n.concat(c.call(arguments)))};return t.prototype&&(r.prototype=t.prototype,i.prototype=new r,r.prototype=null),i});var a=Function.prototype.call,f=Array.prototype,l=Object.prototype,c=f.slice,h=a.bind(l.toString),p=a.bind(l.hasOwnProperty),d,v,m,g,y;if(y=p(l,"__defineGetter__"))d=a.bind(l.__defineGetter__),v=a.bind(l.__defineSetter__),m=a.bind(l.__lookupGetter__),g=a.bind(l.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+tu)for(h=f;h--;)this[a+h]=this[u+h];if(s&&e===l)this.length=l,this.push.apply(this,i);else{this.length=l+s;for(h=0;h>>0;if(h(e)!="[object Function]")throw new TypeError;while(++i>>0,i=Array(r),s=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var o=0;o>>0,i=[],s,o=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var u=0;u>>0,i=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var s=0;s>>0,i=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var s=0;s>>0;if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");if(!r&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var i=0,s;if(arguments.length>=2)s=arguments[1];else do{if(i in n){s=n[i++];break}if(++i>=r)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;i>>0;if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");if(!r&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var i,s=r-1;if(arguments.length>=2)i=arguments[1];else do{if(s in n){i=n[s--];break}if(--s<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do s in this&&(i=e.call(void 0,i,n[s],s,t));while(s--);return i});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(e){var t=E&&h(this)=="[object String]"?this.split(""):F(this),n=t.length>>>0;if(!n)return-1;var r=0;arguments.length>1&&(r=s(arguments[1])),r=r>=0?r:Math.max(0,n+r);for(;r>>0;if(!n)return-1;var r=n-1;arguments.length>1&&(r=Math.min(r,s(arguments[1]))),r=r>=0?r:n-Math.abs(r);for(;r>=0;r--)if(r in t&&e===t[r])return r;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:l)});if(!Object.getOwnPropertyDescriptor){var S="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(e,t){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError(S+e);if(!p(e,t))return;var n,r,i;n={enumerable:!0,configurable:!0};if(y){var s=e.__proto__;e.__proto__=l;var r=m(e,t),i=g(e,t);e.__proto__=s;if(r||i)return r&&(n.get=r),i&&(n.set=i),n}return n.value=e[t],n}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)});if(!Object.create){var x;Object.prototype.__proto__===null?x=function(){return{__proto__:null}}:x=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(e,t){var n;if(e===null)n=x();else{if(typeof e!="object")throw new TypeError("typeof prototype["+typeof e+"] != 'object'");var r=function(){};r.prototype=e,n=new r,n.__proto__=e}return t!==void 0&&Object.defineProperties(n,t),n}}if(Object.defineProperty){var T=i({}),N=typeof document=="undefined"||i(document.createElement("div"));if(!T||!N)var C=Object.defineProperty}if(!Object.defineProperty||C){var k="Property description must be an object: ",L="Object.defineProperty called on non-object: ",A="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(e,t,n){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError(L+e);if(typeof n!="object"&&typeof n!="function"||n===null)throw new TypeError(k+n);if(C)try{return C.call(Object,e,t,n)}catch(r){}if(p(n,"value"))if(y&&(m(e,t)||g(e,t))){var i=e.__proto__;e.__proto__=l,delete e[t],e[t]=n.value,e.__proto__=i}else e[t]=n.value;else{if(!y)throw new TypeError(A);p(n,"get")&&d(e,t,n.get),p(n,"set")&&v(e,t,n.set)}return e}}Object.defineProperties||(Object.defineProperties=function(e,t){for(var n in t)p(t,n)&&Object.defineProperty(e,n,t[n]);return e}),Object.seal||(Object.seal=function(e){return e}),Object.freeze||(Object.freeze=function(e){return e});try{Object.freeze(function(){})}catch(O){Object.freeze=function(e){return function(t){return typeof t=="function"?t:e(t)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(e){return e}),Object.isSealed||(Object.isSealed=function(e){return!1}),Object.isFrozen||(Object.isFrozen=function(e){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;var t="";while(p(e,t))t+="?";e[t]=!0;var n=p(e,t);return delete e[t],n});if(!Object.keys){var M=!0,_=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],D=_.length;for(var P in{toString:null})M=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)p(e,t)&&I.push(t);if(M)for(var n=0,r=D;n0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):e.row<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};while(t.length>61440){var n=this._insertLines(e,t.slice(0,61440));t=t.slice(61440),e=n.row}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._signal("change",{data:o}),i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._signal("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._signal("change",{data:i}),r},this.remove=function(e){e instanceof s||(e=s.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._signal("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._signal("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._signal("change",{data:o})},this.replace=function(e,t){e instanceof s||(e=s.fromPoints(e.start,e.end));if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?tthis.end.column?1:0:ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.rowt)var r={row:t+1,column:0};else if(this.start.rowthis.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;if(t.action==="insertText")if(s.row===r&&s.column<=i){if(s.column!==i||!this.$insertRight)s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row)}else s.row!==o.row&&s.row=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/mode/css/csslint",["require","exports","module"],function(require,exports,module){function Reporter(e,t){this.messages=[],this.stats=[],this.lines=e,this.ruleset=t}var parserlib={};(function(){function e(){this._listeners={}}function t(e){this._input=e.replace(/\n\r?/g,"\n"),this._line=1,this._col=1,this._cursor=0}function n(e,t,n){this.col=n,this.line=t,this.message=e}function r(e,t,n,r){this.col=n,this.line=t,this.text=e,this.type=r}function i(e,n){this._reader=e?new t(e.toString()):null,this._token=null,this._tokenData=n,this._lt=[],this._ltIndex=0,this._ltIndexCache=[]}e.prototype={constructor:e,addListener:function(e,t){this._listeners[e]||(this._listeners[e]=[]),this._listeners[e].push(t)},fire:function(e){typeof e=="string"&&(e={type:e}),typeof e.target!="undefined"&&(e.target=this);if(typeof e.type=="undefined")throw new Error("Event object missing 'type' property.");if(this._listeners[e.type]){var t=this._listeners[e.type].concat();for(var n=0,r=t.length;n=0&&this._ltIndex-1&&!t[u.type].hide&&(u.channel=t[u.type].channel,this._token=u,this._lt.push(u),this._ltIndexCache.push(this._lt.length-this._ltIndex+i),this._lt.length>5&&this._lt.shift(),this._ltIndexCache.length>5&&this._ltIndexCache.shift(),this._ltIndex=this._lt.length),a=t[u.type],a&&(a.hide||a.channel!==undefined&&e!==a.channel)?this.get(e):u.type},LA:function(e){var t=e,n;if(e>0){if(e>5)throw new Error("Too much lookahead.");while(t)n=this.get(),t--;while(tthis._tokenData.length?"UNKNOWN_TOKEN":this._tokenData[e].name},tokenType:function(e){return this._tokenData[e]||-1},unget:function(){if(!this._ltIndexCache.length)throw new Error("Too much lookahead.");this._ltIndex-=this._ltIndexCache.pop(),this._token=this._lt[this._ltIndex-1]}},parserlib.util={StringReader:t,SyntaxError:n,SyntaxUnit:r,EventTarget:e,TokenStreamBase:i}})(),function(){function Combinator(e,t,n){SyntaxUnit.call(this,e,t,n,Parser.COMBINATOR_TYPE),this.type="unknown",/^\s+$/.test(e)?this.type="descendant":e==">"?this.type="child":e=="+"?this.type="adjacent-sibling":e=="~"&&(this.type="sibling")}function MediaFeature(e,t){SyntaxUnit.call(this,"("+e+(t!==null?":"+t:"")+")",e.startLine,e.startCol,Parser.MEDIA_FEATURE_TYPE),this.name=e,this.value=t}function MediaQuery(e,t,n,r,i){SyntaxUnit.call(this,(e?e+" ":"")+(t?t:"")+(t&&n.length>0?" and ":"")+n.join(" and "),r,i,Parser.MEDIA_QUERY_TYPE),this.modifier=e,this.mediaType=t,this.features=n}function Parser(e){EventTarget.call(this),this.options=e||{},this._tokenStream=null}function PropertyName(e,t,n,r){SyntaxUnit.call(this,e,n,r,Parser.PROPERTY_NAME_TYPE),this.hack=t}function PropertyValue(e,t,n){SyntaxUnit.call(this,e.join(" "),t,n,Parser.PROPERTY_VALUE_TYPE),this.parts=e}function PropertyValueIterator(e){this._i=0,this._parts=e.parts,this._marks=[],this.value=e}function PropertyValuePart(text,line,col){SyntaxUnit.call(this,text,line,col,Parser.PROPERTY_VALUE_PART_TYPE),this.type="unknown";var temp;if(/^([+\-]?[\d\.]+)([a-z]+)$/i.test(text)){this.type="dimension",this.value=+RegExp.$1,this.units=RegExp.$2;switch(this.units.toLowerCase()){case"em":case"rem":case"ex":case"px":case"cm":case"mm":case"in":case"pt":case"pc":case"ch":case"vh":case"vw":case"vm":this.type="length";break;case"deg":case"rad":case"grad":this.type="angle";break;case"ms":case"s":this.type="time";break;case"hz":case"khz":this.type="frequency";break;case"dpi":case"dpcm":this.type="resolution"}}else/^([+\-]?[\d\.]+)%$/i.test(text)?(this.type="percentage",this.value=+RegExp.$1):/^([+\-]?\d+)$/i.test(text)?(this.type="integer",this.value=+RegExp.$1):/^([+\-]?[\d\.]+)$/i.test(text)?(this.type="number",this.value=+RegExp.$1):/^#([a-f0-9]{3,6})/i.test(text)?(this.type="color",temp=RegExp.$1,temp.length==3?(this.red=parseInt(temp.charAt(0)+temp.charAt(0),16),this.green=parseInt(temp.charAt(1)+temp.charAt(1),16),this.blue=parseInt(temp.charAt(2)+temp.charAt(2),16)):(this.red=parseInt(temp.substring(0,2),16),this.green=parseInt(temp.substring(2,4),16),this.blue=parseInt(temp.substring(4,6),16))):/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/i.test(text)?(this.type="color",this.red=+RegExp.$1,this.green=+RegExp.$2,this.blue=+RegExp.$3):/^rgb\(\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)/i.test(text)?(this.type="color",this.red=+RegExp.$1*255/100,this.green=+RegExp.$2*255/100,this.blue=+RegExp.$3*255/100):/^rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d\.]+)\s*\)/i.test(text)?(this.type="color",this.red=+RegExp.$1,this.green=+RegExp.$2,this.blue=+RegExp.$3,this.alpha=+RegExp.$4):/^rgba\(\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*,\s*([\d\.]+)\s*\)/i.test(text)?(this.type="color",this.red=+RegExp.$1*255/100,this.green=+RegExp.$2*255/100,this.blue=+RegExp.$3*255/100,this.alpha=+RegExp.$4):/^hsl\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)/i.test(text)?(this.type="color",this.hue=+RegExp.$1,this.saturation=+RegExp.$2/100,this.lightness=+RegExp.$3/100):/^hsla\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*,\s*([\d\.]+)\s*\)/i.test(text)?(this.type="color",this.hue=+RegExp.$1,this.saturation=+RegExp.$2/100,this.lightness=+RegExp.$3/100,this.alpha=+RegExp.$4):/^url\(["']?([^\)"']+)["']?\)/i.test(text)?(this.type="uri",this.uri=RegExp.$1):/^([^\(]+)\(/i.test(text)?(this.type="function",this.name=RegExp.$1,this.value=text):/^["'][^"']*["']/.test(text)?(this.type="string",this.value=eval(text)):Colors[text.toLowerCase()]?(this.type="color",temp=Colors[text.toLowerCase()].substring(1),this.red=parseInt(temp.substring(0,2),16),this.green=parseInt(temp.substring(2,4),16),this.blue=parseInt(temp.substring(4,6),16)):/^[\,\/]$/.test(text)?(this.type="operator",this.value=text):/^[a-z\-\u0080-\uFFFF][a-z0-9\-\u0080-\uFFFF]*$/i.test(text)&&(this.type="identifier",this.value=text)}function Selector(e,t,n){SyntaxUnit.call(this,e.join(" "),t,n,Parser.SELECTOR_TYPE),this.parts=e,this.specificity=Specificity.calculate(this)}function SelectorPart(e,t,n,r,i){SyntaxUnit.call(this,n,r,i,Parser.SELECTOR_PART_TYPE),this.elementName=e,this.modifiers=t}function SelectorSubPart(e,t,n,r){SyntaxUnit.call(this,e,n,r,Parser.SELECTOR_SUB_PART_TYPE),this.type=t,this.args=[]}function Specificity(e,t,n,r){this.a=e,this.b=t,this.c=n,this.d=r}function isHexDigit(e){return e!==null&&h.test(e)}function isDigit(e){return e!==null&&/\d/.test(e)}function isWhitespace(e){return e!==null&&/\s/.test(e)}function isNewLine(e){return e!==null&&nl.test(e)}function isNameStart(e){return e!==null&&/[a-z_\u0080-\uFFFF\\]/i.test(e)}function isNameChar(e){return e!==null&&(isNameStart(e)||/[0-9\-\\]/.test(e))}function isIdentStart(e){return e!==null&&(isNameStart(e)||/\-\\/.test(e))}function mix(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function TokenStream(e){TokenStreamBase.call(this,e,Tokens)}function ValidationError(e,t,n){this.col=n,this.line=t,this.message=e}var EventTarget=parserlib.util.EventTarget,TokenStreamBase=parserlib.util.TokenStreamBase,StringReader=parserlib.util.StringReader,SyntaxError=parserlib.util.SyntaxError,SyntaxUnit=parserlib.util.SyntaxUnit,Colors={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgrey:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32",activeBorder:"Active window border.",activecaption:"Active window caption.",appworkspace:"Background color of multiple document interface.",background:"Desktop background.",buttonface:"The face background color for 3-D elements that appear 3-D due to one layer of surrounding border.",buttonhighlight:"The color of the border facing the light source for 3-D elements that appear 3-D due to one layer of surrounding border.",buttonshadow:"The color of the border away from the light source for 3-D elements that appear 3-D due to one layer of surrounding border.",buttontext:"Text on push buttons.",captiontext:"Text in caption, size box, and scrollbar arrow box.",graytext:"Grayed (disabled) text. This color is set to #000 if the current display driver does not support a solid gray color.",greytext:"Greyed (disabled) text. This color is set to #000 if the current display driver does not support a solid grey color.",highlight:"Item(s) selected in a control.",highlighttext:"Text of item(s) selected in a control.",inactiveborder:"Inactive window border.",inactivecaption:"Inactive window caption.",inactivecaptiontext:"Color of text in an inactive caption.",infobackground:"Background color for tooltip controls.",infotext:"Text color for tooltip controls.",menu:"Menu background.",menutext:"Text in menus.",scrollbar:"Scroll bar gray area.",threeddarkshadow:"The color of the darker (generally outer) of the two borders away from the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",threedface:"The face background color for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",threedhighlight:"The color of the lighter (generally outer) of the two borders facing the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",threedlightshadow:"The color of the darker (generally inner) of the two borders facing the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",threedshadow:"The color of the lighter (generally inner) of the two borders away from the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",window:"Window background.",windowframe:"Window frame.",windowtext:"Text in windows."};Combinator.prototype=new SyntaxUnit,Combinator.prototype.constructor=Combinator,MediaFeature.prototype=new SyntaxUnit,MediaFeature.prototype.constructor=MediaFeature,MediaQuery.prototype=new SyntaxUnit,MediaQuery.prototype.constructor=MediaQuery,Parser.DEFAULT_TYPE=0,Parser.COMBINATOR_TYPE=1,Parser.MEDIA_FEATURE_TYPE=2,Parser.MEDIA_QUERY_TYPE=3,Parser.PROPERTY_NAME_TYPE=4,Parser.PROPERTY_VALUE_TYPE=5,Parser.PROPERTY_VALUE_PART_TYPE=6,Parser.SELECTOR_TYPE=7,Parser.SELECTOR_PART_TYPE=8,Parser.SELECTOR_SUB_PART_TYPE=9,Parser.prototype=function(){var e=new EventTarget,t,n={constructor:Parser,DEFAULT_TYPE:0,COMBINATOR_TYPE:1,MEDIA_FEATURE_TYPE:2,MEDIA_QUERY_TYPE:3,PROPERTY_NAME_TYPE:4,PROPERTY_VALUE_TYPE:5,PROPERTY_VALUE_PART_TYPE:6,SELECTOR_TYPE:7,SELECTOR_PART_TYPE:8,SELECTOR_SUB_PART_TYPE:9,_stylesheet:function(){var e=this._tokenStream,t=null,n,r,i;this.fire("startstylesheet"),this._charset(),this._skipCruft();while(e.peek()==Tokens.IMPORT_SYM)this._import(),this._skipCruft();while(e.peek()==Tokens.NAMESPACE_SYM)this._namespace(),this._skipCruft();i=e.peek();while(i>Tokens.EOF){try{switch(i){case Tokens.MEDIA_SYM:this._media(),this._skipCruft();break;case Tokens.PAGE_SYM:this._page(),this._skipCruft();break;case Tokens.FONT_FACE_SYM:this._font_face(),this._skipCruft();break;case Tokens.KEYFRAMES_SYM:this._keyframes(),this._skipCruft();break;case Tokens.VIEWPORT_SYM:this._viewport(),this._skipCruft();break;case Tokens.UNKNOWN_SYM:e.get();if(!!this.options.strict)throw new SyntaxError("Unknown @ rule.",e.LT(0).startLine,e.LT(0).startCol);this.fire({type:"error",error:null,message:"Unknown @ rule: "+e.LT(0).value+".",line:e.LT(0).startLine,col:e.LT(0).startCol}),n=0;while(e.advance([Tokens.LBRACE,Tokens.RBRACE])==Tokens.LBRACE)n++;while(n)e.advance([Tokens.RBRACE]),n--;break;case Tokens.S:this._readWhitespace();break;default:if(!this._ruleset())switch(i){case Tokens.CHARSET_SYM:throw r=e.LT(1),this._charset(!1),new SyntaxError("@charset not allowed here.",r.startLine,r.startCol);case Tokens.IMPORT_SYM:throw r=e.LT(1),this._import(!1),new SyntaxError("@import not allowed here.",r.startLine,r.startCol);case Tokens.NAMESPACE_SYM:throw r=e.LT(1),this._namespace(!1),new SyntaxError("@namespace not allowed here.",r.startLine,r.startCol);default:e.get(),this._unexpectedToken(e.token())}}}catch(s){if(!(s instanceof SyntaxError&&!this.options.strict))throw s;this.fire({type:"error",error:s,message:s.message,line:s.line,col:s.col})}i=e.peek()}i!=Tokens.EOF&&this._unexpectedToken(e.token()),this.fire("endstylesheet")},_charset:function(e){var t=this._tokenStream,n,r,i,s;t.match(Tokens.CHARSET_SYM)&&(i=t.token().startLine,s=t.token().startCol,this._readWhitespace(),t.mustMatch(Tokens.STRING),r=t.token(),n=r.value,this._readWhitespace(),t.mustMatch(Tokens.SEMICOLON),e!==!1&&this.fire({type:"charset",charset:n,line:i,col:s}))},_import:function(e){var t=this._tokenStream,n,r,i,s=[];t.mustMatch(Tokens.IMPORT_SYM),i=t.token(),this._readWhitespace(),t.mustMatch([Tokens.STRING,Tokens.URI]),r=t.token().value.replace(/(?:url\()?["']([^"']+)["']\)?/,"$1"),this._readWhitespace(),s=this._media_query_list(),t.mustMatch(Tokens.SEMICOLON),this._readWhitespace(),e!==!1&&this.fire({type:"import",uri:r,media:s,line:i.startLine,col:i.startCol})},_namespace:function(e){var t=this._tokenStream,n,r,i,s;t.mustMatch(Tokens.NAMESPACE_SYM),n=t.token().startLine,r=t.token().startCol,this._readWhitespace(),t.match(Tokens.IDENT)&&(i=t.token().value,this._readWhitespace()),t.mustMatch([Tokens.STRING,Tokens.URI]),s=t.token().value.replace(/(?:url\()?["']([^"']+)["']\)?/,"$1"),this._readWhitespace(),t.mustMatch(Tokens.SEMICOLON),this._readWhitespace(),e!==!1&&this.fire({type:"namespace",prefix:i,uri:s,line:n,col:r})},_media:function(){var e=this._tokenStream,t,n,r;e.mustMatch(Tokens.MEDIA_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),r=this._media_query_list(),e.mustMatch(Tokens.LBRACE),this._readWhitespace(),this.fire({type:"startmedia",media:r,line:t,col:n});for(;;)if(e.peek()==Tokens.PAGE_SYM)this._page();else if(e.peek()==Tokens.FONT_FACE_SYM)this._font_face();else if(!this._ruleset())break;e.mustMatch(Tokens.RBRACE),this._readWhitespace(),this.fire({type:"endmedia",media:r,line:t,col:n})},_media_query_list:function(){var e=this._tokenStream,t=[];this._readWhitespace(),(e.peek()==Tokens.IDENT||e.peek()==Tokens.LPAREN)&&t.push(this._media_query());while(e.match(Tokens.COMMA))this._readWhitespace(),t.push(this._media_query());return t},_media_query:function(){var e=this._tokenStream,t=null,n=null,r=null,i=[];e.match(Tokens.IDENT)&&(n=e.token().value.toLowerCase(),n!="only"&&n!="not"?(e.unget(),n=null):r=e.token()),this._readWhitespace(),e.peek()==Tokens.IDENT?(t=this._media_type(),r===null&&(r=e.token())):e.peek()==Tokens.LPAREN&&(r===null&&(r=e.LT(1)),i.push(this._media_expression()));if(t===null&&i.length===0)return null;this._readWhitespace();while(e.match(Tokens.IDENT))e.token().value.toLowerCase()!="and"&&this._unexpectedToken(e.token()),this._readWhitespace(),i.push(this._media_expression());return new MediaQuery(n,t,i,r.startLine,r.startCol)},_media_type:function(){return this._media_feature()},_media_expression:function(){var e=this._tokenStream,t=null,n,r=null;return e.mustMatch(Tokens.LPAREN),t=this._media_feature(),this._readWhitespace(),e.match(Tokens.COLON)&&(this._readWhitespace(),n=e.LT(1),r=this._expression()),e.mustMatch(Tokens.RPAREN),this._readWhitespace(),new MediaFeature(t,r?new SyntaxUnit(r,n.startLine,n.startCol):null)},_media_feature:function(){var e=this._tokenStream;return e.mustMatch(Tokens.IDENT),SyntaxUnit.fromToken(e.token())},_page:function(){var e=this._tokenStream,t,n,r=null,i=null;e.mustMatch(Tokens.PAGE_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),e.match(Tokens.IDENT)&&(r=e.token().value,r.toLowerCase()==="auto"&&this._unexpectedToken(e.token())),e.peek()==Tokens.COLON&&(i=this._pseudo_page()),this._readWhitespace(),this.fire({type:"startpage",id:r,pseudo:i,line:t,col:n}),this._readDeclarations(!0,!0),this.fire({type:"endpage",id:r,pseudo:i,line:t,col:n})},_margin:function(){var e=this._tokenStream,t,n,r=this._margin_sym();return r?(t=e.token().startLine,n=e.token().startCol,this.fire({type:"startpagemargin",margin:r,line:t,col:n}),this._readDeclarations(!0),this.fire({type:"endpagemargin",margin:r,line:t,col:n}),!0):!1},_margin_sym:function(){var e=this._tokenStream;return e.match([Tokens.TOPLEFTCORNER_SYM,Tokens.TOPLEFT_SYM,Tokens.TOPCENTER_SYM,Tokens.TOPRIGHT_SYM,Tokens.TOPRIGHTCORNER_SYM,Tokens.BOTTOMLEFTCORNER_SYM,Tokens.BOTTOMLEFT_SYM,Tokens.BOTTOMCENTER_SYM,Tokens.BOTTOMRIGHT_SYM,Tokens.BOTTOMRIGHTCORNER_SYM,Tokens.LEFTTOP_SYM,Tokens.LEFTMIDDLE_SYM,Tokens.LEFTBOTTOM_SYM,Tokens.RIGHTTOP_SYM,Tokens.RIGHTMIDDLE_SYM,Tokens.RIGHTBOTTOM_SYM])?SyntaxUnit.fromToken(e.token()):null},_pseudo_page:function(){var e=this._tokenStream;return e.mustMatch(Tokens.COLON),e.mustMatch(Tokens.IDENT),e.token().value},_font_face:function(){var e=this._tokenStream,t,n;e.mustMatch(Tokens.FONT_FACE_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),this.fire({type:"startfontface",line:t,col:n}),this._readDeclarations(!0),this.fire({type:"endfontface",line:t,col:n})},_viewport:function(){var e=this._tokenStream,t,n;e.mustMatch(Tokens.VIEWPORT_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),this.fire({type:"startviewport",line:t,col:n}),this._readDeclarations(!0),this.fire({type:"endviewport",line:t,col:n})},_operator:function(e){var t=this._tokenStream,n=null;if(t.match([Tokens.SLASH,Tokens.COMMA])||e&&t.match([Tokens.PLUS,Tokens.STAR,Tokens.MINUS]))n=t.token(),this._readWhitespace();return n?PropertyValuePart.fromToken(n):null},_combinator:function(){var e=this._tokenStream,t=null,n;return e.match([Tokens.PLUS,Tokens.GREATER,Tokens.TILDE])&&(n=e.token(),t=new Combinator(n.value,n.startLine,n.startCol),this._readWhitespace()),t},_unary_operator:function(){var e=this._tokenStream;return e.match([Tokens.MINUS,Tokens.PLUS])?e.token().value:null},_property:function(){var e=this._tokenStream,t=null,n=null,r,i,s,o;return e.peek()==Tokens.STAR&&this.options.starHack&&(e.get(),i=e.token(),n=i.value,s=i.startLine,o=i.startCol),e.match(Tokens.IDENT)&&(i=e.token(),r=i.value,r.charAt(0)=="_"&&this.options.underscoreHack&&(n="_",r=r.substring(1)),t=new PropertyName(r,n,s||i.startLine,o||i.startCol),this._readWhitespace()),t},_ruleset:function(){var e=this._tokenStream,t,n;try{n=this._selectors_group()}catch(r){if(r instanceof SyntaxError&&!this.options.strict){this.fire({type:"error",error:r,message:r.message,line:r.line,col:r.col}),t=e.advance([Tokens.RBRACE]);if(t!=Tokens.RBRACE)throw r;return!0}throw r}return n&&(this.fire({type:"startrule",selectors:n,line:n[0].line,col:n[0].col}),this._readDeclarations(!0),this.fire({type:"endrule",selectors:n,line:n[0].line,col:n[0].col})),n},_selectors_group:function(){var e=this._tokenStream,t=[],n;n=this._selector();if(n!==null){t.push(n);while(e.match(Tokens.COMMA))this._readWhitespace(),n=this._selector(),n!==null?t.push(n):this._unexpectedToken(e.LT(1))}return t.length?t:null},_selector:function(){var e=this._tokenStream,t=[],n=null,r=null,i=null;n=this._simple_selector_sequence();if(n===null)return null;t.push(n);do{r=this._combinator();if(r!==null)t.push(r),n=this._simple_selector_sequence(),n===null?this._unexpectedToken(e.LT(1)):t.push(n);else{if(!this._readWhitespace())break;i=new Combinator(e.token().value,e.token().startLine,e.token().startCol),r=this._combinator(),n=this._simple_selector_sequence(),n===null?r!==null&&this._unexpectedToken(e.LT(1)):(r!==null?t.push(r):t.push(i),t.push(n))}}while(!0);return new Selector(t,t[0].line,t[0].col)},_simple_selector_sequence:function(){var e=this._tokenStream,t=null,n=[],r="",i=[function(){return e.match(Tokens.HASH)?new SelectorSubPart(e.token().value,"id",e.token().startLine,e.token().startCol):null},this._class,this._attrib,this._pseudo,this._negation],s=0,o=i.length,u=null,a=!1,f,l;f=e.LT(1).startLine,l=e.LT(1).startCol,t=this._type_selector(),t||(t=this._universal()),t!==null&&(r+=t);for(;;){if(e.peek()===Tokens.S)break;while(s1&&e.unget()),null)},_class:function(){var e=this._tokenStream,t;return e.match(Tokens.DOT)?(e.mustMatch(Tokens.IDENT),t=e.token(),new SelectorSubPart("."+t.value,"class",t.startLine,t.startCol-1)):null},_element_name:function(){var e=this._tokenStream,t;return e.match(Tokens.IDENT)?(t=e.token(),new SelectorSubPart(t.value,"elementName",t.startLine,t.startCol)):null},_namespace_prefix:function(){var e=this._tokenStream,t="";if(e.LA(1)===Tokens.PIPE||e.LA(2)===Tokens.PIPE)e.match([Tokens.IDENT,Tokens.STAR])&&(t+=e.token().value),e.mustMatch(Tokens.PIPE),t+="|";return t.length?t:null},_universal:function(){var e=this._tokenStream,t="",n;return n=this._namespace_prefix(),n&&(t+=n),e.match(Tokens.STAR)&&(t+="*"),t.length?t:null},_attrib:function(){var e=this._tokenStream,t=null,n,r;return e.match(Tokens.LBRACKET)?(r=e.token(),t=r.value,t+=this._readWhitespace(),n=this._namespace_prefix(),n&&(t+=n),e.mustMatch(Tokens.IDENT),t+=e.token().value,t+=this._readWhitespace(),e.match([Tokens.PREFIXMATCH,Tokens.SUFFIXMATCH,Tokens.SUBSTRINGMATCH,Tokens.EQUALS,Tokens.INCLUDES,Tokens.DASHMATCH])&&(t+=e.token().value,t+=this._readWhitespace(),e.mustMatch([Tokens.IDENT,Tokens.STRING]),t+=e.token().value,t+=this._readWhitespace()),e.mustMatch(Tokens.RBRACKET),new SelectorSubPart(t+"]","attribute",r.startLine,r.startCol)):null},_pseudo:function(){var e=this._tokenStream,t=null,n=":",r,i;return e.match(Tokens.COLON)&&(e.match(Tokens.COLON)&&(n+=":"),e.match(Tokens.IDENT)?(t=e.token().value,r=e.token().startLine,i=e.token().startCol-n.length):e.peek()==Tokens.FUNCTION&&(r=e.LT(1).startLine,i=e.LT(1).startCol-n.length,t=this._functional_pseudo()),t&&(t=new SelectorSubPart(n+t,"pseudo",r,i))),t},_functional_pseudo:function(){var e=this._tokenStream,t=null;return e.match(Tokens.FUNCTION)&&(t=e.token().value,t+=this._readWhitespace(),t+=this._expression(),e.mustMatch(Tokens.RPAREN),t+=")"),t},_expression:function(){var e=this._tokenStream,t="";while(e.match([Tokens.PLUS,Tokens.MINUS,Tokens.DIMENSION,Tokens.NUMBER,Tokens.STRING,Tokens.IDENT,Tokens.LENGTH,Tokens.FREQ,Tokens.ANGLE,Tokens.TIME,Tokens.RESOLUTION,Tokens.SLASH]))t+=e.token().value,t+=this._readWhitespace();return t.length?t:null},_negation:function(){var e=this._tokenStream,t,n,r="",i,s=null;return e.match(Tokens.NOT)&&(r=e.token().value,t=e.token().startLine,n=e.token().startCol,r+=this._readWhitespace(),i=this._negation_arg(),r+=i,r+=this._readWhitespace(),e.match(Tokens.RPAREN),r+=e.token().value,s=new SelectorSubPart(r,"not",t,n),s.args.push(i)),s},_negation_arg:function(){var e=this._tokenStream,t=[this._type_selector,this._universal,function(){return e.match(Tokens.HASH)?new SelectorSubPart(e.token().value,"id",e.token().startLine,e.token().startCol):null},this._class,this._attrib,this._pseudo],n=null,r=0,i=t.length,s,o,u,a;o=e.LT(1).startLine,u=e.LT(1).startCol;while(r0?new PropertyValue(n,n[0].line,n[0].col):null},_term:function(){var e=this._tokenStream,t=null,n=null,r,i,s;return t=this._unary_operator(),t!==null&&(i=e.token().startLine,s=e.token().startCol),e.peek()==Tokens.IE_FUNCTION&&this.options.ieFilters?(n=this._ie_function(),t===null&&(i=e.token().startLine,s=e.token().startCol)):e.match([Tokens.NUMBER,Tokens.PERCENTAGE,Tokens.LENGTH,Tokens.ANGLE,Tokens.TIME,Tokens.FREQ,Tokens.STRING,Tokens.IDENT,Tokens.URI,Tokens.UNICODE_RANGE])?(n=e.token().value,t===null&&(i=e.token().startLine,s=e.token().startCol),this._readWhitespace()):(r=this._hexcolor(),r===null?(t===null&&(i=e.LT(1).startLine,s=e.LT(1).startCol),n===null&&(e.LA(3)==Tokens.EQUALS&&this.options.ieFilters?n=this._ie_function():n=this._function())):(n=r.value,t===null&&(i=r.startLine,s=r.startCol))),n!==null?new PropertyValuePart(t!==null?t+n:n,i,s):null},_function:function(){var e=this._tokenStream,t=null,n=null,r;if(e.match(Tokens.FUNCTION)){t=e.token().value,this._readWhitespace(),n=this._expr(!0),t+=n;if(this.options.ieFilters&&e.peek()==Tokens.EQUALS)do{this._readWhitespace()&&(t+=e.token().value),e.LA(0)==Tokens.COMMA&&(t+=e.token().value),e.match(Tokens.IDENT),t+=e.token().value,e.match(Tokens.EQUALS),t+=e.token().value,r=e.peek();while(r!=Tokens.COMMA&&r!=Tokens.S&&r!=Tokens.RPAREN)e.get(),t+=e.token().value,r=e.peek()}while(e.match([Tokens.COMMA,Tokens.S]));e.match(Tokens.RPAREN),t+=")",this._readWhitespace()}return t},_ie_function:function(){var e=this._tokenStream,t=null,n=null,r;if(e.match([Tokens.IE_FUNCTION,Tokens.FUNCTION])){t=e.token().value;do{this._readWhitespace()&&(t+=e.token().value),e.LA(0)==Tokens.COMMA&&(t+=e.token().value),e.match(Tokens.IDENT),t+=e.token().value,e.match(Tokens.EQUALS),t+=e.token().value,r=e.peek();while(r!=Tokens.COMMA&&r!=Tokens.S&&r!=Tokens.RPAREN)e.get(),t+=e.token().value,r=e.peek()}while(e.match([Tokens.COMMA,Tokens.S]));e.match(Tokens.RPAREN),t+=")",this._readWhitespace()}return t},_hexcolor:function(){var e=this._tokenStream,t=null,n;if(e.match(Tokens.HASH)){t=e.token(),n=t.value;if(!/#[a-f0-9]{3,6}/i.test(n))throw new SyntaxError("Expected a hex color but found '"+n+"' at line "+t.startLine+", col "+t.startCol+".",t.startLine,t.startCol);this._readWhitespace()}return t},_keyframes:function(){var e=this._tokenStream,t,n,r,i="";e.mustMatch(Tokens.KEYFRAMES_SYM),t=e.token(),/^@\-([^\-]+)\-/.test(t.value)&&(i=RegExp.$1),this._readWhitespace(),r=this._keyframe_name(),this._readWhitespace(),e.mustMatch(Tokens.LBRACE),this.fire({type:"startkeyframes",name:r,prefix:i,line:t.startLine,col:t.startCol}),this._readWhitespace(),n=e.peek();while(n==Tokens.IDENT||n==Tokens.PERCENTAGE)this._keyframe_rule(),this._readWhitespace(),n=e.peek();this.fire({type:"endkeyframes",name:r,prefix:i,line:t.startLine,col:t.startCol}),this._readWhitespace(),e.mustMatch(Tokens.RBRACE)},_keyframe_name:function(){var e=this._tokenStream,t;return e.mustMatch([Tokens.IDENT,Tokens.STRING]),SyntaxUnit.fromToken(e.token())},_keyframe_rule:function(){var e=this._tokenStream,t,n=this._key_list();this.fire({type:"startkeyframerule",keys:n,line:n[0].line,col:n[0].col}),this._readDeclarations(!0),this.fire({type:"endkeyframerule",keys:n,line:n[0].line,col:n[0].col})},_key_list:function(){var e=this._tokenStream,t,n,r=[];r.push(this._key()),this._readWhitespace();while(e.match(Tokens.COMMA))this._readWhitespace(),r.push(this._key()),this._readWhitespace();return r},_key:function(){var e=this._tokenStream,t;if(e.match(Tokens.PERCENTAGE))return SyntaxUnit.fromToken(e.token());if(e.match(Tokens.IDENT)){t=e.token();if(/from|to/i.test(t.value))return SyntaxUnit.fromToken(t);e.unget()}this._unexpectedToken(e.LT(1))},_skipCruft:function(){while(this._tokenStream.match([Tokens.S,Tokens.CDO,Tokens.CDC]));},_readDeclarations:function(e,t){var n=this._tokenStream,r;this._readWhitespace(),e&&n.mustMatch(Tokens.LBRACE),this._readWhitespace();try{for(;;){if(!(n.match(Tokens.SEMICOLON)||t&&this._margin())){if(!this._declaration())break;if(!n.match(Tokens.SEMICOLON))break}this._readWhitespace()}n.mustMatch(Tokens.RBRACE),this._readWhitespace()}catch(i){if(!(i instanceof SyntaxError&&!this.options.strict))throw i;this.fire({type:"error",error:i,message:i.message,line:i.line,col:i.col}),r=n.advance([Tokens.SEMICOLON,Tokens.RBRACE]);if(r==Tokens.SEMICOLON)this._readDeclarations(!1,t);else if(r!=Tokens.RBRACE)throw i}},_readWhitespace:function(){var e=this._tokenStream,t="";while(e.match(Tokens.S))t+=e.token().value;return t},_unexpectedToken:function(e){throw new SyntaxError("Unexpected token '"+e.value+"' at line "+e.startLine+", col "+e.startCol+".",e.startLine,e.startCol)},_verifyEnd:function(){this._tokenStream.LA(1)!=Tokens.EOF&&this._unexpectedToken(this._tokenStream.LT(1))},_validateProperty:function(e,t){Validation.validate(e,t)},parse:function(e){this._tokenStream=new TokenStream(e,Tokens),this._stylesheet()},parseStyleSheet:function(e){return this.parse(e)},parseMediaQuery:function(e){this._tokenStream=new TokenStream(e,Tokens);var t=this._media_query();return this._verifyEnd(),t},parsePropertyValue:function(e){this._tokenStream=new TokenStream(e,Tokens),this._readWhitespace();var t=this._expr();return this._readWhitespace(),this._verifyEnd(),t},parseRule:function(e){this._tokenStream=new TokenStream(e,Tokens),this._readWhitespace();var t=this._ruleset();return this._readWhitespace(),this._verifyEnd(),t},parseSelector:function(e){this._tokenStream=new TokenStream(e,Tokens),this._readWhitespace();var t=this._selector();return this._readWhitespace(),this._verifyEnd(),t},parseStyleAttribute:function(e){e+="}",this._tokenStream=new TokenStream(e,Tokens),this._readDeclarations()}};for(t in n)n.hasOwnProperty(t)&&(e[t]=n[t]);return e}();var Properties={"align-items":"flex-start | flex-end | center | baseline | stretch","align-content":"flex-start | flex-end | center | space-between | space-around | stretch","align-self":"auto | flex-start | flex-end | center | baseline | stretch","-webkit-align-items":"flex-start | flex-end | center | baseline | stretch","-webkit-align-content":"flex-start | flex-end | center | space-between | space-around | stretch","-webkit-align-self":"auto | flex-start | flex-end | center | baseline | stretch","alignment-adjust":"auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | | ","alignment-baseline":"baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical",animation:1,"animation-delay":{multi:"
    "),u=this.$getTop(t.end.row,r);var f=t.end.column*r.characterWidth;e.push("
    "),o=(t.end.row-t.start.row-1)*r.lineHeight;if(o<0)return;u=this.$getTop(t.start.row+1,r),e.push("
    ")},this.drawSingleLineMarker=function(e,t,n,r,i,s){var o=r.lineHeight,u=(t.end.column+(i||0)-t.start.column)*r.characterWidth,a=this.$getTop(t.start.row,r),f=this.$padding+t.start.column*r.characterWidth;e.push("
    ")},this.drawFullLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;t.start.row!=t.end.row&&(o+=this.$getTop(t.end.row,r)-s),e.push("
    ")},this.drawScreenLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;e.push("
    ")}}).call(s.prototype),t.Marker=s}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),u=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){r.implement(this,u),this.EOF_CHAR="¶",this.EOL_CHAR_LF="¬",this.EOL_CHAR_CRLF="¤",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="→",this.SPACE_CHAR="·",this.$padding=0,this.$updateEolChar=function(){var e=this.session.doc.getNewLineCharacter()=="\n"?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=e)return this.EOL_CHAR=e,!0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;var t=this.$tabStrings=[0];for(var n=1;n"+this.TAB_CHAR+s.stringRepeat(" ",n-1)+""):t.push(s.stringRepeat(" ",n));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var r="ace_indent-guide",i="",o="";if(this.showInvisibles){r+=" ace_invisible",i=" ace_invisible_space",o=" ace_invisible_tab";var u=s.stringRepeat(this.SPACE_CHAR,this.tabSize),a=this.TAB_CHAR+s.stringRepeat(" ",this.tabSize-1)}else var u=s.stringRepeat(" ",this.tabSize),a=u;this.$tabStrings[" "]=""+u+"",this.$tabStrings[" "]=""+a+""}},this.updateLines=function(e,t,n){(this.config.lastRow!=e.lastRow||this.config.firstRow!=e.firstRow)&&this.scrollLines(e),this.config=e;var r=Math.max(t,e.firstRow),s=Math.min(n,e.lastRow),o=this.element.childNodes,u=0;for(var a=e.firstRow;al&&(a=f.end.row+1,f=this.session.getNextFoldLine(a,f),l=f?f.start.row:Infinity);if(a>s)break;var c=o[u++];if(c){var h=[];this.$renderLine(h,a,!this.$useLineGroups(),a==l?f:!1),c.style.height=e.lineHeight*this.session.getRowLength(a)+"px",i.setInnerHtml(c,h.join(""))}a++}},this.scrollLines=function(e){var t=this.config;this.config=e;if(!t||t.lastRow0;r--)n.removeChild(n.firstChild);if(t.lastRow>e.lastRow)for(var r=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);r>0;r--)n.removeChild(n.lastChild);if(e.firstRowt.lastRow){var i=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);n.appendChild(i)}},this.$renderLinesFragment=function(e,t,n){var r=this.element.ownerDocument.createDocumentFragment(),s=t,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>n)break;var a=i.createElement("div"),f=[];this.$renderLine(f,s,!1,s==u?o:!1),a.innerHTML=f.join("");if(this.$useLineGroups())a.className="ace_line_group",r.appendChild(a),a.style.height=e.lineHeight*this.session.getRowLength(s)+"px";else while(a.firstChild)r.appendChild(a.firstChild);s++}return r},this.update=function(e){this.config=e;var t=[],n=e.firstRow,r=e.lastRow,s=n,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>r)break;this.$useLineGroups()&&t.push("
    "),this.$renderLine(t,s,!1,s==u?o:!1),this.$useLineGroups()&&t.push("
    "),s++}this.element=i.setInnerHtml(this.element,t.join(""))},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,r){var i=this,o=/\t|&|<|( +)|([\x00-\x1f\x80-\xa0\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g,u=function(e,n,r,o,u){if(n)return i.showInvisibles?""+s.stringRepeat(i.SPACE_CHAR,e.length)+"":s.stringRepeat(" ",e.length);if(e=="&")return"&";if(e=="<")return"<";if(e==" "){var a=i.session.getScreenTabSize(t+o);return t+=a-1,i.$tabStrings[a]}if(e==" "){var f=i.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",l=i.showInvisibles?i.SPACE_CHAR:"";return t+=1,""+l+""}return r?""+i.SPACE_CHAR+"":(t+=1,""+e+"")},a=r.replace(o,u);if(!this.$textToken[n.type]){var f="ace_"+n.type.replace(/\./g," ace_"),l="";n.type=="fold"&&(l=" style='width:"+n.value.length*this.config.characterWidth+"px;' "),e.push("",a,"")}else e.push(a);return t+r.length},this.renderIndentGuide=function(e,t,n){var r=t.search(this.$indentGuideRe);return r<=0||r>=n?t:t[0]==" "?(r-=r%this.tabSize,e.push(s.stringRepeat(this.$tabStrings[" "],r/this.tabSize)),t.substr(r)):t[0]==" "?(e.push(s.stringRepeat(this.$tabStrings[" "],r)),t.substr(r)):t},this.$renderWrappedLine=function(e,t,n,r){var i=0,s=0,o=n[0],u=0;for(var a=0;a=o)u=this.$renderToken(e,u,f,l.substring(0,o-i)),l=l.substring(o-i),i=o,r||e.push("
    ","
    "),s++,u=0,o=n[s]||Number.MAX_VALUE;l.length!=0&&(i+=l.length,u=this.$renderToken(e,u,f,l))}}},this.$renderSimpleLine=function(e,t){var n=0,r=t[0],i=r.value;this.displayIndentGuides&&(i=this.renderIndentGuide(e,i)),i&&(n=this.$renderToken(e,n,r,i));for(var s=1;s");if(i.length){var s=this.session.getRowSplitData(t);s&&s.length?this.$renderWrappedLine(e,i,s,n):this.$renderSimpleLine(e,i)}this.showInvisibles&&(r&&(t=r.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),n||e.push("
    ")},this.$getFoldLineTokens=function(e,t){function i(e,t,n){var i=0,s=0;while(s+e[i].value.lengthn-t&&(o=o.substring(0,n-t)),r.push({type:e[i].type,value:o}),s=t+o.length,i+=1}while(sn?r.push({type:e[i].type,value:o.substring(0,n-s)}):r.push(e[i]),s+=o.length,i+=1}}var n=this.session,r=[],s=n.getTokens(e);return t.walk(function(e,t,o,u,a){e!=null?r.push({type:"fold",value:e}):(a&&(s=n.getTokens(t)),s.length&&i(s,u,o))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){var r=e("../lib/dom"),i,s=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),i===undefined&&(i="opacity"in this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=this.$updateVisibility.bind(this)};(function(){this.$updateVisibility=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.opacity=e?"":"0"},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e!=this.smoothBlinking&&!i&&(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=(e?this.$updateOpacity:this.$updateVisibility).bind(this),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0);if(!this.isBlinking||!this.blinkInterval||!this.isVisible)return;this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e),r=this.$padding+n.column*this.config.characterWidth,i=(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:r,top:i}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,n=0,r=0;if(t===undefined||t.length===0)t=[{cursor:null}];for(var n=0,i=t.length;ne.height+e.offset||s.top<0)&&n>1)continue;var o=(this.cursors[r++]||this.addCursor()).style;o.left=s.left+"px",o.top=s.top+"px",o.width=e.characterWidth+"px",o.height=e.lineHeight+"px"}while(this.cursors.length>r)this.removeCursor();var u=this.session.getOverwrite();this.$setOverwrite(u),this.$pixelPos=s,this.restartTimer()},this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(s.prototype),t.Cursor=s}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/event_emitter").EventEmitter,u=function(e){this.element=i.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=i.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,s.addListener(this.element,"scroll",this.onScroll.bind(this)),s.addListener(this.element,"mousedown",s.preventDefault)};(function(){r.implement(this,o),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e}}).call(u.prototype);var a=function(e,t){u.call(this,e),this.scrollTop=0,t.$scrollbarWidth=this.width=i.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};r.inherits(a,u),function(){this.classSuffix="-v",this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit("scroll",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=function(e){this.inner.style.height=e+"px"},this.setScrollHeight=function(e){this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=e)}}.call(a.prototype);var f=function(e,t){u.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};r.inherits(f,u),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(f.prototype),t.ScrollBar=a,t.ScrollBarV=a,t.ScrollBarH=f,t.VScrollBar=a,t.HScrollBar=f}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){var r=e("./lib/event"),i=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){this.changes=this.changes|e;if(!this.pending&&this.changes){this.pending=!0;var t=this;r.nextFrame(function(){t.pending=!1;var e;while(e=t.changes)t.changes=0,t.onRender(e)},this.window)}}}).call(i.prototype),t.RenderLoop=i}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/event_emitter").EventEmitter,u=0,a=t.FontMetrics=function(e,t){this.el=i.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=i.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=i.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),u||this.$testFractionalRect(),this.$measureNode.innerHTML=s.stringRepeat("X",u),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){r.implement(this,o),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=i.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;t>0&&t<1?u=1:u=100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="-100px",e.visibility="hidden",e.position="fixed",e.whiteSpace="pre",e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&this.$pollSizeChangesTimer},this.$measureSizes=function(){if(u===1)var e=this.$measureNode.getBoundingClientRect(),t={height:e.height,width:e.width};else var t={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/u};return t.width===0||t.height===0?null:t},this.$measureCharWidth=function(e){this.$main.innerHTML=s.stringRepeat(e,u);var t=this.$main.getBoundingClientRect();return t.width/u},this.getCharacterWidth=function(e){var t=this.charSizes[e];return t===undefined&&(this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(a.prototype)}),ace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"],function(e,t,n){function h(e,t,n){return c.$options.wrap=!0,c.$options.needle=t,c.$options.backwards=n==-1,c.find(e)}function v(e,t){return e.row==t.row&&e.column==t.column}function m(e){if(e.$multiselectOnSessionChange)return;e.$onAddRange=e.$onAddRange.bind(e),e.$onRemoveRange=e.$onRemoveRange.bind(e),e.$onMultiSelect=e.$onMultiSelect.bind(e),e.$onSingleSelect=e.$onSingleSelect.bind(e),e.$multiselectOnSessionChange=t.onSessionChange.bind(e),e.$multiselectOnSessionChange(e),e.on("changeSession",e.$multiselectOnSessionChange),e.on("mousedown",o),e.commands.addCommands(f.defaultCommands),g(e)}function g(e){function r(t){n&&(e.renderer.setMouseCursor(""),n=!1)}var t=e.textInput.getElement(),n=!1;u.addListener(t,"keydown",function(t){t.keyCode==18&&!(t.ctrlKey||t.shiftKey||t.metaKey)?n||(e.renderer.setMouseCursor("crosshair"),n=!0):n&&r()}),u.addListener(t,"keyup",r),u.addListener(t,"blur",r)}var r=e("./range_list").RangeList,i=e("./range").Range,s=e("./selection").Selection,o=e("./mouse/multi_select_handler").onMouseDown,u=e("./lib/event"),a=e("./lib/lang"),f=e("./commands/multi_select_commands");t.commands=f.defaultCommands.concat(f.multiSelectCommands);var l=e("./search").Search,c=new l,p=e("./edit_session").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(p.prototype),function(){this.ranges=null,this.rangeList=null,this.addRange=function(e,t){if(!e)return;if(!this.inMultiSelectMode&&this.rangeCount==0){var n=this.toOrientedRange();this.rangeList.add(n),this.rangeList.add(e);if(this.rangeList.ranges.length!=2)return this.rangeList.removeAll(),t||this.fromOrientedRange(e);this.rangeList.removeAll(),this.rangeList.add(n),this.$onAddRange(n)}e.cursor||(e.cursor=e.end);var r=this.rangeList.add(e);return this.$onAddRange(e),r.length&&this.$onRemoveRange(r),this.rangeCount>1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){this.rangeCount=this.rangeList.ranges.length;if(this.rangeCount==1&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var r=this.ranges.indexOf(e[n]);this.ranges.splice(r,1)}this._signal("removeRange",{ranges:e}),this.rangeCount==0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){if(this.rangeList)return;this.rangeList=new r,this.ranges=[],this.rangeCount=0},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var n=this.getRange(),r=this.isBackwards(),s=n.start.row,o=n.end.row;if(s==o){if(r)var u=n.end,a=n.start;else var u=n.start,a=n.end;this.addRange(i.fromPoints(a,a)),this.addRange(i.fromPoints(u,u));return}var f=[],l=this.getLineRange(s,!0);l.start.column=n.start.column,f.push(l);for(var c=s+1;c1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var r=this.session.documentToScreenPosition(this.selectionLead),s=this.session.documentToScreenPosition(this.selectionAnchor),o=this.rectangularRangeBlock(r,s);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var r=[],s=e.column0)d--;if(d>0){var m=0;while(r[m].isEmpty())m++}for(var g=d;g>=m;g--)r[g].isEmpty()&&r.splice(g,1)}return r}}.call(s.prototype);var d=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(!e.marker)return;this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);t!=-1&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length},this.removeSelectionMarkers=function(e){var t=this.session.$selectionMarkers;for(var n=e.length;n--;){var r=e[n];if(!r.marker)continue;this.session.removeMarker(r.marker);var i=t.indexOf(r);i!=-1&&t.splice(i,1)}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){if(this.inMultiSelectMode)return;this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onSingleSelect=function(e){if(this.session.multiSelect.inVirtualMode)return;this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection")},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(!n.multiSelect)return;if(!t.multiSelectAction){var r=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}else t.multiSelectAction=="forEach"?r=n.forEachSelection(t,e.args):t.multiSelectAction=="forEachLine"?r=n.forEachSelection(t,e.args,!0):t.multiSelectAction=="single"?(n.exitMultiSelectMode(),r=t.exec(n,e.args||{})):r=t.multiSelectAction(n,e.args||{});return r},this.forEachSelection=function(e,t,n){if(this.inVirtualSelectionMode)return;var r=this.session,i=this.selection,o=i.rangeList,u,a=i._eventRegistry;i._eventRegistry={};var f=new s(r);this.inVirtualSelectionMode=!0;for(var l=o.ranges.length;l--;){if(n)while(l>0&&o.ranges[l].start.row==o.ranges[l-1].end.row)l--;f.fromOrientedRange(o.ranges[l]),f.id=o.ranges[l].marker,this.selection=r.selection=f;var c=e.exec(this,t||{});u!==undefined&&(u=c),f.toOrientedRange(o.ranges[l])}f.detach(),this.selection=r.selection=i,this.inVirtualSelectionMode=!1,i._eventRegistry=a,i.mergeOverlappingRanges();var h=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),h&&h.from==h.to&&this.renderer.animateScrolling(h.from),u},this.exitMultiSelectMode=function(){if(!this.inMultiSelectMode||this.inVirtualSelectionMode)return;this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var t=this.multiSelect.rangeList.ranges,n=[];for(var r=0;rr.length||n.length<2||!n[1])return this.commands.exec("insertstring",this,e);for(var i=r.length;i--;){var s=r[i];s.isEmpty()||this.session.remove(s),this.session.insert(s.start,n[i])}},this.findAll=function(e,t,n){t=t||{},t.needle=e||t.needle,this.$search.set(t);var r=this.$search.findAll(this.session);if(!r.length)return 0;this.$blockScrolling+=1;var i=this.multiSelect;n||i.toSingleRange(r[0]);for(var s=r.length;s--;)i.addRange(r[s],!0);return this.$blockScrolling-=1,r.length},this.selectMoreLines=function(e,t){var n=this.selection.toOrientedRange(),r=n.cursor==n.end,s=this.session.documentToScreenPosition(n.cursor);this.selection.$desiredColumn&&(s.column=this.selection.$desiredColumn);var o=this.session.screenToDocumentPosition(s.row+e,s.column);if(!n.isEmpty())var u=this.session.documentToScreenPosition(r?n.end:n.start),a=this.session.screenToDocumentPosition(u.row+e,u.column);else var a=o;if(r){var f=i.fromPoints(o,a);f.cursor=f.start}else{var f=i.fromPoints(a,o);f.cursor=f.end}f.desiredColumn=s.column;if(!this.selection.inMultiSelectMode)this.selection.addRange(n);else if(t)var l=n.cursor;this.selection.addRange(f),l&&this.selection.substractPoint(l)},this.transposeSelections=function(e){var t=this.session,n=t.multiSelect,r=n.ranges;for(var i=r.length;i--;){var s=r[i];if(s.isEmpty()){var o=t.getWordRange(s.start.row,s.start.column);s.start.row=o.start.row,s.start.column=o.start.column,s.end.row=o.end.row,s.end.column=o.end.column}}n.mergeOverlappingRanges();var u=[];for(var i=r.length;i--;){var s=r[i];u.unshift(t.getTextRange(s))}e<0?u.unshift(u.pop()):u.push(u.shift());for(var i=r.length;i--;){var s=r[i],o=s.clone();t.replace(s,u[i]),s.start.row=o.start.row,s.start.column=o.start.column}},this.selectMore=function(e,t){var n=this.session,r=n.multiSelect,i=r.toOrientedRange();i.isEmpty()&&(i=n.getWordRange(i.start.row,i.start.column),i.cursor=e==-1?i.start:i.end,this.multiSelect.addRange(i));var s=n.getTextRange(i),o=h(n,s,e);o&&(o.cursor=e==-1?o.start:o.end,this.$blockScrolling+=1,this.session.unfold(o),this.multiSelect.addRange(o),this.$blockScrolling-=1,this.renderer.scrollCursorIntoView(null,.5)),t&&this.multiSelect.substractPoint(i.cursor)},this.alignCursors=function(){var e=this.session,t=e.multiSelect,n=t.ranges;if(!n.length){var r=this.selection.getRange(),s=r.start.row,o=r.end.row,u=s==o;if(u){var f=this.session.getLength(),l;do l=this.session.getLine(o);while(/[=:]/.test(l)&&++o0);s<0&&(s=0),o>=f&&(o=f-1)}var c=this.session.doc.removeLines(s,o);c=this.$reAlignText(c,u),this.session.doc.insert({row:s,column:0},c.join("\n")+"\n"),u||(r.start.column=0,r.end.column=c[c.length-1].length),this.selection.setRange(r)}else{var h=-1,p=n.filter(function(e){if(e.cursor.row==h)return!0;h=e.cursor.row});t.$onRemoveRange(p);var d=0,v=Infinity,m=n.map(function(t){var n=t.cursor,r=e.getLine(n.row),i=r.substr(n.column).search(/\S/g);return i==-1&&(i=0),n.column>d&&(d=n.column),io?e.insert(r,a.stringRepeat(" ",s-o)):e.remove(new i(r.row,r.column,r.row,r.column-s+o)),t.start.column=t.end.column=d,t.start.row=t.end.row=r.row,t.cursor=t.end}),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(e,t){function u(e){return a.stringRepeat(" ",e)}function f(e){return e[2]?u(i)+e[2]+u(s-e[2].length+o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function l(e){return e[2]?u(i+s-e[2].length)+e[2]+u(o," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function c(e){return e[2]?u(i)+e[2]+u(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var n=!0,r=!0,i,s,o;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?i==null?(i=t[1].length,s=t[2].length,o=t[3].length,t):(i+s+o!=t[1].length+t[2].length+t[3].length&&(r=!1),i!=t[1].length&&(n=!1),i>t[1].length&&(i=t[1].length),st[3].length&&(o=t[3].length),t):[e]}).map(t?f:n?r?l:f:c)}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t.multiSelect||(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.removeEventListener("addRange",this.$onAddRange),n.multiSelect.removeEventListener("removeRange",this.$onRemoveRange),n.multiSelect.removeEventListener("multiSelect",this.$onMultiSelect),n.multiSelect.removeEventListener("singleSelect",this.$onSingleSelect)),t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=m,e("./config").defineOptions(d.prototype,"editor",{enableMultiselect:{set:function(e){m(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",o)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",o))},value:!0}})}),ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event"],function(e,t,n){function i(e,t){return e.row==t.row&&e.column==t.column}function s(e){var t=e.domEvent,n=t.altKey,s=t.shiftKey,o=e.getAccelKey(),u=e.getButton();if(e.editor.inMultiSelectMode&&u==2){e.editor.textInput.onContextMenu(e.domEvent);return}if(!o&&!n){u===0&&e.editor.inMultiSelectMode&&e.editor.exitMultiSelectMode();return}var a=e.editor,f=a.selection,l=a.inMultiSelectMode,c=e.getDocumentPosition(),h=f.getCursor(),p=e.inSelection()||f.isEmpty()&&i(c,h),d=e.x,v=e.y,m=function(e){d=e.clientX,v=e.clientY},g=function(){var e=a.renderer.pixelToScreenCoordinates(d,v),t=y.screenToDocumentPosition(e.row,e.column);if(i(w,e)&&i(t,f.selectionLead))return;w=e,a.selection.moveToPosition(t),a.renderer.scrollCursorIntoView(),a.removeSelectionMarkers(x),x=f.rectangularRangeBlock(w,b),x.forEach(a.addSelectionMarker,a),a.updateSelectionMarkers()},y=a.session,b=a.renderer.pixelToScreenCoordinates(d,v),w=b;if(o&&!n&&!s&&u===0){if(!l&&p)return;if(!l){var E=f.toOrientedRange();a.addSelectionMarker(E)}var S=f.rangeList.rangeAtPoint(c);a.$blockScrolling++,a.once("mouseup",function(){var e=f.toOrientedRange();S&&e.isEmpty()&&i(S.cursor,e.cursor)?f.substractPoint(e.cursor):(E&&(a.removeSelectionMarker(E),f.addRange(E)),f.addRange(e)),a.$blockScrolling--})}else if(n&&u===0){e.stop(),l&&!o?f.toSingleRange():!l&&o&&f.addRange();var x=[];s?(b=y.documentToScreenPosition(f.lead),g()):f.moveToPosition(c);var T=function(e){clearInterval(C),a.removeSelectionMarkers(x);for(var t=0;t20&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e})},this.$workerBlob=function(e){var t="importScripts('"+i.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(n){var r=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,s=new r;return s.append(t),s.getBlob("application/javascript")}}}).call(u.prototype);var a=function(e,t,n){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var r=null,i=!1,u=Object.create(s),a=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){a.messageBuffer.push(e),r&&(i?setTimeout(f):f())},this.setEmitSync=function(e){i=e};var f=function(){var e=a.messageBuffer.shift();e.command?r[e.command].apply(r,e.args):e.event&&u._signal(e.event,e.data)};u.postMessage=function(e){a.onMessage({data:e})},u.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},u.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},o.loadModule(["worker",t],function(e){r=new e[n](u);while(a.messageBuffer.length)f()})};a.prototype=u.prototype,t.UIWorkerClient=a,t.WorkerClient=u}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){var r=e("./range").Range,i=e("./lib/event_emitter").EventEmitter,s=e("./lib/oop"),o=function(e,t,n,r,i,s){var o=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=i,this.othersClass=s,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=r,this.$onCursorChange=function(){setTimeout(function(){o.onCursorChange()})},this.$pos=n;var u=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=u.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){s.implement(this,i),this.setup=function(){var e=this,t=this.doc,n=this.session,i=this.$pos;this.pos=t.createAnchor(i.row,i.column),this.markerId=n.addMarker(new r(i.row,i.column,i.row,i.column+this.length),this.mainClass,null,!1),this.pos.on("change",function(t){n.removeMarker(e.markerId),e.markerId=n.addMarker(new r(t.value.row,t.value.column,t.value.row,t.value.column+e.length),e.mainClass,null,!1)}),this.others=[],this.$others.forEach(function(n){var r=t.createAnchor(n.row,n.column);e.others.push(r)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(this.othersActive)return;var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new r(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1),n.on("change",function(i){e.removeMarker(n.markerId),n.markerId=e.addMarker(new r(i.value.row,i.value.column,i.value.row,i.value.column+t.length),t.othersClass,null,!1)})})},this.hideOtherMarkers=function(){if(!this.othersActive)return;this.othersActive=!1;for(var e=0;e=this.pos.column&&n.start.column<=this.pos.column+this.length+1){var s=n.start.column-this.pos.column;this.length+=i;if(!this.session.$fromUndo){if(t.action==="insertText")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};u.row===n.start.row&&n.start.column=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};u.row===n.start.row&&n.start.column=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))},this.detach=function(){this.session.removeMarker(this.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.pos.detach();for(var e=0;ef){var h=e.getLine(l).length;return new r(f,u,l,h)}},this.openingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i+1},u=e.$findClosingBracket(t,o,s);if(!u)return;var a=e.foldWidgets[u.row];return a==null&&(a=e.getFoldWidget(u.row)),a=="start"&&u.row>o.row&&(u.row--,u.column=e.getLine(u.row).length),r.fromPoints(o,u)},this.closingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i},u=e.$findOpeningBracket(t,o);if(!u)return;return u.column++,o.column--,r.fromPoints(u,o)}}).call(i.prototype)}),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;border-radius: 2px;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,n){function o(e,t,n){var r=0,i=e.length-1;while(r<=i){var s=r+i>>1,o=n(t,e[s]);if(o>0)r=s+1;else{if(!(o<0))return s;i=s-1}}return-(r+1)}function u(e,t,n){var r=e.getAnnotations().sort(s.comparePoints);if(!r.length)return;var i=o(r,{row:t,column:-1},s.comparePoints);i<0&&(i=-i-1),i>=r.length-1?i=n>0?0:r.length-1:i===0&&n<0&&(i=r.length-1);var u=r[i];if(!u||!n)return;if(u.row===t){do u=r[i+=n];while(u&&u.row===t);if(!u)return r.slice()}var a=[];t=u.row;do a[n<0?"unshift":"push"](u),u=r[i+=n];while(u&&u.row==t);return a.length&&a}var r=e("ace/line_widgets").LineWidgets,i=e("ace/lib/dom"),s=e("ace/range").Range;t.showErrorMarker=function(e,t){var n=e.session;n.widgetManager||(n.widgetManager=new r(n),n.widgetManager.attach(e));var s=e.getCursorPosition(),o=s.row,a=n.lineWidgets&&n.lineWidgets[o];a?a.destroy():o-=t;var f=u(n,o,t),l;if(f){var c=f[0];s.column=(c.pos&&typeof c.column!="number"?c.pos.sc:c.column)||0,s.row=c.row,l=e.renderer.$gutterLayer.$annotations[s.row]}else{if(a)return;l={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(s.row),e.selection.moveToPosition(s);var h={row:s.row,fixedWidth:!0,coverGutter:!0,el:i.createElement("div")},p=h.el.appendChild(i.createElement("div")),d=h.el.appendChild(i.createElement("div"));d.className="error_widget_arrow "+l.className;var v=e.renderer.$cursorLayer.getPixelPosition(s).left;d.style.left=v+e.renderer.gutterWidth-5+"px",h.el.className="error_widget_wrapper",p.className="error_widget "+l.className,p.innerHTML=l.text.join("
    "),p.appendChild(i.createElement("div"));var m=function(e,t,n){if(t===0&&(n==="esc"||n==="return"))return h.destroy(),{command:"null"}};h.destroy=function(){if(e.$mouseHandler.isMousePressed)return;e.keyBinding.removeKeyboardHandler(m),n.widgetManager.removeLineWidget(h),e.off("changeSelection",h.destroy),e.off("changeSession",h.destroy),e.off("mouseup",h.destroy),e.off("change",h.destroy)},e.keyBinding.addKeyboardHandler(m),e.on("changeSelection",h.destroy),e.on("changeSession",h.destroy),e.on("mouseup",h.destroy),e.on("change",h.destroy),e.session.widgetManager.addLineWidget(h),h.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:h.el.offsetHeight})},i.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }","")}),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,n){function o(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.detach=this.detach.bind(this),this.session.on("change",this.updateOnChange)}var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./range").Range;(function(){this.getRowLength=function(e){var t;return this.lineWidgets?t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:t=0,!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&(e+=t.rowCount)}),e},this.attach=function(e){e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach();if(this.editor==e)return;this.detach(),this.editor=e,this.editor.on("changeSession",this.detach),e.widgetManager=this,e.setOption("enableLineWidgets",!0),e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets)},this.detach=function(e){if(e&&e.session==this.session)return;var t=this.editor;if(!t)return;t.off("changeSession",this.detach),this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var n=this.session.lineWidgets;n&&n.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})},this.updateOnChange=function(e){var t=this.session.lineWidgets;if(!t)return;var n=e.data,r=n.range,i=r.start.row,s=r.end.row-i;if(s!==0)if(n.action=="removeText"||n.action=="removeLines"){var o=t.splice(i+1,s);o.forEach(function(e){e&&this.removeLineWidget(e)},this),this.$updateRows()}else{var u=new Array(s);u.unshift(i,0),t.splice.apply(t,u),this.$updateRows()}},this.$updateRows=function(){var e=this.session.lineWidgets;if(!e)return;var t=!0;e.forEach(function(e,n){e&&(t=!1,e.row=n)}),t&&(this.session.lineWidgets=null)},this.addLineWidget=function(e){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength())),this.session.lineWidgets[e.row]=e;var t=this.editor.renderer;return e.html&&!e.el&&(e.el=i.createElement("div"),e.el.innerHTML=e.html),e.el&&(i.addCssClass(e.el,"ace_lineWidgetContainer"),e.el.style.position="absolute",e.el.style.zIndex=5,t.container.appendChild(e.el),e._inDocument=!0),e.coverGutter||(e.el.style.zIndex=3),e.pixelHeight||(e.pixelHeight=e.el.offsetHeight),e.rowCount==null&&(e.rowCount=e.pixelHeight/t.layerConfig.lineHeight),this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows(),this.renderWidgets(null,t),e},this.removeLineWidget=function(e){e._inDocument=!1,e.el&&e.el.parentNode&&e.el.parentNode.removeChild(e.el);if(e.editor&&e.editor.destroy)try{e.editor.destroy()}catch(t){}this.session.lineWidgets&&(this.session.lineWidgets[e.row]=undefined),this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows()},this.onWidgetChanged=function(e){this.session._changedWidgets.push(e),this.editor&&this.editor.renderer.updateFull()},this.measureWidgets=function(e,t){var n=this.session._changedWidgets,r=t.layerConfig;if(!n||!n.length)return;var i=Infinity;for(var s=0;s0&&!r[i])i--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,t.$cursorLayer.config=n;for(var o=i;o<=s;o++){var u=r[o];if(!u||!u.el)continue;u._inDocument||(u._inDocument=!0,t.container.appendChild(u.el));var a=t.$cursorLayer.getPixelPosition({row:o,column:0},!0).top;u.coverLine||(a+=n.lineHeight*this.session.getRowLineCount(u.row)),u.el.style.top=a-n.offset+"px";var f=u.coverGutter?0:t.gutterWidth;u.fixedWidth||(f-=t.scrollLeft),u.el.style.left=f+"px",u.fixedWidth?u.el.style.right=t.scrollBar.getWidth()+"px":u.el.style.right=""}}}).call(o.prototype),t.LineWidgets=o}); (function() { ace.require(["ace/ace"], function(a) { a && a.config.init(); if (!window.ace) window.ace = {}; for (var key in a) if (a.hasOwnProperty(key)) ace[key] = a[key]; }); })(); PK<\~h *assets/lib/bower/progress-circle/README.mdnu[ProgressCircle.js ================= ### A progress indicator in HTML5 canvas ### homepage: http://qiao.github.com/ProgressCircle.js/ ## Usage ## Download the file and include it in your page. ```html ``` You should first create the canvas element in either HTML or Javascript, and specify its width and height. ```html ``` **Note**: you should NOT specify the size of the canvas in CSS. Then proceed with codes like the following ones. ```javascript var myCanvas = document.getElementById('my_canvas'); var circle = new ProgressCircle({ canvas: myCanvas, }); circle.addEntry({ fillColor: 'rgba(255, 255, 0, 0.5)', progressListener: function() { return THE_PROGRESS_VARIABLE_TO_LISTEN; // between 0 and 1 }, }); ``` You can add multiple progress indicators: ```javascript circle.addEntry({ fillColor: 'rgba(102, 255, 0, 0.5)', progressListener: function() {return p1;}, }).addEntry({ fillColor: 'rgba(255, 255, 0, 0.5)', progressListener: function() {return p2;}, }).addEntry({ fillColor: 'rgba(0, 0, 255, 0.5)', progressListener: function() {return p3;}, }); ``` The call `start` to start the animation. ```javascript circle.start(33); // 33 is the interval(ms) between each update ``` If you want to stop the animation, call the `stop` method. ```javascript circle.stop(); ``` ## Optional Parameters ## ```javascript var circle = new ProgressCircle({ canvas: myCanvas, minRadius: 10, // Inner radius of the innermost circle arcWidth: 3, // Width of each circle gapWidth: 2, // Space between adjacent circles centerX: 20, // X coordinate of the circle center centerY: 20, // Y coordinate of the circle center infoLineLength: 200, // Length of the info line horizLineLength: 50, // Length of the horizontal info line infoLineBaseAngle: Math.PI / 6, // Start angle of the info line infoLineAngleInterval: Math.PI / 8, // Angle between info lines }); circle.addEntry({ fillColor: 'rgba(255, 255, 0, 0.5)', outlineColor: 'rgba(255, 255, 255, 0.5)' // (Optional) progressListener: function() {return p1;}, infoListener: function() {return text1;},// (Optional) }); ``` ## License ## [MIT License](http://www.opensource.org/licenses/mit-license.php) © 2011-2013 Xueqiao Xu <xueqiaoxu@gmail.com> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. PK<\Xw56assets/lib/bower/progress-circle/ProgressCircle.min.jsnu[!function(window,document,undefined){var absPos=function(element){var offsetLeft,offsetTop;if(offsetLeft=offsetTop=0,element.offsetParent)do{offsetLeft+=element.offsetLeft,offsetTop+=element.offsetTop}while(element=element.offsetParent);return[offsetLeft,offsetTop]},ProgressCircle=function(params){this.canvas=params.canvas,this.minRadius=params.minRadius||15,this.arcWidth=params.arcWidth||5,this.gapWidth=params.gapWidth||3,this.centerX=params.centerX||this.canvas.width/2,this.centerY=params.centerY||this.canvas.height/2,this.infoLineLength=params.infoLineLength||60,this.horizLineLength=params.horizLineLength||10,this.infoLineAngleInterval=params.infoLineAngleInterval||Math.PI/8,this.infoLineBaseAngle=params.infoLineBaseAngle||Math.PI/6,this.context=this.canvas.getContext("2d"),this.width=this.canvas.width,this.height=this.canvas.height,this.circles=[],this.runningCount=0};ProgressCircle.prototype={constructor:ProgressCircle,addEntry:function(params){return this.circles.push(new Circle({canvas:this.canvas,context:this.context,centerX:this.centerX,centerY:this.centerY,innerRadius:this.minRadius+this.circles.length*(this.gapWidth+this.arcWidth),arcWidth:this.arcWidth,infoLineLength:this.infoLineLength,horizLineLength:this.horizLineLength,id:this.circles.length,fillColor:params.fillColor,outlineColor:params.outlineColor,progressListener:params.progressListener,infoListener:params.infoListener,infoLineAngle:this.infoLineBaseAngle+this.circles.length*this.infoLineAngleInterval})),this},start:function(interval){var self=this;return this.timer=setInterval(function(){self._update()},interval||33),this},update:function(value){this._update(value)},stop:function(){clearTimeout(this.timer)},_update:function(value){return this._clear(),this.circles.forEach(function(circle,idx,array){circle.update(value)}),this},_clear:function(){return this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this}};var Circle=function(params){if(this.id=params.id,this.canvas=params.canvas,this.context=params.context,this.centerX=params.centerX,this.centerY=params.centerY,this.arcWidth=params.arcWidth,this.innerRadius=params.innerRadius||0,this.fillColor=params.fillColor||"#fff",this.outlineColor=params.outlineColor||this.fillColor,this.progressListener=params.progressListener,this.infoLineLength=params.infoLineLength||250,this.horizLineLength=params.horizLineLength||50,this.infoListener=params.infoListener,this.infoLineAngle=params.infoLineAngle,this.outerRadius=this.innerRadius+this.arcWidth,this.infoListener){var angle=this.infoLineAngle,arcDistance=(this.innerRadius+this.outerRadius)/2,sinA=Math.sin(angle),cosA=Math.cos(angle);this.infoLineStartX=this.centerX+sinA*arcDistance,this.infoLineStartY=this.centerY-cosA*arcDistance,this.infoLineMidX=this.centerX+sinA*this.infoLineLength,this.infoLineMidY=this.centerY-cosA*this.infoLineLength,this.infoLineEndX=this.infoLineMidX+(sinA<0?-this.horizLineLength:this.horizLineLength),this.infoLineEndY=this.infoLineMidY;var infoText=document.createElement("div"),style=infoText.style;style.color=this.fillColor,style.position="absolute",style.left=this.infoLineEndX+absPos(this.canvas)[0]+"px",infoText.className="ProgressCircleInfo",infoText.id="progress_circle_info_"+this.id,document.body.appendChild(infoText),this.infoText=infoText}};Circle.prototype={constructor:Circle,update:function(value){this.progress=value||this.progressListener(),this._draw(),this.infoListener&&(this.info=this.infoListener(),this._drawInfo())},_draw:function(){var ctx=this.context,ANGLE_OFFSET=-Math.PI/2,startAngle=0+ANGLE_OFFSET,endAngle=startAngle+this.progress*Math.PI*2,x=this.centerX,y=this.centerY,innerRadius=this.innerRadius,outerRadius=this.outerRadius;return ctx.fillStyle=this.fillColor,ctx.strokeStyle=this.outlineColor,ctx.beginPath(),ctx.arc(x,y,innerRadius,startAngle,endAngle,!1),ctx.arc(x,y,outerRadius,endAngle,startAngle,!0),ctx.closePath(),ctx.stroke(),ctx.fill(),this},_drawInfo:function(){var pointList,lineHeight;return pointList=[[this.infoLineStartX,this.infoLineStartY],[this.infoLineMidX,this.infoLineMidY],[this.infoLineEndX,this.infoLineEndY]],this._drawSegments(pointList,!1),this.infoText.innerHTML=this.info,lineHeight=this.infoText.offsetHeight,this.infoText.style.top=this.infoLineEndY+absPos(this.canvas)[1]-lineHeight/2+"px",this},_drawSegments:function(pointList,close){var ctx=this.context;ctx.beginPath(),ctx.moveTo(pointList[0][0],pointList[0][1]);for(var i=1;i Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.PK<\ą  0assets/lib/bower/scrollTo/jquery.scrollTo.min.jsnu[/** * Copyright (c) 2007-2014 Ariel Flesler - afleslergmailcom | http://flesler.blogspot.com * Licensed under MIT * @author Ariel Flesler * @version 1.4.11 */ ;(function(a){if(typeof define==='function'&&define.amd){define(['jquery'],a)}else{a(jQuery)}}(function($){var j=$.scrollTo=function(a,b,c){return $(window).scrollTo(a,b,c)};j.defaults={axis:'xy',duration:parseFloat($.fn.jquery)>=1.3?0:1,limit:true};j.window=function(a){return $(window)._scrollable()};$.fn._scrollable=function(){return this.map(function(){var a=this,isWin=!a.nodeName||$.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!isWin)return a;var b=(a.contentWindow||a).document||a.ownerDocument||a;return/webkit/i.test(navigator.userAgent)||b.compatMode=='BackCompat'?b.body:b.documentElement})};$.fn.scrollTo=function(f,g,h){if(typeof g=='object'){h=g;g=0}if(typeof h=='function')h={onAfter:h};if(f=='max')f=9e9;h=$.extend({},j.defaults,h);g=g||h.duration;h.queue=h.queue&&h.axis.length>1;if(h.queue)g/=2;h.offset=both(h.offset);h.over=both(h.over);return this._scrollable().each(function(){if(f==null)return;var d=this,$elem=$(d),targ=f,toff,attr={},win=$elem.is('html,body');switch(typeof targ){case'number':case'string':if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(targ)){targ=both(targ);break}targ=$(targ,this);if(!targ.length)return;case'object':if(targ.is||targ.style)toff=(targ=$(targ)).offset()}var e=$.isFunction(h.offset)&&h.offset(d,targ)||h.offset;$.each(h.axis.split(''),function(i,a){var b=a=='x'?'Left':'Top',pos=b.toLowerCase(),key='scroll'+b,old=d[key],max=j.max(d,a);if(toff){attr[key]=toff[pos]+(win?0:old-$elem.offset()[pos]);if(h.margin){attr[key]-=parseInt(targ.css('margin'+b))||0;attr[key]-=parseInt(targ.css('border'+b+'Width'))||0}attr[key]+=e[pos]||0;if(h.over[pos])attr[key]+=targ[a=='x'?'width':'height']()*h.over[pos]}else{var c=targ[pos];attr[key]=c.slice&&c.slice(-1)=='%'?parseFloat(c)/100*max:c}if(h.limit&&/^\d+$/.test(attr[key]))attr[key]=attr[key]<=0?0:Math.min(attr[key],max);if(!i&&h.queue){if(old!=attr[key])animate(h.onAfterFirst);delete attr[key]}});animate(h.onAfter);function animate(a){$elem.animate(attr,g,h.easing,a&&function(){a.call(this,targ,h)})}}).end()};j.max=function(a,b){var c=b=='x'?'Width':'Height',scroll='scroll'+c;if(!$(a).is('html,body'))return a[scroll]-$(a)[c.toLowerCase()]();var d='client'+c,html=a.ownerDocument.documentElement,body=a.ownerDocument.body;return Math.max(html[scroll],body[scroll])-Math.min(html[d],body[d])};function both(a){return $.isFunction(a)||typeof a=='object'?a:{top:a,left:a}};return j})); PK<\LCassets/lib/bower/jquery-ui-tabs-rotate/jquery-ui-tabs-rotate.min.jsnu[!function($){$.extend($.ui.tabs.prototype,{rotation:null,rotationDelay:null,continuing:null,rotate:function(ms,continuing){var self=this,o=this.options;(ms>1||null===self.rotationDelay)&&void 0!==ms&&(self.rotationDelay=ms),void 0!==continuing&&(self.continuing=continuing);var rotate=self._rotate||(self._rotate=function(e){clearTimeout(self.rotation),self.rotation=setTimeout(function(){var t=o.active;self.option("active",++t PK<\%. %assets/lib/bower/json-js/json2.min.jsnu["object"!=typeof JSON&&(JSON={}),function(){"use strict";function f(n){return n<10?"0"+n:n}function quote(string){return escapable.lastIndex=0,escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return"string"==typeof c?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,partial,mind=gap,value=holder[key];switch(value&&"object"==typeof value&&"function"==typeof value.toJSON&&(value=value.toJSON(key)),"function"==typeof rep&&(value=rep.call(holder,key,value)),typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value)return"null";if(gap+=indent,partial=[],"[object Array]"===Object.prototype.toString.apply(value)){for(length=value.length,i=0;i",{"class":this.settings.mainClass,style:"position: relative",html:'
    '}),this.iconContainer=this.iconPicker.find(".fip-icons-container"),this.searchIcon=this.iconPicker.find(".selector-search i"),this.iconsSearched=[],this.isSearch=!1,this.totalPage=1,this.currentPage=1,this.currentIcon=!1,this.initialized=!1,this.iconsPaged=!1,this.iconsCount=0,this.open=!1,this.searchValues=[],this.availableCategoriesSearch=[],this.triggerEvent=null,this.backupSource=[],this.backupSearch=[],this.isCategorized=!1,this.selectCategory=this.iconPicker.find(".icon-category-select"),this.selectedCategory=!1,this.availableCategories=[],this.unCategorizedKey=null,this.quickInit()}var i={theme:"fip-vc-theme-grey",source:!1,emptyIcon:!0,emptyIconValue:"",iconsPerPage:20,hasSearch:!0,searchSource:!1,useAttribute:!1,attributeName:"data-icon",convertToHex:!0,allCategoryText:"From all categories",unCategorizedText:"Uncategorized",iconDownClass:"fip-icon-down-dir",iconUpClass:"fip-icon-up-dir",iconLeftClass:"fip-icon-left-dir",iconRightClass:"fip-icon-right-dir",iconSearchClass:"fip-icon-search",iconCancelClass:"fip-icon-cancel",iconSpinClass:"fip-icon-spin3",iconBlockClass:"fip-icon-block",searchPlaceholder:"Search Icon",mainClass:"vc-icons-selector"};e.prototype={quickInit:function(){var e=!0;this.iconPicker.addClass(this.settings.theme),this.iconPicker.css({left:-9999}).appendTo("body");var i=this.iconPicker.outerHeight(),s=this.iconPicker.outerWidth();if(this.iconPicker.css({left:""}),this.element.before(this.iconPicker),this.element.css({visibility:"hidden",top:0,position:"relative",zIndex:"-1",left:"-"+s+"px",display:"none",height:i+"px",width:s+"px",padding:"0",margin:"0 -"+s+"px 0 0",border:"0 none",verticalAlign:"top"}).hide(),!this.element.is("select")){var n=function(){for(var t=3,e=document.createElement("div"),i=e.all||[];e.innerHTML="",i[0];);return t>4?t:!t}(),c=document.createElement("div");this.triggerEvent=9!==n&&"oninput"in c?["input","keyup"]:["keyup"]}this.setSelectedIcon(this.element.val()),this.selectCategory.on("change keyup",t.proxy(function(e){if(this.isCategorized===!1)return!1;var i=t(e.currentTarget),s=i.val();if("all"===i.val())this.settings.source=this.backupSource,this.searchValues=this.backupSearch;else{var n=parseInt(s,10);this.availableCategories[n]&&(this.settings.source=this.availableCategories[n],this.searchValues=this.availableCategoriesSearch[n])}this.resetSearch(),this.loadIcons()},this)),this.iconPicker.find(".selector-button").click(t.proxy(function(){!this.open&&e&&(e=!1,this.initCategories()),this.toggleIconSelector()},this)),this.iconPicker.find(".selector-arrow-right").click(t.proxy(function(e){this.currentPage1&&(this.iconPicker.find(".selector-arrow-right").show(),this.currentPage=this.currentPage-1,this.renderIconContainer(),this.renderIcons()),1===this.currentPage&&t(e.currentTarget).hide()},this)),this.iconPicker.find(".icons-search-input").keyup(t.proxy(function(e){var i=t(e.currentTarget).val();return""===i?void this.resetSearch():(this.searchIcon.removeClass(this.settings.iconSearchClass),this.searchIcon.addClass(this.settings.iconCancelClass),this.isSearch=!0,this.currentPage=1,this.iconsSearched=[],t.grep(this.searchValues,t.proxy(function(t,e){return t.toLowerCase().search(i.toLowerCase())<0?void 0:(this.iconsSearched[this.iconsSearched.length]=this.settings.source[e],!0)},this)),this.iconsSearched=this.iconsSearched.filter(this.getOnlyUnique),this.renderIconContainer(),void this.renderIcons())},this)),this.iconPicker.find(".selector-search i").on("click",t.proxy(function(){this.iconPicker.find(".icons-search-input").focus(),this.resetSearch()},this)),this.iconContainer.on("click",".fip-box",t.proxy(function(e){this.setSelectedIcon(t(e.currentTarget).find("i").attr("data-fip-value")),this.toggleIconSelector()},this)),this.iconPicker.click(function(t){return t.stopPropagation(),!1}),t("html").click(t.proxy(function(){this.open&&this.toggleIconSelector()},this))},init:function(){this.iconPicker.addClass(this.settings.theme),this.iconPicker.css({left:-9999}).appendTo("body");var e=this.iconPicker.outerHeight(),i=this.iconPicker.outerWidth();if(this.iconPicker.css({left:""}),this.element.before(this.iconPicker),this.element.css({visibility:"hidden",top:0,position:"relative",zIndex:"-1",left:"-"+i+"px",display:"none",height:e+"px",width:i+"px",padding:"0",margin:"0 -"+i+"px 0 0",border:"0 none",verticalAlign:"top"}).hide(),!this.element.is("select")){var s=function(){for(var t=3,e=document.createElement("div"),i=e.all||[];e.innerHTML="",i[0];);return t>4?t:!t}(),n=document.createElement("div");this.triggerEvent=9!==s&&"oninput"in n?["input","keyup"]:["keyup"]}this.initCategories(),this.selectCategory.on("change keyup",t.proxy(function(e){if(this.isCategorized===!1)return!1;var i=t(e.currentTarget),s=i.val();if("all"===i.val())this.settings.source=this.backupSource,this.searchValues=this.backupSearch;else{var n=parseInt(s,10);this.availableCategories[n]&&(this.settings.source=this.availableCategories[n],this.searchValues=this.availableCategoriesSearch[n])}this.resetSearch(),this.loadIcons()},this)),this.iconPicker.find(".selector-button").click(t.proxy(function(){this.toggleIconSelector()},this)),this.iconPicker.find(".selector-arrow-right").click(t.proxy(function(e){this.currentPage1&&(this.iconPicker.find(".selector-arrow-right").show(),this.currentPage=this.currentPage-1,this.renderIconContainer(),this.renderIcons()),1===this.currentPage&&t(e.currentTarget).hide()},this)),this.iconPicker.find(".icons-search-input").keyup(t.proxy(function(e){var i=t(e.currentTarget).val();return""===i?void this.resetSearch():(this.searchIcon.removeClass(this.settings.iconSearchClass),this.searchIcon.addClass(this.settings.iconCancelClass),this.isSearch=!0,this.currentPage=1,this.iconsSearched=[],t.grep(this.searchValues,t.proxy(function(t,e){return t.toLowerCase().search(i.toLowerCase())<0?void 0:(this.iconsSearched[this.iconsSearched.length]=this.settings.source[e],!0)},this)),this.iconsSearched=this.iconsSearched.filter(this.getOnlyUnique),this.renderIconContainer(),void this.renderIcons())},this)),this.iconPicker.find(".selector-search i").on("click",t.proxy(function(){this.iconPicker.find(".icons-search-input").focus(),this.resetSearch()},this)),this.iconContainer.on("click",".fip-box",t.proxy(function(e){this.setSelectedIcon(t(e.currentTarget).find("i").attr("data-fip-value")),this.toggleIconSelector()},this)),this.iconPicker.click(function(t){return t.stopPropagation(),!1}),t("html").click(t.proxy(function(){this.open&&this.toggleIconSelector()},this))},initCategories:function(){!this.settings.source&&this.element.is("select")?(this.settings.source=[],this.settings.searchSource=[],this.element.find("optgroup").length?(this.isCategorized=!0,this.element.find("optgroup").each(t.proxy(function(e,i){var s=this.availableCategories.length,n=t("").prependTo(this.selectCategory),this.selectCategory.show().val("all").trigger("change"))},loadIcons:function(){this.iconContainer.html(''),this.settings.source instanceof Array&&(this.renderIconContainer(),this.renderIcons(),this.setContainerSelectedItems())},renderIconContainer:function(){var t,e=[];if(e=this.isSearch?this.iconsSearched:this.settings.source,this.iconsCount=e.length,this.totalPage=Math.ceil(this.iconsCount/this.settings.iconsPerPage),this.totalPage>1?this.iconPicker.find(".selector-footer").show():this.iconPicker.find(".selector-footer").hide(),this.iconPicker.find(".selector-pages").html(this.currentPage+"/"+this.totalPage+" ("+this.iconsCount+")"),t=(this.currentPage-1)*this.settings.iconsPerPage,this.settings.emptyIcon)this.iconContainer.html('');else{if(e.length<1)return void this.iconContainer.html('');this.iconContainer.html("")}e=e.slice(t,t+this.settings.iconsPerPage),this.iconsPaged=e},setContainerSelectedItems:function(){this.settings.emptyIcon||this.element.val()&&-1!==t.inArray(this.element.val(),this.settings.source)?-1===t.inArray(this.element.val(),this.settings.source)?this.setSelectedIcon():this.setSelectedIcon(this.element.val()):this.setSelectedIcon(this.iconsPaged[0])},setHighlightedIcon:function(){this.iconContainer.find(".current-icon").removeClass("current-icon"),this.currentIcon&&this.iconContainer.find('[data-fip-value="'+this.currentIcon+'"]').parent("span").addClass("current-icon")},setSelectedIcon:function(t){if(t===this.settings.iconBlockClass&&(t=""),this.iconPicker.find(".selected-icon").html(this.settings.useAttribute?t?"':'':''),this.element.val(""===t?this.settings.emptyIconValue:t).trigger("change"),null!==this.triggerEvent)for(var e in this.triggerEvent)this.element.trigger(this.triggerEvent[e]);this.currentIcon=t,this.setHighlightedIcon()},toggleIconSelector:function(){this.open=this.open?0:1,this.iconPicker.find(".selector-popup").slideToggle(300),this.iconPicker.find(".selector-button i").toggleClass(this.settings.iconDownClass),this.iconPicker.find(".selector-button i").toggleClass(this.settings.iconUpClass),this.open&&(this.iconPicker.find(".icons-search-input").focus().select(),this.initialized||(this.renderIconContainer(),this.renderIcons(),this.initialized=!0))},renderIcons:function(){for(var e=0;e",{html:'","class":"fip-box",title:s}).appendTo(this.iconContainer)}this.setContainerSelectedItems()},resetSearch:function(){this.iconPicker.find(".icons-search-input").val(""),this.searchIcon.removeClass(this.settings.iconCancelClass),this.searchIcon.addClass(this.settings.iconSearchClass),this.iconPicker.find(".selector-arrow-left").hide(),this.currentPage=1,this.isSearch=!1,this.renderIconContainer(),this.renderIcons(),this.totalPage>1&&this.iconPicker.find(".selector-arrow-right").show()}},t.fn.vcFontIconPicker=function(i){return this.each(function(){t.data(this,"vcFontIconPicker")||t.data(this,"vcFontIconPicker",new e(this,i))}),this.setIcons=t.proxy(function(e,i){void 0===e&&(e=!1),void 0===i&&(i=!1),this.each(function(){t.data(this,"vcFontIconPicker").settings.source=e,t.data(this,"vcFontIconPicker").settings.searchSource=i,t.data(this,"vcFontIconPicker").initSourceIndex(),t.data(this,"vcFontIconPicker").resetSearch(),t.data(this,"vcFontIconPicker").loadIcons()})},this),this.destroyPicker=t.proxy(function(){this.each(function(){t.data(this,"vcFontIconPicker")&&(t.data(this,"vcFontIconPicker").iconPicker.remove(),t.data(this,"vcFontIconPicker").element.css({visibility:"",top:"",position:"",zIndex:"",left:"",display:"block",height:"",width:"",padding:"",margin:"",border:"",verticalAlign:""}).show(),t.removeData(this,"vcFontIconPicker"))})},this),this.refreshPicker=t.proxy(function(s){s||(s=i),this.destroyPicker(),this.each(function(){t.data(this,"vcFontIconPicker")||t.data(this,"vcFontIconPicker",new e(this,s))})},this),this}}(jQuery);PK<\ ?assets/lib/bower/vcIconPicker/css/jquery.fonticonpicker.min.cssnu[.vc-icons-selector{margin:0;padding:0;border:0;font-size:100%;font:inherit;font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;display:block;vertical-align:middle;text-align:left;margin-bottom:4px}.vc-icons-selector:before,.vc-icons-selector:after,.vc-icons-selector *,.vc-icons-selector *:before,.vc-icons-selector *:after{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.vc-icons-selector .selector{width:100px;height:40px}.vc-icons-selector .selector-button{width:39px;height:100%;display:block;text-align:center;cursor:pointer;float:left}.vc-icons-selector .selector-button i{line-height:38px;text-align:center}.vc-icons-selector .selected-icon{display:block;width:60px;height:100%;float:left;text-align:center}.vc-icons-selector .selected-icon i{line-height:40px;font-size:18px;cursor:default}.vc-icons-selector .selector-popup{background-color:#fefefe;padding:5px 5px 20px;height:auto;margin-top:-1px;width:100%;box-sizing:border-box}.vc-icons-selector .selector-search input[type="text"],.vc-icons-selector .selector-category select{border:0;line-height:20px;padding:10px 2.5%;width:100%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;margin-bottom:5px;font-size:12px;display:block}.vc-icons-selector .selector-category select{height:40px}.vc-icons-selector .selector-category select option{padding:10px}.vc-icons-selector input::-webkit-input-placeholder,.vc-icons-selector input:-moz-placeholder,.vc-icons-selector input::-moz-placeholder,.vc-icons-selector input:-ms-input-placeholder{text-transform:uppercase}.vc-icons-selector .selector-search{position:relative}.vc-icons-selector .selector-search i{position:absolute;right:10px;top:30%;cursor:pointer}.vc-icons-selector .fip-icons-container{width:100%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;padding:5px;overflow:auto;max-height:300px}.vc-icons-selector .fip-icons-container .loading{font-size:24px;margin:0 auto;padding:20px 0;text-align:center;width:100%}.vc-icons-selector .fip-icons-container .fip-box{display:inline-block;margin:2px;width:60px;line-height:42px;text-align:center;cursor:pointer;vertical-align:top;height:40px}.vc-icons-selector .fip-icons-container .fip-box .fip-block-icon{opacity:.5;cursor:not-allowed}.vc-icons-selector .selector-footer{line-height:12px;padding:5px 5px 0 5px;text-align:center;font-size:14px}.vc-icons-selector .selector-footer i{font-size:14px}.vc-icons-selector .selector-footer em{font-style:italic}.vc-icons-selector .selector-arrows{float:right}.vc-icons-selector .selector-arrows i{cursor:pointer}.vc-icons-selector .selector-pages{font-size:11px;float:left}.vc-icons-selector .icons-picker-error i:before{color:#eee}PK<\ PP+assets/lib/bower/bootstrap3/less/media.lessnu[// Media objects // Source: http://stubbornella.org/content/?p=497 // -------------------------------------------------- // Common styles // ------------------------- // Clear the floats .media, .media-body { overflow: hidden; zoom: 1; } // Proper spacing between instances of .media .media, .media .media { margin-top: 15px; } .media:first-child { margin-top: 0; } // For images and videos, set to block .media-object { display: block; } // Reset margins on headings for tighter default spacing .media-heading { margin: 0 0 5px; } // Media image alignment // ------------------------- .media { > .pull-left { margin-right: 10px; } > .pull-right { margin-left: 10px; } } // Media list variation // ------------------------- // Undo default ul/ol styles .media-list { padding-left: 0; list-style: none; } PK<\Z+assets/lib/bower/bootstrap3/less/wells.lessnu[// // Wells // -------------------------------------------------- // Base class .well { min-height: 20px; padding: 19px; margin-bottom: 20px; background-color: @well-bg; border: 1px solid @well-border; border-radius: @border-radius-base; .box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); blockquote { border-color: #ddd; border-color: rgba(0,0,0,.15); } } // Sizes .well-lg { padding: 24px; border-radius: @border-radius-large; } .well-sm { padding: 9px; border-radius: @border-radius-small; } PK<\&YY+assets/lib/bower/bootstrap3/less/pager.lessnu[// // Pager pagination // -------------------------------------------------- .pager { padding-left: 0; margin: @line-height-computed 0; list-style: none; text-align: center; &:extend(.clearfix all); li { display: inline; > a, > span { display: inline-block; padding: 5px 14px; background-color: @pager-bg; border: 1px solid @pager-border; border-radius: @pager-border-radius; } > a:hover, > a:focus { text-decoration: none; background-color: @pager-hover-bg; } } .next { > a, > span { float: right; } } .previous { > a, > span { float: left; } } .disabled { > a, > a:hover, > a:focus, > span { color: @pager-disabled-color; background-color: @pager-bg; cursor: not-allowed; } } } PK<\_\  /assets/lib/bower/bootstrap3/less/utilities.lessnu[// // Utility classes // -------------------------------------------------- // Floats // ------------------------- .clearfix { .clearfix(); } .center-block { .center-block(); } .pull-right { float: right !important; } .pull-left { float: left !important; } // Toggling content // ------------------------- // Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1 .hide { display: none !important; } .show { display: block !important; } .invisible { visibility: hidden; } .text-hide { .text-hide(); } // Hide from screenreaders and browsers // // Credit: HTML5 Boilerplate .hidden { display: none !important; visibility: hidden !important; } // For Affix plugin // ------------------------- .affix { position: fixed; } PK<\Aukk*assets/lib/bower/bootstrap3/less/grid.lessnu[// // Grid system // -------------------------------------------------- // Container widths // // Set the container width, and override it for fixed navbars in media queries. .container { .container-fixed(); @media (min-width: @screen-sm-min) { width: @container-sm; } @media (min-width: @screen-md-min) { width: @container-md; } @media (min-width: @screen-lg-min) { width: @container-lg; } } // Fluid container // // Utilizes the mixin meant for fixed width containers, but without any defined // width for fluid, full width layouts. .container-fluid { .container-fixed(); } // Row // // Rows contain and clear the floats of your columns. .row { .make-row(); } // Columns // // Common styles for small and large grid columns .make-grid-columns(); // Extra small grid // // Columns, offsets, pushes, and pulls for extra small devices like // smartphones. .make-grid(xs); // Small grid // // Columns, offsets, pushes, and pulls for the small device range, from phones // to tablets. @media (min-width: @screen-sm-min) { .make-grid(sm); } // Medium grid // // Columns, offsets, pushes, and pulls for the desktop device range. @media (min-width: @screen-md-min) { .make-grid(md); } // Large grid // // Columns, offsets, pushes, and pulls for the large desktop device range. @media (min-width: @screen-lg-min) { .make-grid(lg); } PK<\|e*assets/lib/bower/bootstrap3/less/type.lessnu[// // Typography // -------------------------------------------------- // Headings // ------------------------- h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { font-family: @headings-font-family; font-weight: @headings-font-weight; line-height: @headings-line-height; color: @headings-color; small, .small { font-weight: normal; line-height: 1; color: @headings-small-color; } } h1, .h1, h2, .h2, h3, .h3 { margin-top: @line-height-computed; margin-bottom: (@line-height-computed / 2); small, .small { font-size: 65%; } } h4, .h4, h5, .h5, h6, .h6 { margin-top: (@line-height-computed / 2); margin-bottom: (@line-height-computed / 2); small, .small { font-size: 75%; } } h1, .h1 { font-size: @font-size-h1; } h2, .h2 { font-size: @font-size-h2; } h3, .h3 { font-size: @font-size-h3; } h4, .h4 { font-size: @font-size-h4; } h5, .h5 { font-size: @font-size-h5; } h6, .h6 { font-size: @font-size-h6; } // Body text // ------------------------- p { margin: 0 0 (@line-height-computed / 2); } .lead { margin-bottom: @line-height-computed; font-size: floor((@font-size-base * 1.15)); font-weight: 300; line-height: 1.4; @media (min-width: @screen-sm-min) { font-size: (@font-size-base * 1.5); } } // Emphasis & misc // ------------------------- // Ex: 14px base font * 85% = about 12px small, .small { font-size: 85%; } // Undo browser default styling cite { font-style: normal; } mark, .mark { background-color: @state-warning-bg; padding: .2em; } // Alignment .text-left { text-align: left; } .text-right { text-align: right; } .text-center { text-align: center; } .text-justify { text-align: justify; } // Contextual colors .text-muted { color: @text-muted; } .text-primary { .text-emphasis-variant(@brand-primary); } .text-success { .text-emphasis-variant(@state-success-text); } .text-info { .text-emphasis-variant(@state-info-text); } .text-warning { .text-emphasis-variant(@state-warning-text); } .text-danger { .text-emphasis-variant(@state-danger-text); } // Contextual backgrounds // For now we'll leave these alongside the text classes until v4 when we can // safely shift things around (per SemVer rules). .bg-primary { // Given the contrast here, this is the only class to have its color inverted // automatically. color: #fff; .bg-variant(@brand-primary); } .bg-success { .bg-variant(@state-success-bg); } .bg-info { .bg-variant(@state-info-bg); } .bg-warning { .bg-variant(@state-warning-bg); } .bg-danger { .bg-variant(@state-danger-bg); } // Page header // ------------------------- .page-header { padding-bottom: ((@line-height-computed / 2) - 1); margin: (@line-height-computed * 2) 0 @line-height-computed; border-bottom: 1px solid @page-header-border-color; } // Lists // ------------------------- // Unordered and Ordered lists ul, ol { margin-top: 0; margin-bottom: (@line-height-computed / 2); ul, ol { margin-bottom: 0; } } // List options // Unstyled keeps list items block level, just removes default browser padding and list-style .list-unstyled { padding-left: 0; list-style: none; } // Inline turns list items into inline-block .list-inline { .list-unstyled(); margin-left: -5px; > li { display: inline-block; padding-left: 5px; padding-right: 5px; } } // Description Lists dl { margin-top: 0; // Remove browser default margin-bottom: @line-height-computed; } dt, dd { line-height: @line-height-base; } dt { font-weight: bold; } dd { margin-left: 0; // Undo browser default } // Horizontal description lists // // Defaults to being stacked without any of the below styles applied, until the // grid breakpoint is reached (default of ~768px). .dl-horizontal { dd { &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present } @media (min-width: @grid-float-breakpoint) { dt { float: left; width: (@component-offset-horizontal - 20); clear: left; text-align: right; .text-overflow(); } dd { margin-left: @component-offset-horizontal; } } } // Misc // ------------------------- // Abbreviations and acronyms abbr[title], // Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257 abbr[data-original-title] { cursor: help; border-bottom: 1px dotted @abbr-border-color; } .initialism { font-size: 90%; text-transform: uppercase; } // Blockquotes blockquote { padding: (@line-height-computed / 2) @line-height-computed; margin: 0 0 @line-height-computed; font-size: @blockquote-font-size; border-left: 5px solid @blockquote-border-color; p, ul, ol { &:last-child { margin-bottom: 0; } } // Note: Deprecated small and .small as of v3.1.0 // Context: https://github.com/twbs/bootstrap/issues/11660 footer, small, .small { display: block; font-size: 80%; // back to default font-size line-height: @line-height-base; color: @blockquote-small-color; &:before { content: '\2014 \00A0'; // em dash, nbsp } } } // Opposite alignment of blockquote // // Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0. .blockquote-reverse, blockquote.pull-right { padding-right: 15px; padding-left: 0; border-right: 5px solid @blockquote-border-color; border-left: 0; text-align: right; // Account for citation footer, small, .small { &:before { content: ''; } &:after { content: '\00A0 \2014'; // nbsp, em dash } } } // Quotes blockquote:before, blockquote:after { content: ""; } // Addresses address { margin-bottom: @line-height-computed; font-style: normal; line-height: @line-height-base; } PK<\#.!f!f/assets/lib/bower/bootstrap3/less/variables.lessnu[// // Variables // -------------------------------------------------- //== Colors // //## Gray and brand colors for use across Bootstrap. @gray-darker: lighten(#000, 13.5%); // #222 @gray-dark: lighten(#000, 20%); // #333 @gray: lighten(#000, 33.5%); // #555 @gray-light: lighten(#000, 60%); // #999 @gray-lighter: lighten(#000, 93.5%); // #eee @brand-primary: #428bca; @brand-success: #5cb85c; @brand-info: #5bc0de; @brand-warning: #f0ad4e; @brand-danger: #d9534f; //== Scaffolding // //## Settings for some of the most global styles. //** Background color for ``. @body-bg: #fff; //** Global text color on ``. @text-color: @gray-dark; //** Global textual link color. @link-color: @brand-primary; //** Link hover color set via `darken()` function. @link-hover-color: darken(@link-color, 15%); //== Typography // //## Font, line-height, and color for body text, headings, and more. @font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif; @font-family-serif: Georgia, "Times New Roman", Times, serif; //** Default monospace fonts for ``, ``, and `
    `.
    @font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace;
    @font-family-base:        @font-family-sans-serif;
    
    @font-size-base:          14px;
    @font-size-large:         ceil((@font-size-base * 1.25)); // ~18px
    @font-size-small:         ceil((@font-size-base * 0.85)); // ~12px
    
    @font-size-h1:            floor((@font-size-base * 2.6)); // ~36px
    @font-size-h2:            floor((@font-size-base * 2.15)); // ~30px
    @font-size-h3:            ceil((@font-size-base * 1.7)); // ~24px
    @font-size-h4:            ceil((@font-size-base * 1.25)); // ~18px
    @font-size-h5:            @font-size-base;
    @font-size-h6:            ceil((@font-size-base * 0.85)); // ~12px
    
    //** Unit-less `line-height` for use in components like buttons.
    @line-height-base:        1.428571429; // 20/14
    //** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
    @line-height-computed:    floor((@font-size-base * @line-height-base)); // ~20px
    
    //** By default, this inherits from the ``.
    @headings-font-family:    inherit;
    @headings-font-weight:    500;
    @headings-line-height:    1.1;
    @headings-color:          inherit;
    
    
    //== Iconography
    //
    //## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
    
    //** Load fonts from this directory.
    @icon-font-path:          "../fonts/";
    //** File name for all font files.
    @icon-font-name:          "glyphicons-halflings-regular";
    //** Element ID within SVG icon file.
    @icon-font-svg-id:        "glyphicons_halflingsregular";
    
    
    //== Components
    //
    //## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
    
    @padding-base-vertical:     6px;
    @padding-base-horizontal:   12px;
    
    @padding-large-vertical:    10px;
    @padding-large-horizontal:  16px;
    
    @padding-small-vertical:    5px;
    @padding-small-horizontal:  10px;
    
    @padding-xs-vertical:       1px;
    @padding-xs-horizontal:     5px;
    
    @line-height-large:         1.33;
    @line-height-small:         1.5;
    
    @border-radius-base:        4px;
    @border-radius-large:       6px;
    @border-radius-small:       3px;
    
    //** Global color for active items (e.g., navs or dropdowns).
    @component-active-color:    #fff;
    //** Global background color for active items (e.g., navs or dropdowns).
    @component-active-bg:       @brand-primary;
    
    //** Width of the `border` for generating carets that indicator dropdowns.
    @caret-width-base:          4px;
    //** Carets increase slightly in size for larger components.
    @caret-width-large:         5px;
    
    
    //== Tables
    //
    //## Customizes the `.table` component with basic values, each used across all table variations.
    
    //** Padding for ``s and ``s.
    @table-cell-padding:            8px;
    //** Padding for cells in `.table-condensed`.
    @table-condensed-cell-padding:  5px;
    
    //** Default background color used for all tables.
    @table-bg:                      transparent;
    //** Background color used for `.table-striped`.
    @table-bg-accent:               #f9f9f9;
    //** Background color used for `.table-hover`.
    @table-bg-hover:                #f5f5f5;
    @table-bg-active:               @table-bg-hover;
    
    //** Border color for table and cell borders.
    @table-border-color:            #ddd;
    
    
    //== Buttons
    //
    //## For each of Bootstrap's buttons, define text, background and border color.
    
    @btn-font-weight:                normal;
    
    @btn-default-color:              #333;
    @btn-default-bg:                 #fff;
    @btn-default-border:             #ccc;
    
    @btn-primary-color:              #fff;
    @btn-primary-bg:                 @brand-primary;
    @btn-primary-border:             darken(@btn-primary-bg, 5%);
    
    @btn-success-color:              #fff;
    @btn-success-bg:                 @brand-success;
    @btn-success-border:             darken(@btn-success-bg, 5%);
    
    @btn-info-color:                 #fff;
    @btn-info-bg:                    @brand-info;
    @btn-info-border:                darken(@btn-info-bg, 5%);
    
    @btn-warning-color:              #fff;
    @btn-warning-bg:                 @brand-warning;
    @btn-warning-border:             darken(@btn-warning-bg, 5%);
    
    @btn-danger-color:               #fff;
    @btn-danger-bg:                  @brand-danger;
    @btn-danger-border:              darken(@btn-danger-bg, 5%);
    
    @btn-link-disabled-color:        @gray-light;
    
    
    //== Forms
    //
    //##
    
    //** `` background color
    @input-bg:                       #fff;
    //** `` background color
    @input-bg-disabled:              @gray-lighter;
    
    //** Text color for ``s
    @input-color:                    @gray;
    //** `` border color
    @input-border:                   #ccc;
    //** `` border radius
    @input-border-radius:            @border-radius-base;
    //** Border color for inputs on focus
    @input-border-focus:             #66afe9;
    
    //** Placeholder text color
    @input-color-placeholder:        @gray-light;
    
    //** Default `.form-control` height
    @input-height-base:              (@line-height-computed + (@padding-base-vertical * 2) + 2);
    //** Large `.form-control` height
    @input-height-large:             (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);
    //** Small `.form-control` height
    @input-height-small:             (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);
    
    @legend-color:                   @gray-dark;
    @legend-border-color:            #e5e5e5;
    
    //** Background color for textual input addons
    @input-group-addon-bg:           @gray-lighter;
    //** Border color for textual input addons
    @input-group-addon-border-color: @input-border;
    
    
    //== Dropdowns
    //
    //## Dropdown menu container and contents.
    
    //** Background for the dropdown menu.
    @dropdown-bg:                    #fff;
    //** Dropdown menu `border-color`.
    @dropdown-border:                rgba(0,0,0,.15);
    //** Dropdown menu `border-color` **for IE8**.
    @dropdown-fallback-border:       #ccc;
    //** Divider color for between dropdown items.
    @dropdown-divider-bg:            #e5e5e5;
    
    //** Dropdown link text color.
    @dropdown-link-color:            @gray-dark;
    //** Hover color for dropdown links.
    @dropdown-link-hover-color:      darken(@gray-dark, 5%);
    //** Hover background for dropdown links.
    @dropdown-link-hover-bg:         #f5f5f5;
    
    //** Active dropdown menu item text color.
    @dropdown-link-active-color:     @component-active-color;
    //** Active dropdown menu item background color.
    @dropdown-link-active-bg:        @component-active-bg;
    
    //** Disabled dropdown menu item background color.
    @dropdown-link-disabled-color:   @gray-light;
    
    //** Text color for headers within dropdown menus.
    @dropdown-header-color:          @gray-light;
    
    //** Deprecated `@dropdown-caret-color` as of v3.1.0
    @dropdown-caret-color:           #000;
    
    
    //-- Z-index master list
    //
    // Warning: Avoid customizing these values. They're used for a bird's eye view
    // of components dependent on the z-axis and are designed to all work together.
    //
    // Note: These variables are not generated into the Customizer.
    
    @zindex-navbar:            1000;
    @zindex-dropdown:          1000;
    @zindex-popover:           1060;
    @zindex-tooltip:           1070;
    @zindex-navbar-fixed:      1030;
    @zindex-modal-background:  1040;
    @zindex-modal:             1050;
    
    
    //== Media queries breakpoints
    //
    //## Define the breakpoints at which your layout will change, adapting to different screen sizes.
    
    // Extra small screen / phone
    //** Deprecated `@screen-xs` as of v3.0.1
    @screen-xs:                  480px;
    //** Deprecated `@screen-xs-min` as of v3.2.0
    @screen-xs-min:              @screen-xs;
    //** Deprecated `@screen-phone` as of v3.0.1
    @screen-phone:               @screen-xs-min;
    
    // Small screen / tablet
    //** Deprecated `@screen-sm` as of v3.0.1
    @screen-sm:                  768px;
    @screen-sm-min:              @screen-sm;
    //** Deprecated `@screen-tablet` as of v3.0.1
    @screen-tablet:              @screen-sm-min;
    
    // Medium screen / desktop
    //** Deprecated `@screen-md` as of v3.0.1
    @screen-md:                  992px;
    @screen-md-min:              @screen-md;
    //** Deprecated `@screen-desktop` as of v3.0.1
    @screen-desktop:             @screen-md-min;
    
    // Large screen / wide desktop
    //** Deprecated `@screen-lg` as of v3.0.1
    @screen-lg:                  1200px;
    @screen-lg-min:              @screen-lg;
    //** Deprecated `@screen-lg-desktop` as of v3.0.1
    @screen-lg-desktop:          @screen-lg-min;
    
    // So media queries don't overlap when required, provide a maximum
    @screen-xs-max:              (@screen-sm-min - 1);
    @screen-sm-max:              (@screen-md-min - 1);
    @screen-md-max:              (@screen-lg-min - 1);
    
    
    //== Grid system
    //
    //## Define your custom responsive grid.
    
    //** Number of columns in the grid.
    @grid-columns:              12;
    //** Padding between columns. Gets divided in half for the left and right.
    @grid-gutter-width:         30px;
    // Navbar collapse
    //** Point at which the navbar becomes uncollapsed.
    @grid-float-breakpoint:     @screen-sm-min;
    //** Point at which the navbar begins collapsing.
    @grid-float-breakpoint-max: (@grid-float-breakpoint - 1);
    
    
    //== Container sizes
    //
    //## Define the maximum width of `.container` for different screen sizes.
    
    // Small screen / tablet
    @container-tablet:             ((720px + @grid-gutter-width));
    //** For `@screen-sm-min` and up.
    @container-sm:                 @container-tablet;
    
    // Medium screen / desktop
    @container-desktop:            ((940px + @grid-gutter-width));
    //** For `@screen-md-min` and up.
    @container-md:                 @container-desktop;
    
    // Large screen / wide desktop
    @container-large-desktop:      ((1140px + @grid-gutter-width));
    //** For `@screen-lg-min` and up.
    @container-lg:                 @container-large-desktop;
    
    
    //== Navbar
    //
    //##
    
    // Basics of a navbar
    @navbar-height:                    50px;
    @navbar-margin-bottom:             @line-height-computed;
    @navbar-border-radius:             @border-radius-base;
    @navbar-padding-horizontal:        floor((@grid-gutter-width / 2));
    @navbar-padding-vertical:          ((@navbar-height - @line-height-computed) / 2);
    @navbar-collapse-max-height:       340px;
    
    @navbar-default-color:             #777;
    @navbar-default-bg:                #f8f8f8;
    @navbar-default-border:            darken(@navbar-default-bg, 6.5%);
    
    // Navbar links
    @navbar-default-link-color:                #777;
    @navbar-default-link-hover-color:          #333;
    @navbar-default-link-hover-bg:             transparent;
    @navbar-default-link-active-color:         #555;
    @navbar-default-link-active-bg:            darken(@navbar-default-bg, 6.5%);
    @navbar-default-link-disabled-color:       #ccc;
    @navbar-default-link-disabled-bg:          transparent;
    
    // Navbar brand label
    @navbar-default-brand-color:               @navbar-default-link-color;
    @navbar-default-brand-hover-color:         darken(@navbar-default-brand-color, 10%);
    @navbar-default-brand-hover-bg:            transparent;
    
    // Navbar toggle
    @navbar-default-toggle-hover-bg:           #ddd;
    @navbar-default-toggle-icon-bar-bg:        #888;
    @navbar-default-toggle-border-color:       #ddd;
    
    
    // Inverted navbar
    // Reset inverted navbar basics
    @navbar-inverse-color:                      @gray-light;
    @navbar-inverse-bg:                         #222;
    @navbar-inverse-border:                     darken(@navbar-inverse-bg, 10%);
    
    // Inverted navbar links
    @navbar-inverse-link-color:                 @gray-light;
    @navbar-inverse-link-hover-color:           #fff;
    @navbar-inverse-link-hover-bg:              transparent;
    @navbar-inverse-link-active-color:          @navbar-inverse-link-hover-color;
    @navbar-inverse-link-active-bg:             darken(@navbar-inverse-bg, 10%);
    @navbar-inverse-link-disabled-color:        #444;
    @navbar-inverse-link-disabled-bg:           transparent;
    
    // Inverted navbar brand label
    @navbar-inverse-brand-color:                @navbar-inverse-link-color;
    @navbar-inverse-brand-hover-color:          #fff;
    @navbar-inverse-brand-hover-bg:             transparent;
    
    // Inverted navbar toggle
    @navbar-inverse-toggle-hover-bg:            #333;
    @navbar-inverse-toggle-icon-bar-bg:         #fff;
    @navbar-inverse-toggle-border-color:        #333;
    
    
    //== Navs
    //
    //##
    
    //=== Shared nav styles
    @nav-link-padding:                          10px 15px;
    @nav-link-hover-bg:                         @gray-lighter;
    
    @nav-disabled-link-color:                   @gray-light;
    @nav-disabled-link-hover-color:             @gray-light;
    
    @nav-open-link-hover-color:                 #fff;
    
    //== Tabs
    @nav-tabs-border-color:                     #ddd;
    
    @nav-tabs-link-hover-border-color:          @gray-lighter;
    
    @nav-tabs-active-link-hover-bg:             @body-bg;
    @nav-tabs-active-link-hover-color:          @gray;
    @nav-tabs-active-link-hover-border-color:   #ddd;
    
    @nav-tabs-justified-link-border-color:            #ddd;
    @nav-tabs-justified-active-link-border-color:     @body-bg;
    
    //== Pills
    @nav-pills-border-radius:                   @border-radius-base;
    @nav-pills-active-link-hover-bg:            @component-active-bg;
    @nav-pills-active-link-hover-color:         @component-active-color;
    
    
    //== Pagination
    //
    //##
    
    @pagination-color:                     @link-color;
    @pagination-bg:                        #fff;
    @pagination-border:                    #ddd;
    
    @pagination-hover-color:               @link-hover-color;
    @pagination-hover-bg:                  @gray-lighter;
    @pagination-hover-border:              #ddd;
    
    @pagination-active-color:              #fff;
    @pagination-active-bg:                 @brand-primary;
    @pagination-active-border:             @brand-primary;
    
    @pagination-disabled-color:            @gray-light;
    @pagination-disabled-bg:               #fff;
    @pagination-disabled-border:           #ddd;
    
    
    //== Pager
    //
    //##
    
    @pager-bg:                             @pagination-bg;
    @pager-border:                         @pagination-border;
    @pager-border-radius:                  15px;
    
    @pager-hover-bg:                       @pagination-hover-bg;
    
    @pager-active-bg:                      @pagination-active-bg;
    @pager-active-color:                   @pagination-active-color;
    
    @pager-disabled-color:                 @pagination-disabled-color;
    
    
    //== Jumbotron
    //
    //##
    
    @jumbotron-padding:              30px;
    @jumbotron-color:                inherit;
    @jumbotron-bg:                   @gray-lighter;
    @jumbotron-heading-color:        inherit;
    @jumbotron-font-size:            ceil((@font-size-base * 1.5));
    
    
    //== Form states and alerts
    //
    //## Define colors for form feedback states and, by default, alerts.
    
    @state-success-text:             #3c763d;
    @state-success-bg:               #dff0d8;
    @state-success-border:           darken(spin(@state-success-bg, -10), 5%);
    
    @state-info-text:                #31708f;
    @state-info-bg:                  #d9edf7;
    @state-info-border:              darken(spin(@state-info-bg, -10), 7%);
    
    @state-warning-text:             #8a6d3b;
    @state-warning-bg:               #fcf8e3;
    @state-warning-border:           darken(spin(@state-warning-bg, -10), 5%);
    
    @state-danger-text:              #a94442;
    @state-danger-bg:                #f2dede;
    @state-danger-border:            darken(spin(@state-danger-bg, -10), 5%);
    
    
    //== Tooltips
    //
    //##
    
    //** Tooltip max width
    @tooltip-max-width:           200px;
    //** Tooltip text color
    @tooltip-color:               #fff;
    //** Tooltip background color
    @tooltip-bg:                  #000;
    @tooltip-opacity:             .9;
    
    //** Tooltip arrow width
    @tooltip-arrow-width:         5px;
    //** Tooltip arrow color
    @tooltip-arrow-color:         @tooltip-bg;
    
    
    //== Popovers
    //
    //##
    
    //** Popover body background color
    @popover-bg:                          #fff;
    //** Popover maximum width
    @popover-max-width:                   276px;
    //** Popover border color
    @popover-border-color:                rgba(0,0,0,.2);
    //** Popover fallback border color
    @popover-fallback-border-color:       #ccc;
    
    //** Popover title background color
    @popover-title-bg:                    darken(@popover-bg, 3%);
    
    //** Popover arrow width
    @popover-arrow-width:                 10px;
    //** Popover arrow color
    @popover-arrow-color:                 #fff;
    
    //** Popover outer arrow width
    @popover-arrow-outer-width:           (@popover-arrow-width + 1);
    //** Popover outer arrow color
    @popover-arrow-outer-color:           fadein(@popover-border-color, 5%);
    //** Popover outer arrow fallback color
    @popover-arrow-outer-fallback-color:  darken(@popover-fallback-border-color, 20%);
    
    
    //== Labels
    //
    //##
    
    //** Default label background color
    @label-default-bg:            @gray-light;
    //** Primary label background color
    @label-primary-bg:            @brand-primary;
    //** Success label background color
    @label-success-bg:            @brand-success;
    //** Info label background color
    @label-info-bg:               @brand-info;
    //** Warning label background color
    @label-warning-bg:            @brand-warning;
    //** Danger label background color
    @label-danger-bg:             @brand-danger;
    
    //** Default label text color
    @label-color:                 #fff;
    //** Default text color of a linked label
    @label-link-hover-color:      #fff;
    
    
    //== Modals
    //
    //##
    
    //** Padding applied to the modal body
    @modal-inner-padding:         15px;
    
    //** Padding applied to the modal title
    @modal-title-padding:         15px;
    //** Modal title line-height
    @modal-title-line-height:     @line-height-base;
    
    //** Background color of modal content area
    @modal-content-bg:                             #fff;
    //** Modal content border color
    @modal-content-border-color:                   rgba(0,0,0,.2);
    //** Modal content border color **for IE8**
    @modal-content-fallback-border-color:          #999;
    
    //** Modal backdrop background color
    @modal-backdrop-bg:           #000;
    //** Modal backdrop opacity
    @modal-backdrop-opacity:      .5;
    //** Modal header border color
    @modal-header-border-color:   #e5e5e5;
    //** Modal footer border color
    @modal-footer-border-color:   @modal-header-border-color;
    
    @modal-lg:                    900px;
    @modal-md:                    600px;
    @modal-sm:                    300px;
    
    
    //== Alerts
    //
    //## Define alert colors, border radius, and padding.
    
    @alert-padding:               15px;
    @alert-border-radius:         @border-radius-base;
    @alert-link-font-weight:      bold;
    
    @alert-success-bg:            @state-success-bg;
    @alert-success-text:          @state-success-text;
    @alert-success-border:        @state-success-border;
    
    @alert-info-bg:               @state-info-bg;
    @alert-info-text:             @state-info-text;
    @alert-info-border:           @state-info-border;
    
    @alert-warning-bg:            @state-warning-bg;
    @alert-warning-text:          @state-warning-text;
    @alert-warning-border:        @state-warning-border;
    
    @alert-danger-bg:             @state-danger-bg;
    @alert-danger-text:           @state-danger-text;
    @alert-danger-border:         @state-danger-border;
    
    
    //== Progress bars
    //
    //##
    
    //** Background color of the whole progress component
    @progress-bg:                 #f5f5f5;
    //** Progress bar text color
    @progress-bar-color:          #fff;
    
    //** Default progress bar color
    @progress-bar-bg:             @brand-primary;
    //** Success progress bar color
    @progress-bar-success-bg:     @brand-success;
    //** Warning progress bar color
    @progress-bar-warning-bg:     @brand-warning;
    //** Danger progress bar color
    @progress-bar-danger-bg:      @brand-danger;
    //** Info progress bar color
    @progress-bar-info-bg:        @brand-info;
    
    
    //== List group
    //
    //##
    
    //** Background color on `.list-group-item`
    @list-group-bg:                 #fff;
    //** `.list-group-item` border color
    @list-group-border:             #ddd;
    //** List group border radius
    @list-group-border-radius:      @border-radius-base;
    
    //** Background color of single list items on hover
    @list-group-hover-bg:           #f5f5f5;
    //** Text color of active list items
    @list-group-active-color:       @component-active-color;
    //** Background color of active list items
    @list-group-active-bg:          @component-active-bg;
    //** Border color of active list elements
    @list-group-active-border:      @list-group-active-bg;
    //** Text color for content within active list items
    @list-group-active-text-color:  lighten(@list-group-active-bg, 40%);
    
    //** Text color of disabled list items
    @list-group-disabled-color:      @gray-light;
    //** Background color of disabled list items
    @list-group-disabled-bg:         @gray-lighter;
    //** Text color for content within disabled list items
    @list-group-disabled-text-color: @list-group-disabled-color;
    
    @list-group-link-color:         #555;
    @list-group-link-hover-color:   @list-group-link-color;
    @list-group-link-heading-color: #333;
    
    
    //== Panels
    //
    //##
    
    @panel-bg:                    #fff;
    @panel-body-padding:          15px;
    @panel-heading-padding:       10px 15px;
    @panel-footer-padding:        @panel-heading-padding;
    @panel-border-radius:         @border-radius-base;
    
    //** Border color for elements within panels
    @panel-inner-border:          #ddd;
    @panel-footer-bg:             #f5f5f5;
    
    @panel-default-text:          @gray-dark;
    @panel-default-border:        #ddd;
    @panel-default-heading-bg:    #f5f5f5;
    
    @panel-primary-text:          #fff;
    @panel-primary-border:        @brand-primary;
    @panel-primary-heading-bg:    @brand-primary;
    
    @panel-success-text:          @state-success-text;
    @panel-success-border:        @state-success-border;
    @panel-success-heading-bg:    @state-success-bg;
    
    @panel-info-text:             @state-info-text;
    @panel-info-border:           @state-info-border;
    @panel-info-heading-bg:       @state-info-bg;
    
    @panel-warning-text:          @state-warning-text;
    @panel-warning-border:        @state-warning-border;
    @panel-warning-heading-bg:    @state-warning-bg;
    
    @panel-danger-text:           @state-danger-text;
    @panel-danger-border:         @state-danger-border;
    @panel-danger-heading-bg:     @state-danger-bg;
    
    
    //== Thumbnails
    //
    //##
    
    //** Padding around the thumbnail image
    @thumbnail-padding:           4px;
    //** Thumbnail background color
    @thumbnail-bg:                @body-bg;
    //** Thumbnail border color
    @thumbnail-border:            #ddd;
    //** Thumbnail border radius
    @thumbnail-border-radius:     @border-radius-base;
    
    //** Custom text color for thumbnail captions
    @thumbnail-caption-color:     @text-color;
    //** Padding around the thumbnail caption
    @thumbnail-caption-padding:   9px;
    
    
    //== Wells
    //
    //##
    
    @well-bg:                     #f5f5f5;
    @well-border:                 darken(@well-bg, 7%);
    
    
    //== Badges
    //
    //##
    
    @badge-color:                 #fff;
    //** Linked badge text color on hover
    @badge-link-hover-color:      #fff;
    @badge-bg:                    @gray-light;
    
    //** Badge text color in active nav link
    @badge-active-color:          @link-color;
    //** Badge background color in active nav link
    @badge-active-bg:             #fff;
    
    @badge-font-weight:           bold;
    @badge-line-height:           1;
    @badge-border-radius:         10px;
    
    
    //== Breadcrumbs
    //
    //##
    
    @breadcrumb-padding-vertical:   8px;
    @breadcrumb-padding-horizontal: 15px;
    //** Breadcrumb background color
    @breadcrumb-bg:                 #f5f5f5;
    //** Breadcrumb text color
    @breadcrumb-color:              #ccc;
    //** Text color of current page in the breadcrumb
    @breadcrumb-active-color:       @gray-light;
    //** Textual separator for between breadcrumb elements
    @breadcrumb-separator:          "/";
    
    
    //== Carousel
    //
    //##
    
    @carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6);
    
    @carousel-control-color:                      #fff;
    @carousel-control-width:                      15%;
    @carousel-control-opacity:                    .5;
    @carousel-control-font-size:                  20px;
    
    @carousel-indicator-active-bg:                #fff;
    @carousel-indicator-border-color:             #fff;
    
    @carousel-caption-color:                      #fff;
    
    
    //== Close
    //
    //##
    
    @close-font-weight:           bold;
    @close-color:                 #000;
    @close-text-shadow:           0 1px 0 #fff;
    
    
    //== Code
    //
    //##
    
    @code-color:                  #c7254e;
    @code-bg:                     #f9f2f4;
    
    @kbd-color:                   #fff;
    @kbd-bg:                      #333;
    
    @pre-bg:                      #f5f5f5;
    @pre-color:                   @gray-dark;
    @pre-border-color:            #ccc;
    @pre-scrollable-max-height:   340px;
    
    
    //== Type
    //
    //##
    
    //** Text muted color
    @text-muted:                  @gray-light;
    //** Abbreviations and acronyms border color
    @abbr-border-color:           @gray-light;
    //** Headings small color
    @headings-small-color:        @gray-light;
    //** Blockquote small color
    @blockquote-small-color:      @gray-light;
    //** Blockquote font size
    @blockquote-font-size:        (@font-size-base * 1.25);
    //** Blockquote border color
    @blockquote-border-color:     @gray-lighter;
    //** Page header border color
    @page-header-border-color:    @gray-lighter;
    
    
    //== Miscellaneous
    //
    //##
    
    //** Horizontal line color.
    @hr-border:                   @gray-lighter;
    
    //** Horizontal offset for forms and lists.
    @component-offset-horizontal: 180px;
    PK<\+%
    
    ,assets/lib/bower/bootstrap3/less/modals.lessnu[//
    // Modals
    // --------------------------------------------------
    
    // .modal-open      - body class for killing the scroll
    // .modal           - container to scroll within
    // .modal-dialog    - positioning shell for the actual modal
    // .modal-content   - actual modal w/ bg and corners and shit
    
    // Kill the scroll on the body
    .modal-open {
      overflow: hidden;
    }
    
    // Container that the modal scrolls within
    .modal {
      display: none;
      overflow: auto;
      overflow-y: scroll;
      position: fixed;
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
      z-index: @zindex-modal;
      -webkit-overflow-scrolling: touch;
    
      // Prevent Chrome on Windows from adding a focus outline. For details, see
      // https://github.com/twbs/bootstrap/pull/10951.
      outline: 0;
    
      // When fading in the modal, animate it to slide down
      &.fade .modal-dialog {
        .translate(0, -25%);
        .transition-transform(~"0.3s ease-out");
      }
      &.in .modal-dialog { .translate(0, 0)}
    }
    
    // Shell div to position the modal with bottom padding
    .modal-dialog {
      position: relative;
      width: auto;
      margin: 10px;
    }
    
    // Actual modal
    .modal-content {
      position: relative;
      background-color: @modal-content-bg;
      border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)
      border: 1px solid @modal-content-border-color;
      border-radius: @border-radius-large;
      .box-shadow(0 3px 9px rgba(0,0,0,.5));
      background-clip: padding-box;
      // Remove focus outline from opened modal
      outline: 0;
    }
    
    // Modal background
    .modal-backdrop {
      position: fixed;
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
      z-index: @zindex-modal-background;
      background-color: @modal-backdrop-bg;
      // Fade for backdrop
      &.fade { .opacity(0); }
      &.in { .opacity(@modal-backdrop-opacity); }
    }
    
    // Modal header
    // Top section of the modal w/ title and dismiss
    .modal-header {
      padding: @modal-title-padding;
      border-bottom: 1px solid @modal-header-border-color;
      min-height: (@modal-title-padding + @modal-title-line-height);
    }
    // Close icon
    .modal-header .close {
      margin-top: -2px;
    }
    
    // Title text within header
    .modal-title {
      margin: 0;
      line-height: @modal-title-line-height;
    }
    
    // Modal body
    // Where all modal content resides (sibling of .modal-header and .modal-footer)
    .modal-body {
      position: relative;
      padding: @modal-inner-padding;
    }
    
    // Footer (for actions)
    .modal-footer {
      padding: @modal-inner-padding;
      text-align: right; // right align buttons
      border-top: 1px solid @modal-footer-border-color;
      &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons
    
      // Properly space out buttons
      .btn + .btn {
        margin-left: 5px;
        margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs
      }
      // but override that for button groups
      .btn-group .btn + .btn {
        margin-left: -1px;
      }
      // and override it for block buttons as well
      .btn-block + .btn-block {
        margin-left: 0;
      }
    }
    
    // Measure scrollbar width for padding body during modal show/hide
    .modal-scrollbar-measure {
      position: absolute;
      top: -9999px;
      width: 50px;
      height: 50px;
      overflow: scroll;
    }
    
    // Scale up the modal
    @media (min-width: @screen-sm-min) {
      // Automatically set modal's width for larger viewports
      .modal-dialog {
        width: @modal-md;
        margin: 30px auto;
      }
      .modal-content {
        .box-shadow(0 5px 15px rgba(0,0,0,.5));
      }
    
      // Modal sizes
      .modal-sm { width: @modal-sm; }
    }
    
    @media (min-width: @screen-md-min) {
      .modal-lg { width: @modal-lg; }
    }
    PK<\5v++6assets/lib/bower/bootstrap3/less/responsive-embed.lessnu[// Embeds responsive
    //
    // Credit: Nicolas Gallagher and SUIT CSS.
    
    .embed-responsive {
      position: relative;
      display: block;
      height: 0;
      padding: 0;
      overflow: hidden;
    
      .embed-responsive-item,
      iframe,
      embed,
      object {
        position: absolute;
        top: 0;
        left: 0;
        bottom: 0;
        height: 100%;
        width: 100%;
        border: 0;
      }
    
      // Modifier class for 16:9 aspect ratio
      &.embed-responsive-16by9 {
        padding-bottom: 56.25%;
      }
    
      // Modifier class for 4:3 aspect ratio
      &.embed-responsive-4by3 {
        padding-bottom: 75%;
      }
    }
    PK<\Zj%e==*assets/lib/bower/bootstrap3/less/navs.lessnu[//
    // Navs
    // --------------------------------------------------
    
    
    // Base class
    // --------------------------------------------------
    
    .nav {
      margin-bottom: 0;
      padding-left: 0; // Override default ul/ol
      list-style: none;
      &:extend(.clearfix all);
    
      > li {
        position: relative;
        display: block;
    
        > a {
          position: relative;
          display: block;
          padding: @nav-link-padding;
          &:hover,
          &:focus {
            text-decoration: none;
            background-color: @nav-link-hover-bg;
          }
        }
    
        // Disabled state sets text to gray and nukes hover/tab effects
        &.disabled > a {
          color: @nav-disabled-link-color;
    
          &:hover,
          &:focus {
            color: @nav-disabled-link-hover-color;
            text-decoration: none;
            background-color: transparent;
            cursor: not-allowed;
          }
        }
      }
    
      // Open dropdowns
      .open > a {
        &,
        &:hover,
        &:focus {
          background-color: @nav-link-hover-bg;
          border-color: @link-color;
        }
      }
    
      // Nav dividers (deprecated with v3.0.1)
      //
      // This should have been removed in v3 with the dropping of `.nav-list`, but
      // we missed it. We don't currently support this anywhere, but in the interest
      // of maintaining backward compatibility in case you use it, it's deprecated.
      .nav-divider {
        .nav-divider();
      }
    
      // Prevent IE8 from misplacing imgs
      //
      // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989
      > li > a > img {
        max-width: none;
      }
    }
    
    
    // Tabs
    // -------------------------
    
    // Give the tabs something to sit on
    .nav-tabs {
      border-bottom: 1px solid @nav-tabs-border-color;
      > li {
        float: left;
        // Make the list-items overlay the bottom border
        margin-bottom: -1px;
    
        // Actual tabs (as links)
        > a {
          margin-right: 2px;
          line-height: @line-height-base;
          border: 1px solid transparent;
          border-radius: @border-radius-base @border-radius-base 0 0;
          &:hover {
            border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;
          }
        }
    
        // Active state, and its :hover to override normal :hover
        &.active > a {
          &,
          &:hover,
          &:focus {
            color: @nav-tabs-active-link-hover-color;
            background-color: @nav-tabs-active-link-hover-bg;
            border: 1px solid @nav-tabs-active-link-hover-border-color;
            border-bottom-color: transparent;
            cursor: default;
          }
        }
      }
      // pulling this in mainly for less shorthand
      &.nav-justified {
        .nav-justified();
        .nav-tabs-justified();
      }
    }
    
    
    // Pills
    // -------------------------
    .nav-pills {
      > li {
        float: left;
    
        // Links rendered as pills
        > a {
          border-radius: @nav-pills-border-radius;
        }
        + li {
          margin-left: 2px;
        }
    
        // Active state
        &.active > a {
          &,
          &:hover,
          &:focus {
            color: @nav-pills-active-link-hover-color;
            background-color: @nav-pills-active-link-hover-bg;
          }
        }
      }
    }
    
    
    // Stacked pills
    .nav-stacked {
      > li {
        float: none;
        + li {
          margin-top: 2px;
          margin-left: 0; // no need for this gap between nav items
        }
      }
    }
    
    
    // Nav variations
    // --------------------------------------------------
    
    // Justified nav links
    // -------------------------
    
    .nav-justified {
      width: 100%;
    
      > li {
        float: none;
        > a {
          text-align: center;
          margin-bottom: 5px;
        }
      }
    
      > .dropdown .dropdown-menu {
        top: auto;
        left: auto;
      }
    
      @media (min-width: @screen-sm-min) {
        > li {
          display: table-cell;
          width: 1%;
          > a {
            margin-bottom: 0;
          }
        }
      }
    }
    
    // Move borders to anchors instead of bottom of list
    //
    // Mixin for adding on top the shared `.nav-justified` styles for our tabs
    .nav-tabs-justified {
      border-bottom: 0;
    
      > li > a {
        // Override margin from .nav-tabs
        margin-right: 0;
        border-radius: @border-radius-base;
      }
    
      > .active > a,
      > .active > a:hover,
      > .active > a:focus {
        border: 1px solid @nav-tabs-justified-link-border-color;
      }
    
      @media (min-width: @screen-sm-min) {
        > li > a {
          border-bottom: 1px solid @nav-tabs-justified-link-border-color;
          border-radius: @border-radius-base @border-radius-base 0 0;
        }
        > .active > a,
        > .active > a:hover,
        > .active > a:focus {
          border-bottom-color: @nav-tabs-justified-active-link-border-color;
        }
      }
    }
    
    
    // Tabbable tabs
    // -------------------------
    
    // Hide tabbable panes to start, show them when `.active`
    .tab-content {
      > .tab-pane {
        display: none;
      }
      > .active {
        display: block;
      }
    }
    
    
    // Dropdowns
    // -------------------------
    
    // Specific dropdowns
    .nav-tabs .dropdown-menu {
      // make dropdown border overlap tab border
      margin-top: -1px;
      // Remove the top rounded corners here since there is a hard edge above the menu
      .border-top-radius(0);
    }
    PK<\mM*assets/lib/bower/bootstrap3/less/code.lessnu[//
    // Code (inline and block)
    // --------------------------------------------------
    
    
    // Inline and block code styles
    code,
    kbd,
    pre,
    samp {
      font-family: @font-family-monospace;
    }
    
    // Inline code
    code {
      padding: 2px 4px;
      font-size: 90%;
      color: @code-color;
      background-color: @code-bg;
      border-radius: @border-radius-base;
    }
    
    // User input typically entered via keyboard
    kbd {
      padding: 2px 4px;
      font-size: 90%;
      color: @kbd-color;
      background-color: @kbd-bg;
      border-radius: @border-radius-small;
      box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);
    }
    
    // Blocks of code
    pre {
      display: block;
      padding: ((@line-height-computed - 1) / 2);
      margin: 0 0 (@line-height-computed / 2);
      font-size: (@font-size-base - 1); // 14px to 13px
      line-height: @line-height-base;
      word-break: break-all;
      word-wrap: break-word;
      color: @pre-color;
      background-color: @pre-bg;
      border: 1px solid @pre-border-color;
      border-radius: @border-radius-base;
    
      // Account for some code outputs that place code tags in pre tags
      code {
        padding: 0;
        font-size: inherit;
        color: inherit;
        white-space: pre-wrap;
        background-color: transparent;
        border-radius: 0;
      }
    }
    
    // Enable scrollable blocks of code
    .pre-scrollable {
      max-height: @pre-scrollable-max-height;
      overflow-y: scroll;
    }
    PK<\&J77,assets/lib/bower/bootstrap3/less/labels.lessnu[//
    // Labels
    // --------------------------------------------------
    
    .label {
      display: inline;
      padding: .2em .6em .3em;
      font-size: 75%;
      font-weight: bold;
      line-height: 1;
      color: @label-color;
      text-align: center;
      white-space: nowrap;
      vertical-align: baseline;
      border-radius: .25em;
    
      // Add hover effects, but only for links
      a& {
        &:hover,
        &:focus {
          color: @label-link-hover-color;
          text-decoration: none;
          cursor: pointer;
        }
      }
    
      // Empty labels collapse automatically (not available in IE8)
      &:empty {
        display: none;
      }
    
      // Quick fix for labels in buttons
      .btn & {
        position: relative;
        top: -1px;
      }
    }
    
    // Colors
    // Contextual variations (linked labels get darker on :hover)
    
    .label-default {
      .label-variant(@label-default-bg);
    }
    
    .label-primary {
      .label-variant(@label-primary-bg);
    }
    
    .label-success {
      .label-variant(@label-success-bg);
    }
    
    .label-info {
      .label-variant(@label-info-bg);
    }
    
    .label-warning {
      .label-variant(@label-warning-bg);
    }
    
    .label-danger {
      .label-variant(@label-danger-bg);
    }
    PK<\30assets/lib/bower/bootstrap3/less/list-group.lessnu[//
    // List groups
    // --------------------------------------------------
    
    
    // Base class
    //
    // Easily usable on 
    '; return $output; } public function mainHtmlBlockParams( $width, $i ) { $sortable = ( vc_user_access_check_shortcode_all( $this->shortcode ) ? 'wpb_sortable' : $this->nonDraggableClass ); return 'data-element_type="' . $this->settings['base'] . '" class="' . $this->settings['base'] . '-shortcode ' . $sortable . ' wpb_content_holder vc_shortcodes_container"' . $this->customAdminBlockParams(); } public function itemGrid() { $output = '
    ' . '
    ' . '
    ' . '
    ' . '
    ' . '
    ' . '
    ' . '
    ' . '
    ' . '
    ' . '
    '; return $output; } public function containerHtmlBlockParams( $width, $i ) { return 'class="vc_gitem-content"'; } /** * Get rendered controls * * @param array $controls * * @return string */ public function getControls( $controls ) { if ( ! is_array( $controls ) || empty( $controls ) ) { return ''; } $buttons = array(); $editAccess = vc_user_access_check_shortcode_edit( $this->shortcode ); $allAccess = vc_user_access_check_shortcode_all( $this->shortcode ); foreach ( $controls as $control ) { switch ( $control ) { case 'add': if ( $allAccess ) { $buttons[] = ''; } break; case 'edit': if ( $editAccess ) { $buttons[] = ''; } break; case 'delete': if ( $allAccess ) { $buttons[] = ''; } break; } } $html = '
    ' . implode( ' ', $buttons ) . '
    '; return $html; } } PK<\k&include/classes/shortcodes/example.phpnu[ '1/2', 'el_position' => '', 'foo' => '', 'my_dropdown' => '', ), $atts ) ); $width_class = ''; $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $width_class, $this->settings['base'], $atts ); $output = '
    '; $output .= '

    ' . $foo . '

    '; $output .= wpb_js_remove_wpautop( $content, true ); $output .= '

    Dropdown: ' . $my_dropdown . '

    '; $output .= '
    '; return $output; } } /* * Settings array to setup shortcode "Hello world" * base param is required. * * Mapping examples: $PLUGIN_DIR/config/map.php * * name - used in content elements menu and shortcode edit screen. * base - shortcode base. Example my_hello_world * class - helper class to target your shortcode in css in WPBakery Page Builder edit mode * icon - in order to add icon for your shortcode in dropdown menu, add class name here and style it in * your own css file. Note: bootstrap icons supported. * controls - in WPBakery Page Builder mode shortcodes can have different controls (popup_delete, edit_popup_delete, size_delete, popup_delete, full). Default is full. * params - array which holds your shortcode params. This params will be editable in shortcode settings page. * * Available param types: * * textarea_html (only one html textarea is permitted per shortcode) * textfield - simple input field, * dropdown - dropdown element with set of available options, * attach_image - single image selection, * attach_images - multiple images selection, * exploded_textarea - textarea, where each line will be imploded with comma (,), * posttypes - checkboxes with available post types, * widgetised_sidebars - dropdown element with set of available widget regions, * textarea - simple textarea, * textarea_raw_html - textarea, it's content will be codede into base64 (this allows you to store raw js or raw html code). * */ vc_map( array( 'base' => 'my_hello_world', 'name' => __( 'Hello World', 'js_composer' ), 'class' => '', 'icon' => 'icon-heart', 'params' => array( array( 'type' => 'textfield', 'holder' => 'h3', 'class' => '', 'heading' => __( 'Foo attribute', 'js_composer' ), 'param_name' => 'foo', 'value' => __( "I'm foo attribute", 'js_composer' ), 'description' => __( 'Enter foo value.', 'js_composer' ), ), array( 'type' => 'textarea_html', 'holder' => 'div', 'class' => '', 'heading' => __( 'Text', 'js_composer' ), 'param_name' => 'content', 'value' => __( "I'm hello world", 'js_composer' ), 'description' => __( 'Enter your content.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Drop down example', 'js_composer' ), 'param_name' => 'my_dropdown', 'value' => array( 1, 2, 'three' ), 'description' => __( 'One, two or three?', 'js_composer' ), ), ), ) ); PK<\.h-include/classes/shortcodes/vc-round-chart.phpnu[jsScripts(); } public function jsScripts() { wp_register_script( 'waypoints', vc_asset_url( 'lib/waypoints/waypoints.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true ); wp_register_script( 'ChartJS', vc_asset_url( 'lib/bower/chartjs/Chart.min.js' ), array(), WPB_VC_VERSION, true ); wp_register_script( 'vc_round_chart', vc_asset_url( 'lib/vc_round_chart/vc_round_chart.min.js' ), array( 'jquery', 'waypoints', 'ChartJS', ), WPB_VC_VERSION, true ); } } PK<\Ș,include/classes/shortcodes/vc-posts-grid.phpnu[teaser_data = get_post_meta( $id, self::$meta_data_name, true ); return isset( $this->teaser_data[ $name ] ) ? $this->teaser_data[ $name ] : ''; } protected function getCategoriesCss( $post_id ) { $categories_css = ''; $post_categories = wp_get_object_terms( $post_id, $this->getTaxonomies() ); foreach ( $post_categories as $cat ) { if ( ! in_array( $cat->term_id, $this->filter_categories ) ) { $this->filter_categories[] = $cat->term_id; } $categories_css .= ' grid-cat-' . $cat->term_id; } return $categories_css; } protected function resetTaxonomies() { $this->taxonomies = false; } protected function getTaxonomies() { if ( false === $this->taxonomies ) { $this->taxonomies = get_object_taxonomies( ! empty( $this->loop_args['post_type'] ) ? $this->loop_args['post_type'] : get_post_types( array( 'public' => false, 'name' => 'attachment', ), 'names', 'NOT' ) ); } return $this->taxonomies; } protected function getLoop( $loop ) { global $vc_posts_grid_exclude_id; $vc_posts_grid_exclude_id[] = get_the_ID(); require_once vc_path_dir( 'PARAMS_DIR', 'loop/loop.php' ); list( $this->loop_args, $this->query ) = vc_build_loop_query( $loop, $vc_posts_grid_exclude_id ); } protected function spanClass( $grid_columns_count ) { $teaser_width = ''; switch ( $grid_columns_count ) { case '1' : $teaser_width = 'vc_col-sm-12'; break; case '2' : $teaser_width = 'vc_col-sm-6'; break; case '3' : $teaser_width = 'vc_col-sm-4'; break; case '4' : $teaser_width = 'vc_col-sm-3'; break; case '5': $teaser_width = 'vc_col-sm-10'; break; case '6' : $teaser_width = 'vc_col-sm-2'; break; } return $teaser_width; } protected function getMainCssClass( $filter ) { return 'wpb_' . ( 'yes' === $filter ? 'filtered_' : '' ) . 'grid'; } protected function getFilterCategories() { return get_terms( $this->getTaxonomies(), array( 'orderby' => 'name', 'include' => implode( ',', $this->filter_categories ), ) ); } protected function getPostThumbnail( $post_id, $grid_thumb_size ) { return wpb_getImageBySize( array( 'post_id' => $post_id, 'thumb_size' => $grid_thumb_size ) ); } protected function getPostContent() { remove_filter( 'the_content', 'wpautop' ); $content = str_replace( ']]>', ']]>', apply_filters( 'the_content', get_the_content() ) ); return $content; } protected function getPostExcerpt() { remove_filter( 'the_excerpt', 'wpautop' ); $content = apply_filters( 'the_excerpt', get_the_excerpt() ); return $content; } protected function getLinked( $post, $content, $type, $css_class ) { $output = ''; if ( 'link_post' === $type || empty( $type ) ) { $url = get_permalink( $post->id ); $title = sprintf( esc_attr__( 'Permalink to %s', 'js_composer' ), $post->title_attribute ); $output .= 'link_target . ' title="' . $title . '">' . $content . ''; } elseif ( 'link_image' === $type && isset( $post->image_link ) && ! empty( $post->image_link ) ) { $this->loadPrettyPhoto(); // actually fixes relations if more prettyphoto added on page if ( ! $this->pretty_rel_random ) { $this->pretty_rel_random = ' data-rel="prettyPhoto[rel-' . get_the_ID() . '-' . rand() . ']"'; } $output .= 'pretty_rel_random . ' ' . $this->link_target . ' title="' . $post->title_attribute . '">' . $content . ''; } else { $output .= $content; } return $output; } protected function loadPrettyPhoto() { if ( true !== self::$pretty_photo_loaded ) { wp_enqueue_script( 'prettyphoto' ); wp_enqueue_style( 'prettyphoto' ); self::$pretty_photo_loaded = true; } } protected function setLinkTarget( $grid_link_target = '' ) { $this->link_target = '_blank' === $grid_link_target ? ' target="_blank"' : ''; } protected function findBlockTemplate() { $template_path = $this->block_template_dir_name . '/' . $this->block_template_filename; // Check template path in shortcode's mapping settings if ( ! empty( $this->settings['html_template'] ) && is_file( $this->settings( 'html_template' ) . $template_path ) ) { return $this->settings['html_template'] . $template_path; } // Check template in theme directory $user_template = vc_shortcodes_theme_templates_dir( $template_path ); if ( is_file( $user_template ) ) { return $user_template; } // Check default place $default_dir = vc_manager()->getDefaultShortcodesTemplatesDir() . '/'; if ( is_file( $default_dir . $template_path ) ) { return $default_dir . $template_path; } return $template_path; } protected function getBlockTemplate() { if ( ! isset( $this->block_template_path ) ) { $this->block_template_path = $this->findBlockTemplate(); } return $this->block_template_path; } } PK<\h&+include/classes/shortcodes/vc-accordion.phpnu[ '1/1' ); foreach ( $this->settings['params'] as $param ) { if ( 'content' !== $param['param_name'] ) { $shortcode_attributes[ $param['param_name'] ] = isset( $param['value'] ) ? $param['value'] : null; } elseif ( 'content' === $param['param_name'] && null === $content ) { $content = $param['value']; } } extract( shortcode_atts( $shortcode_attributes, $atts ) ); $elem = $this->getElementHolder( $width ); $inner = ''; foreach ( $this->settings['params'] as $param ) { $param_value = isset( ${$param['param_name']} ) ? ${$param['param_name']} : ''; if ( is_array( $param_value ) ) { // Get first element from the array reset( $param_value ); $first_key = key( $param_value ); $param_value = $param_value[ $first_key ]; } $inner .= $this->singleParamHtmlHolder( $param, $param_value ); } $tmp = ''; if ( isset( $this->settings['custom_markup'] ) && '' !== $this->settings['custom_markup'] ) { if ( '' !== $content ) { $custom_markup = str_ireplace( '%content%', $tmp . $content, $this->settings['custom_markup'] ); } elseif ( '' === $content && isset( $this->settings['default_content_in_template'] ) && '' !== $this->settings['default_content_in_template'] ) { $custom_markup = str_ireplace( '%content%', $this->settings['default_content_in_template'], $this->settings['custom_markup'] ); } else { $custom_markup = str_ireplace( '%content%', '', $this->settings['custom_markup'] ); } $inner .= do_shortcode( $custom_markup ); } $output = str_ireplace( '%wpb_element_content%', $inner, $elem ); return $output; } } PK<\ø*include/classes/shortcodes/vc-raw-html.phpnu[' . htmlentities( rawurldecode( base64_decode( strip_tags( $value ) ) ), ENT_COMPAT, 'UTF-8' ) . ''; } else { $output .= '<' . $param['holder'] . ' class="wpb_vc_param_value ' . $param_name . ' ' . $type . ' ' . $class . '" name="' . $param_name . '">' . $value . ''; } } return $output; } } PK<\\(include/classes/shortcodes/vc-zigzag.phpnu[shortcode ) ? ' wpb_sortable ' : ' '. $this->nonDraggableClass . ' ' ); return 'data-element_type="' . $this->settings['base'] . '" data-vc-column-width="' . wpb_vc_get_column_width_indent( $width[ $i ] ) . '" class="wpb_vc_column wpb_' . $this->settings['base'] . $sortable . $this->templateWidth() . ' wpb_content_holder"' . $this->customAdminBlockParams(); } public function outputEditorControlAlign() { $alignment = array( array( 'name' => 'left', 'label' => __( 'Left', 'js_composer' ) ), array( 'name' => 'center', 'label' => __( 'Center', 'js_composer' ) ), array( 'name' => 'right', 'label' => __( 'Right', 'js_composer' ) ), ); $output = ''; foreach ( $alignment as $data ) { $attr = esc_attr( $data['name'] ); $output .= ''; } return $output . ''; } } PK<\t--/include/classes/shortcodes/vc-tta-accordion.phpnu[atts = $atts; $this->content = $content; $this->template_vars = array(); } public function setGlobalTtaInfo() { $sectionClass = visual_composer()->getShortCode( 'vc_tta_section' )->shortcodeClass(); $this->sectionClass = $sectionClass; /** @var $sectionClass WPBakeryShortCode_VC_Tta_Section */ if ( is_object( $sectionClass ) ) { VcShortcodeAutoloader::getInstance()->includeClass( 'WPBakeryShortCode_VC_Tta_Section' ); WPBakeryShortCode_VC_Tta_Section::$tta_base_shortcode = $this; WPBakeryShortCode_VC_Tta_Section::$self_count = 0; WPBakeryShortCode_VC_Tta_Section::$section_info = array(); return true; } return false; } /** * Override default getColumnControls to make it "simple"(blue), as single element has * * @param string $controls * @param string $extended_css * * @return string */ public function getColumnControls( $controls = 'full', $extended_css = '' ) { // we don't need containers bottom-controls for tabs if ( 'bottom-controls' === $extended_css ) { return ''; } $column_controls = $this->getColumnControlsModular(); return $output = $column_controls; } public function getTtaContainerClasses() { $classes = array(); $classes[] = 'vc_tta-container'; return implode( ' ', apply_filters( 'vc_tta_container_classes', array_filter( $classes ), $this->getAtts() ) ); } public function getTtaGeneralClasses() { $classes = array(); $classes[] = 'vc_general'; $classes[] = 'vc_tta'; $classes[] = 'vc_tta-' . $this->layout; $classes[] = $this->getTemplateVariable( 'color' ); $classes[] = $this->getTemplateVariable( 'style' ); $classes[] = $this->getTemplateVariable( 'shape' ); $classes[] = $this->getTemplateVariable( 'spacing' ); $classes[] = $this->getTemplateVariable( 'gap' ); $classes[] = $this->getTemplateVariable( 'c_align' ); $classes[] = $this->getTemplateVariable( 'no_fill' ); if ( isset( $this->atts['collapsible_all'] ) && 'true' === $this->atts['collapsible_all'] ) { $classes[] = 'vc_tta-o-all-clickable'; } $pagination = isset( $this->atts['pagination_style'] ) ? trim( $this->atts['pagination_style'] ) : false; if ( $pagination && 'none' !== $pagination && strlen( $pagination ) > 0 ) { $classes[] = 'vc_tta-has-pagination'; } /** * @since 4.6.2 */ if ( isset( $this->atts['el_class'] ) ) { $classes[] = $this->atts['el_class']; } return implode( ' ', apply_filters( 'vc_tta_accordion_general_classes', array_filter( $classes ), $this->getAtts() ) ); } public function getTtaPaginationClasses() { $classes = array(); $classes[] = 'vc_general'; $classes[] = 'vc_pagination'; if ( isset( $this->atts['pagination_style'] ) && strlen( $this->atts['pagination_style'] ) > 0 ) { $chunks = explode( '-', $this->atts['pagination_style'] ); $classes[] = 'vc_pagination-style-' . $chunks[0]; $classes[] = 'vc_pagination-shape-' . $chunks[1]; } if ( isset( $this->atts['pagination_color'] ) && strlen( $this->atts['pagination_color'] ) > 0 ) { $classes[] = 'vc_pagination-color-' . $this->atts['pagination_color']; } return implode( ' ', $classes ); } public function getWrapperAttributes() { $attributes = array(); $attributes[] = 'class="' . esc_attr( $this->getTtaContainerClasses() ) . '"'; $attributes[] = 'data-vc-action="' . ( 'true' === $this->atts['collapsible_all'] ? 'collapseAll' : 'collapse' ) . '"'; $autoplay = isset( $this->atts['autoplay'] ) ? trim( $this->atts['autoplay'] ) : false; if ( $autoplay && 'none' !== $autoplay && intval( $autoplay ) > 0 ) { $attributes[] = 'data-vc-tta-autoplay="' . esc_attr( json_encode( array( 'delay' => intval( $autoplay ) * 1000, ) ) ) . '"'; } if ( ! empty( $this->atts['el_id'] ) ) { $attributes[] = 'id="' . esc_attr( $this->atts['el_id'] ) . '"'; } return implode( ' ', $attributes ); } public function getTemplateVariable( $string ) { if ( isset( $this->template_vars[ $string ] ) ) { return $this->template_vars[ $string ]; } elseif ( method_exists( $this, 'getParam' . vc_studly( $string ) ) ) { $this->template_vars[ $string ] = $this->{'getParam' . vc_studly( $string )}( $this->atts, $this->content ); return $this->template_vars[ $string ]; } return ''; } /** * @param $atts * @param $content * * @return string|null */ public function getParamColor( $atts, $content ) { if ( isset( $atts['color'] ) && strlen( $atts['color'] ) > 0 ) { return 'vc_tta-color-' . $atts['color']; } return null; } /** * @param $atts * @param $content * * @return string|null */ public function getParamStyle( $atts, $content ) { if ( isset( $atts['style'] ) && strlen( $atts['style'] ) > 0 ) { return 'vc_tta-style-' . $atts['style']; } return null; } /** * @param $atts * @param $content * * @return string|null */ public function getParamTitle( $atts, $content ) { if ( isset( $atts['title'] ) && strlen( $atts['title'] ) > 0 ) { return '

    ' . $atts['title'] . '

    '; } return null; } /** * @param $atts * @param $content * * @return string|null */ public function getParamContent( $atts, $content ) { $panelsContent = wpb_js_remove_wpautop( $content ); if ( isset( $atts['c_icon'] ) && strlen( $atts['c_icon'] ) > 0 ) { $isPageEditable = vc_is_page_editable(); if ( ! $isPageEditable ) { $panelsContent = str_replace( '{{{ control-icon }}}', '', $panelsContent ); } else { $panelsContent = str_replace( '{{{ control-icon }}}', '', $panelsContent ); } } else { $panelsContent = str_replace( '{{{ control-icon }}}', '', $panelsContent ); } return $panelsContent; } /** * @param $atts * @param $content * * @return string|null */ public function getParamShape( $atts, $content ) { if ( isset( $atts['shape'] ) && strlen( $atts['shape'] ) > 0 ) { return 'vc_tta-shape-' . $atts['shape']; } return null; } /** * @param $atts * @param $content * * @return string */ public function getParamSpacing( $atts, $content ) { if ( isset( $atts['spacing'] ) && strlen( $atts['spacing'] ) > 0 ) { return 'vc_tta-spacing-' . $atts['spacing']; } // In case if no spacing set we need to append extra class return 'vc_tta-o-shape-group'; } /** * @param $atts * @param $content * * @return string|null */ public function getParamGap( $atts, $content ) { if ( isset( $atts['gap'] ) && strlen( $atts['gap'] ) > 0 ) { return 'vc_tta-gap-' . $atts['gap']; } return null; } /** * @param $atts * @param $content * * @return string|null */ public function getParamNoFill( $atts, $content ) { if ( isset( $atts['no_fill'] ) && 'true' === $atts['no_fill'] ) { return 'vc_tta-o-no-fill'; } return null; } /** * @param $atts * @param $content * * @return string|null */ public function getParamCAlign( $atts, $content ) { if ( isset( $atts['c_align'] ) && strlen( $atts['c_align'] ) > 0 ) { return 'vc_tta-controls-align-' . $atts['c_align']; } return null; } /** * Accordion doesn't have pagination * * @param $atts * @param $content * * @return null */ public function getParamPaginationTop( $atts, $content ) { return null; } /** * Accordion doesn't have pagination * * @param $atts * @param $content * * @return null */ public function getParamPaginationBottom( $atts, $content ) { return null; } /** * Get currently active section (from $atts) * * @param $atts * @param bool $strict_bounds If true, check for min/max bounds * * @return int nth position (one-based) of active section */ function getActiveSection( $atts, $strict_bounds = false ) { $active_section = intval( $atts['active_section'] ); if ( $strict_bounds ) { VcShortcodeAutoloader::getInstance()->includeClass( 'WPBakeryShortCode_VC_Tta_Section' ); if ( $active_section < 1 ) { $active_section = 1; } elseif ( $active_section > WPBakeryShortCode_VC_Tta_Section::$self_count ) { $active_section = WPBakeryShortCode_VC_Tta_Section::$self_count; } } return $active_section; } /** * @param $atts * @param $content * * @return string */ public function getParamPaginationList( $atts, $content ) { if ( empty( $atts['pagination_style'] ) ) { return null; } $isPageEditabe = vc_is_page_editable(); $sectionClass = $this->sectionClass; $html = array(); $html[] = '
      '; if ( ! $isPageEditabe ) { VcShortcodeAutoloader::getInstance()->includeClass( 'WPBakeryShortCode_VC_Tta_Section' ); foreach ( WPBakeryShortCode_VC_Tta_Section::$section_info as $nth => $section ) { $active_section = $this->getActiveSection( $atts, false ); $classes = array( 'vc_pagination-item' ); if ( ( $nth + 1 ) === $active_section ) { $classes[] = $this->activeClass; } $a_html = ''; $html[] = '
    • ' . $a_html . '
    • '; } } $html[] = '
    '; return implode( '', $html ); } public function enqueueTtaStyles() { wp_register_style( 'vc_tta_style', vc_asset_url( 'css/js_composer_tta.min.css' ), false, WPB_VC_VERSION ); wp_enqueue_style( 'vc_tta_style' ); } public function enqueueTtaScript() { wp_register_script( 'vc_accordion_script', vc_asset_url( 'lib/vc_accordion/vc-accordion.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true ); wp_register_script( 'vc_tta_autoplay_script', vc_asset_url( 'lib/vc-tta-autoplay/vc-tta-autoplay.min.js' ), array( 'vc_accordion_script' ), WPB_VC_VERSION, true ); wp_enqueue_script( 'vc_accordion_script' ); if ( ! vc_is_page_editable() ) { wp_enqueue_script( 'vc_tta_autoplay_script' ); } } /** * Override default outputTitle (also Icon). To remove anything, also Icon. * * @param $title - just for strict standards * * @return string */ protected function outputTitle( $title ) { return ''; } /** * Check is allowed to add another element inside current element. * * @since 4.8 * * @return bool */ public function getAddAllowed() { return vc_user_access_check_shortcode_all( 'vc_tta_section' ); } } PK<\:e>!,include/classes/shortcodes/vc-gitem-zone.phpnu[settings( 'icon' ); return '

    '; } } PK<\y**0include/classes/shortcodes/vc-custom-heading.phpnu[ 'google_fonts', 'font_container' => 'font_container', 'el_class' => 'el_class', 'css' => 'css', 'text' => 'text', ); /** * Used to get field name in vc_map function for google_fonts, font_container and etc.. * * @param $key * * @since 4.4 * @return bool */ protected function getField( $key ) { return isset( $this->fields[ $key ] ) ? $this->fields[ $key ] : false; } /** * Get param value by providing key * * @param $key * * @since 4.4 * @return array|bool */ protected function getParamData( $key ) { return WPBMap::getParam( $this->shortcode, $this->getField( $key ) ); } /** * Parses shortcode attributes and set defaults based on vc_map function relative to shortcode and fields names * * @param $atts * * @since 4.3 * @return array */ public function getAttributes( $atts ) { /** * Shortcode attributes * @var $text * @var $google_fonts * @var $font_container * @var $el_class * @var $link * @var $css */ $atts = vc_map_get_attributes( $this->getShortcode(), $atts ); extract( $atts ); /** * Get default values from VC_MAP. **/ $google_fonts_field = $this->getParamData( 'google_fonts' ); $font_container_field = $this->getParamData( 'font_container' ); $el_class = $this->getExtraClass( $el_class ); $font_container_obj = new Vc_Font_Container(); $google_fonts_obj = new Vc_Google_Fonts(); $font_container_field_settings = isset( $font_container_field['settings'], $font_container_field['settings']['fields'] ) ? $font_container_field['settings']['fields'] : array(); $google_fonts_field_settings = isset( $google_fonts_field['settings'], $google_fonts_field['settings']['fields'] ) ? $google_fonts_field['settings']['fields'] : array(); $font_container_data = $font_container_obj->_vc_font_container_parse_attributes( $font_container_field_settings, $font_container ); $google_fonts_data = strlen( $google_fonts ) > 0 ? $google_fonts_obj->_vc_google_fonts_parse_attributes( $google_fonts_field_settings, $google_fonts ) : ''; return array( 'text' => isset( $text ) ? $text : '', 'google_fonts' => $google_fonts, 'font_container' => $font_container, 'el_class' => $el_class, 'css' => isset( $css ) ? $css : '', 'link' => ( 0 === strpos( $link, '|' ) ) ? false : $link, 'font_container_data' => $font_container_data, 'google_fonts_data' => $google_fonts_data, ); } /** * Parses google_fonts_data and font_container_data to get needed css styles to markup * * @param $el_class * @param $css * @param $google_fonts_data * @param $font_container_data * @param $atts * * @since 4.3 * @return array */ public function getStyles( $el_class, $css, $google_fonts_data, $font_container_data, $atts ) { $styles = array(); if ( ! empty( $font_container_data ) && isset( $font_container_data['values'] ) ) { foreach ( $font_container_data['values'] as $key => $value ) { if ( 'tag' !== $key && strlen( $value ) ) { if ( preg_match( '/description/', $key ) ) { continue; } if ( 'font_size' === $key || 'line_height' === $key ) { $value = preg_replace( '/\s+/', '', $value ); } if ( 'font_size' === $key ) { $pattern = '/^(\d*(?:\.\d+)?)\s*(px|\%|in|cm|mm|em|rem|ex|pt|pc|vw|vh|vmin|vmax)?$/'; // allowed metrics: http://www.w3schools.com/cssref/css_units.asp $regexr = preg_match( $pattern, $value, $matches ); $value = isset( $matches[1] ) ? (float) $matches[1] : (float) $value; $unit = isset( $matches[2] ) ? $matches[2] : 'px'; $value = $value . $unit; } if ( strlen( $value ) > 0 ) { $styles[] = str_replace( '_', '-', $key ) . ': ' . $value; } } } } if ( ( ! isset( $atts['use_theme_fonts'] ) || 'yes' !== $atts['use_theme_fonts'] ) && ! empty( $google_fonts_data ) && isset( $google_fonts_data['values'], $google_fonts_data['values']['font_family'], $google_fonts_data['values']['font_style'] ) ) { $google_fonts_family = explode( ':', $google_fonts_data['values']['font_family'] ); $styles[] = 'font-family:' . $google_fonts_family[0]; $google_fonts_styles = explode( ':', $google_fonts_data['values']['font_style'] ); $styles[] = 'font-weight:' . $google_fonts_styles[1]; $styles[] = 'font-style:' . $google_fonts_styles[2]; } /** * Filter 'VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG' to change vc_custom_heading class * * @param string - filter_name * @param string - element_class * @param string - shortcode_name * @param array - shortcode_attributes * * @since 4.3 */ $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, 'vc_custom_heading ' . $el_class . vc_shortcode_custom_css_class( $css, ' ' ), $this->settings['base'], $atts ); return array( 'css_class' => trim( preg_replace( '/\s+/', ' ', $css_class ) ), 'styles' => $styles, ); } } PK<\AA.include/classes/shortcodes/vc-gitem-zone-b.phpnu[jsScripts(); } public function jsScripts() { wp_register_script( 'zoom', vc_asset_url( 'lib/bower/zoom/jquery.zoom.min.js' ), array(), WPB_VC_VERSION ); wp_register_script( 'vc_image_zoom', vc_asset_url( 'lib/vc_image_zoom/vc_image_zoom.min.js' ), array( 'jquery', 'zoom', ), WPB_VC_VERSION, true ); } public function singleParamHtmlHolder( $param, $value ) { $output = ''; // Compatibility fixes $old_names = array( 'yellow_message', 'blue_message', 'green_message', 'button_green', 'button_grey', 'button_yellow', 'button_blue', 'button_red', 'button_orange', ); $new_names = array( 'alert-block', 'alert-info', 'alert-success', 'btn-success', 'btn', 'btn-info', 'btn-primary', 'btn-danger', 'btn-warning', ); $value = str_ireplace( $old_names, $new_names, $value ); $param_name = isset( $param['param_name'] ) ? $param['param_name'] : ''; $type = isset( $param['type'] ) ? $param['type'] : ''; $class = isset( $param['class'] ) ? $param['class'] : ''; if ( 'attach_image' === $param['type'] && 'image' === $param_name ) { $output .= ''; $element_icon = $this->settings( 'icon' ); $img = wpb_getImageBySize( array( 'attach_id' => (int) preg_replace( '/[^\d]/', '', $value ), 'thumb_size' => 'thumbnail', ) ); $this->setSettings( 'logo', ( $img ? $img['thumbnail'] : '' ) . '' . __( 'Add image', 'js_composer' ) . '' ); $output .= $this->outputTitleTrue( $this->settings['name'] ); } elseif ( ! empty( $param['holder'] ) ) { if ( 'input' === $param['holder'] ) { $output .= '<' . $param['holder'] . ' readonly="true" class="wpb_vc_param_value ' . $param_name . ' ' . $type . ' ' . $class . '" name="' . $param_name . '" value="' . $value . '">'; } elseif ( in_array( $param['holder'], array( 'img', 'iframe' ) ) ) { $output .= '<' . $param['holder'] . ' class="wpb_vc_param_value ' . $param_name . ' ' . $type . ' ' . $class . '" name="' . $param_name . '" src="' . $value . '">'; } elseif ( 'hidden' !== $param['holder'] ) { $output .= '<' . $param['holder'] . ' class="wpb_vc_param_value ' . $param_name . ' ' . $type . ' ' . $class . '" name="' . $param_name . '">' . $value . ''; } } if ( ! empty( $param['admin_label'] ) && true === $param['admin_label'] ) { $output .= ': ' . $value . ''; } return $output; } public function getImageSquareSize( $img_id, $img_size ) { if ( preg_match_all( '/(\d+)x(\d+)/', $img_size, $sizes ) ) { $exact_size = array( 'width' => isset( $sizes[1][0] ) ? $sizes[1][0] : '0', 'height' => isset( $sizes[2][0] ) ? $sizes[2][0] : '0', ); } else { $image_downsize = image_downsize( $img_id, $img_size ); $exact_size = array( 'width' => $image_downsize[1], 'height' => $image_downsize[2], ); } $exact_size_int_w = (int) $exact_size['width']; $exact_size_int_h = (int) $exact_size['height']; if ( isset( $exact_size['width'] ) && $exact_size_int_w !== $exact_size_int_h ) { $img_size = $exact_size_int_w > $exact_size_int_h ? $exact_size['height'] . 'x' . $exact_size['height'] : $exact_size['width'] . 'x' . $exact_size['width']; } return $img_size; } protected function outputTitle( $title ) { return ''; } protected function outputTitleTrue( $title ) { return '

    ' . $title . ' ' . $this->settings( 'logo' ) . '

    '; } } PK<\Xv*include/classes/shortcodes/vc-carousel.phpnu[jsCssScripts(); } public function jsCssScripts() { wp_register_script( 'vc_transition_bootstrap_js', vc_asset_url( 'lib/vc_carousel/js/transition.min.js' ), array(), WPB_VC_VERSION, true ); wp_register_script( 'vc_carousel_js', vc_asset_url( 'lib/vc_carousel/js/vc_carousel.min.js' ), array( 'vc_transition_bootstrap_js' ), WPB_VC_VERSION, true ); wp_register_style( 'vc_carousel_css', vc_asset_url( 'lib/vc_carousel/css/vc_carousel.min.css' ), array(), WPB_VC_VERSION ); } public static function getCarouselIndex() { return self::$carousel_index ++ . '-' . time(); } } PK<\0include/classes/shortcodes/vc-widget-sidebar.phpnu[page; } /** * @return bool */ public function isEditorEnabled() { global $current_user; wp_get_current_user(); /** @var $settings - get use group access rules */ $settings = $this->get( 'groups_access_rules' ); $show = true; foreach ( $current_user->roles as $role ) { if ( isset( $settings[ $role ]['show'] ) && 'no' === $settings[ $role ]['show'] ) { $show = false; break; } } return $show; } /** * */ public function setTabs() { $this->tabs = array(); if ( $this->showConfigurationTabs() ) { $this->tabs['vc-general'] = __( 'General Settings', 'js_composer' ); if ( ! vc_is_as_theme() || apply_filters( 'vc_settings_page_show_design_tabs', false ) ) { $this->tabs['vc-color'] = __( 'Design Options', 'js_composer' ); $this->tabs['vc-custom_css'] = __( 'Custom CSS', 'js_composer' ); } } if ( ! vc_is_network_plugin() || ( vc_is_network_plugin() && is_network_admin() ) ) { if ( ! vc_is_updater_disabled() ) { $this->tabs['vc-updater'] = __( 'Product License', 'js_composer' ); } } // TODO: may allow to disable automapper if ( ! is_network_admin() && ! vc_automapper_is_disabled() ) { $this->tabs['vc-automapper'] = vc_automapper()->title(); } } public function getTabs() { if ( ! isset( $this->tabs ) ) { $this->setTabs(); } return apply_filters( 'vc_settings_tabs', $this->tabs ); } /** * @return bool */ public function showConfigurationTabs() { return ! vc_is_network_plugin() || ! is_network_admin(); } /** * Render * * @param $tab */ public function renderTab( $tab ) { require_once vc_path_dir( 'CORE_DIR', 'class-vc-page.php' ); wp_enqueue_style( 'wp-color-picker' ); wp_enqueue_script( 'wp-color-picker' ); if ( ( isset( $_GET['build_css'] ) && ( '1' === $_GET['build_css'] || 'true' === $_GET['build_css'] ) ) || ( isset( $_GET['settings-updated'] ) && ( '1' === $_GET['settings-updated'] || 'true' === $_GET['settings-updated'] ) ) ) { $this->buildCustomCss(); // TODO: remove this - no needs to re-save always } $tabs = $this->getTabs(); foreach ( $tabs as $key => $value ) { if ( ! vc_user_access()->part( 'settings' )->can( $key . '-tab' )->get() ) { unset( $tabs[ $key ] ); } } do_action( 'vc-settings-render-tab-' . $tab ); $page = new Vc_Page(); $page->setSlug( $tab )->setTitle( isset( $tabs[ $tab ] ) ? $tabs[ $tab ] : '' )->setTemplatePath( apply_filters( 'vc_settings-render-tab-' . $tab, 'pages/vc-settings/tab.php' ) ); vc_include_template( 'pages/vc-settings/index.php', array( 'pages' => $tabs, 'active_page' => $page, 'vc_settings' => $this, ) ); } /** * Init settings page && menu item * vc_filter: vc_settings_tabs - hook to override settings tabs */ public function initAdmin() { $this->setTabs(); self::$color_settings = array( array( 'vc_color' => array( 'title' => __( 'Main accent color', 'js_composer' ) ) ), array( 'vc_color_hover' => array( 'title' => __( 'Hover color', 'js_composer' ) ) ), array( 'vc_color_call_to_action_bg' => array( 'title' => __( 'Call to action background color', 'js_composer' ) ) ), array( 'vc_color_google_maps_bg' => array( 'title' => __( 'Google maps background color', 'js_composer' ) ) ), array( 'vc_color_post_slider_caption_bg' => array( 'title' => __( 'Post slider caption background color', 'js_composer' ) ) ), array( 'vc_color_progress_bar_bg' => array( 'title' => __( 'Progress bar background color', 'js_composer' ) ) ), array( 'vc_color_separator_border' => array( 'title' => __( 'Separator border color', 'js_composer' ) ) ), array( 'vc_color_tab_bg' => array( 'title' => __( 'Tabs navigation background color', 'js_composer' ) ) ), array( 'vc_color_tab_bg_active' => array( 'title' => __( 'Active tab background color', 'js_composer' ) ) ), ); self::$defaults = array( 'vc_color' => '#f7f7f7', 'vc_color_hover' => '#F0F0F0', 'margin' => '35px', 'gutter' => '15', 'responsive_max' => '768', 'compiled_js_composer_less' => '', ); if ( 'restore_color' === vc_post_param( 'vc_action' ) && vc_user_access() ->check( 'wp_verify_nonce', vc_post_param( '_wpnonce' ), vc_settings()->getOptionGroup() . '_color' . '-options' )// see settings_fields() function ->validateDie()->wpAny( 'manage_options' )->validateDie()->part( 'settings' )->can( 'vc-color-tab' )->validateDie()->get() ) { $this->restoreColor(); } /** * @since 4.5 used to call update file once option is changed */ add_action( 'update_option_wpb_js_compiled_js_composer_less', array( $this, 'buildCustomColorCss', ) ); /** * @since 4.5 used to call update file once option is changed */ add_action( 'update_option_wpb_js_custom_css', array( $this, 'buildCustomCss', ) ); /** * @since 4.5 used to call update file once option is changed */ add_action( 'add_option_wpb_js_compiled_js_composer_less', array( $this, 'buildCustomColorCss', ) ); /** * @since 4.5 used to call update file once option is changed */ add_action( 'add_option_wpb_js_custom_css', array( $this, 'buildCustomCss', ) ); /** * Tab: General Settings */ $tab = 'general'; $this->addSection( $tab ); $this->addField( $tab, __( 'Disable responsive content elements', 'js_composer' ), 'not_responsive_css', array( $this, 'sanitize_not_responsive_css_callback', ), array( $this, 'not_responsive_css_field_callback', ) ); $this->addField( $tab, __( 'Google fonts subsets', 'js_composer' ), 'google_fonts_subsets', array( $this, 'sanitize_google_fonts_subsets_callback', ), array( $this, 'google_fonts_subsets_callback', ) ); /** * Tab: Design Options */ $tab = 'color'; $this->addSection( $tab ); // Use custom checkbox $this->addField( $tab, __( 'Use custom design options', 'js_composer' ), 'use_custom', array( $this, 'sanitize_use_custom_callback', ), array( $this, 'use_custom_callback', ) ); foreach ( self::$color_settings as $color_set ) { foreach ( $color_set as $key => $data ) { $this->addField( $tab, $data['title'], $key, array( $this, 'sanitize_color_callback', ), array( $this, 'color_callback', ), array( 'id' => $key, ) ); } } // Margin $this->addField( $tab, __( 'Elements bottom margin', 'js_composer' ), 'margin', array( $this, 'sanitize_margin_callback', ), array( $this, 'margin_callback', ) ); // Gutter $this->addField( $tab, __( 'Grid gutter width', 'js_composer' ), 'gutter', array( $this, 'sanitize_gutter_callback', ), array( $this, 'gutter_callback', ) ); // Responsive max width $this->addField( $tab, __( 'Mobile screen width', 'js_composer' ), 'responsive_max', array( $this, 'sanitize_responsive_max_callback', ), array( $this, 'responsive_max_callback', ) ); $this->addField( $tab, false, 'compiled_js_composer_less', array( $this, 'sanitize_compiled_js_composer_less_callback', ), array( $this, 'compiled_js_composer_less_callback', ) ); /** * Tab: Custom CSS */ $tab = 'custom_css'; $this->addSection( $tab ); $this->addField( $tab, __( 'Paste your CSS code', 'js_composer' ), 'custom_css', array( $this, 'sanitize_custom_css_callback', ), array( $this, 'custom_css_field_callback', ) ); /** * Custom Tabs */ foreach ( $this->getTabs() as $tab => $title ) { do_action( 'vc_settings_tab-' . preg_replace( '/^vc\-/', '', $tab ), $this ); } /** * Tab: Updater */ $tab = 'updater'; $this->addSection( $tab ); } /** * Creates new section. * * @param $tab - tab key name as tab section * @param $title - Human title * @param $callback - function to build section header. */ public function addSection( $tab, $title = null, $callback = null ) { add_settings_section( $this->option_group . '_' . $tab, $title, ( null !== $callback ? $callback : array( $this, 'setting_section_callback_function', ) ), $this->page . '_' . $tab ); } /** * Create field in section. * * @param $tab * @param $title * @param $field_name * @param $sanitize_callback * @param $field_callback * @param array $args * * @return $this */ public function addField( $tab, $title, $field_name, $sanitize_callback, $field_callback, $args = array() ) { register_setting( $this->option_group . '_' . $tab, self::$field_prefix . $field_name, $sanitize_callback ); add_settings_field( self::$field_prefix . $field_name, $title, $field_callback, $this->page . '_' . $tab, $this->option_group . '_' . $tab, $args ); return $this; // chaining } /** * */ public function restoreColor() { foreach ( self::$color_settings as $color_sett ) { foreach ( $color_sett as $key => $value ) { delete_option( self::$field_prefix . $key ); } } delete_option( self::$field_prefix . 'margin' ); delete_option( self::$field_prefix . 'gutter' ); delete_option( self::$field_prefix . 'responsive_max' ); delete_option( self::$field_prefix . 'use_custom' ); delete_option( self::$field_prefix . 'compiled_js_composer_less' ); delete_option( self::$field_prefix . 'less_version' ); } /** * @param $option_name * * @param bool $defaultValue * * @return mixed|void */ public static function get( $option_name, $defaultValue = false ) { return get_option( self::$field_prefix . $option_name, $defaultValue ); } /** * @param $option_name * @param $value * * @return bool */ public static function set( $option_name, $value ) { return update_option( self::$field_prefix . $option_name, $value ); } /** * Set up the enqueue for the CSS & JavaScript files. * */ function adminLoad() { wp_register_script( 'wpb_js_composer_settings', vc_asset_url( 'js/dist/settings.min.js' ), array(), WPB_VC_VERSION, true ); wp_enqueue_style( 'js_composer_settings', vc_asset_url( 'css/js_composer_settings.min.css' ), false, WPB_VC_VERSION ); wp_enqueue_script( 'backbone' ); wp_enqueue_script( 'shortcode' ); wp_enqueue_script( 'underscore' ); wp_enqueue_script( 'jquery-ui-accordion' ); wp_enqueue_script( 'jquery-ui-sortable' ); wp_enqueue_script( 'wpb_js_composer_settings' ); $this->locale = array( 'are_you_sure_reset_css_classes' => __( 'Are you sure you want to reset to defaults?', 'js_composer' ), 'are_you_sure_reset_color' => __( 'Are you sure you want to reset to defaults?', 'js_composer' ), 'saving' => __( 'Saving...', 'js_composer' ), 'save' => __( 'Save Changes', 'js_composer' ), 'saved' => __( 'Design Options successfully saved.', 'js_composer' ), 'save_error' => __( 'Design Options could not be saved', 'js_composer' ), 'form_save_error' => __( 'Problem with AJAX request execution, check internet connection and try again.', 'js_composer' ), 'are_you_sure_delete' => __( 'Are you sure you want to delete this shortcode?', 'js_composer' ), 'are_you_sure_delete_param' => __( "Are you sure you want to delete the shortcode's param?", 'js_composer' ), 'my_shortcodes_category' => __( 'My shortcodes', 'js_composer' ), 'error_shortcode_name_is_required' => __( 'Shortcode name is required.', 'js_composer' ), 'error_enter_valid_shortcode_tag' => __( 'Please enter valid shortcode tag.', 'js_composer' ), 'error_enter_required_fields' => __( 'Please enter all required fields for params.', 'js_composer' ), 'new_shortcode_mapped' => __( 'New shortcode mapped from string!', 'js_composer' ), 'shortcode_updated' => __( 'Shortcode updated!', 'js_composer' ), 'error_content_param_not_manually' => __( 'Content param can not be added manually, please use checkbox.', 'js_composer' ), 'error_param_already_exists' => __( 'Param %s already exists. Param names must be unique.', 'js_composer' ), 'error_wrong_param_name' => __( 'Please use only letters, numbers and underscore for param name', 'js_composer' ), 'error_enter_valid_shortcode' => __( 'Please enter valid shortcode to parse!', 'js_composer' ), ); wp_localize_script( 'wpb_js_composer_settings', 'vcData', apply_filters( 'vc_global_js_data', array( 'version' => WPB_VC_VERSION, 'debug' => wpb_debug(), ) ) ); wp_localize_script( 'wpb_js_composer_settings', 'i18nLocaleSettings', $this->locale ); } /** * */ public function custom_css_field_callback() { $value = ( $value = get_option( self::$field_prefix . 'custom_css' ) ) ? $value : ''; echo ''; echo '
    ' . $value . '
    '; echo '

    ' . __( 'Add custom CSS code to the plugin without modifying files.', 'js_composer' ) . '

    '; } /** * Not responsive checkbox callback function */ public function not_responsive_css_field_callback() { $checked = ( $checked = get_option( self::$field_prefix . 'not_responsive_css' ) ) ? $checked : false; ?>

    googleFontsSubsets(); foreach ( $this->getGoogleFontsSubsets() as $pt ) { if ( ! in_array( $pt, $this->getGoogleFontsSubsetsExcluded() ) ) { $checked = ( in_array( $pt, $pt_array ) ) ? ' checked' : ''; ?>

    google_fonts_subsets_settings ) ) { $pt_array = vc_settings()->get( 'google_fonts_subsets' ); $this->google_fonts_subsets_settings = $pt_array ? $pt_array : $this->googleFontsSubsetsDefault(); } return $this->google_fonts_subsets_settings; } /** * @return array */ public function googleFontsSubsetsDefault() { return $this->google_fonts_subsets_default; } /** * @return array */ public function getGoogleFontsSubsets() { return $this->google_fonts_subsets; } /** * @param $subsets * * @return bool */ public function setGoogleFontsSubsets( $subsets ) { if ( is_array( $subsets ) ) { $this->google_fonts_subsets = $subsets; return true; } return false; } /** * @return array */ public function getGoogleFontsSubsetsExcluded() { return $this->google_fonts_subsets_excluded; } /** * @param $excluded * * @return bool */ public function setGoogleFontsSubsetsExcluded( $excluded ) { if ( is_array( $excluded ) ) { $this->google_fonts_subsets_excluded = $excluded; return true; } return false; } /** * Not responsive checkbox callback function * */ public function use_custom_callback() { $field = 'use_custom'; $checked = ( $checked = get_option( self::$field_prefix . $field ) ) ? $checked : false; ?>

    getDefault( $field ); echo ''; } /** * */ public function margin_callback() { $field = 'margin'; $value = ( $value = get_option( self::$field_prefix . $field ) ) ? $value : $this->getDefault( $field ); echo ''; echo '

    ' . __( 'Change default vertical spacing between content elements (Example: 20px).', 'js_composer' ) . '

    '; } /** * */ public function gutter_callback() { $field = 'gutter'; $value = ( $value = get_option( self::$field_prefix . $field ) ) ? $value : $this->getDefault( $field ); echo ' px'; echo '

    ' . __( 'Change default horizontal spacing between columns, enter new value in pixels.', 'js_composer' ) . '

    '; } /** * */ public function responsive_max_callback() { $field = 'responsive_max'; $value = ( $value = get_option( self::$field_prefix . $field ) ) ? $value : $this->getDefault( $field ); echo ' px'; echo '

    ' . __( 'By default content elements "stack" one on top other when screen size is smaller than 768px. Change the value to change "stacking" size.', 'js_composer' ) . '

    '; } /** * */ public function compiled_js_composer_less_callback() { $field = 'compiled_js_composer_less'; echo ''; // VALUE must be empty } /** * @param $key * * @return string */ public function getDefault( $key ) { return ! empty( self::$defaults[ $key ] ) ? self::$defaults[ $key ] : ''; } /** * Callback function for settings section * * @param $tab */ public function setting_section_callback_function( $tab ) { if ( 'wpb_js_composer_settings_color' === $tab['id'] ) : ?>

    getGoogleFontsSubsetsExcluded() ) && in_array( $pt, $this->getGoogleFontsSubsets() ) ) { $pt_array[] = $pt; } } } return $pt_array; } /** * @param $rules * * @return mixed */ public function sanitize_use_custom_callback( $rules ) { return (bool) $rules; } /** * @param $css * * @return mixed */ public function sanitize_custom_css_callback( $css ) { return strip_tags( $css ); } /** * @param $css * * @return mixed */ public function sanitize_compiled_js_composer_less_callback( $css ) { return $css; } /** * @param $color * * @return mixed */ public function sanitize_color_callback( $color ) { return $color; } /** * @param $margin * * @return mixed */ public function sanitize_margin_callback( $margin ) { $margin = preg_replace( '/\s/', '', $margin ); if ( ! preg_match( '/^\d+(px|%|em|pt){0,1}$/', $margin ) ) { add_settings_error( self::$field_prefix . 'margin', 1, __( 'Invalid Margin value.', 'js_composer' ), 'error' ); } return $margin; } /** * @param $gutter * * @return mixed */ public function sanitize_gutter_callback( $gutter ) { $gutter = preg_replace( '/[^\d]/', '', $gutter ); if ( ! $this->_isGutterValid( $gutter ) ) { add_settings_error( self::$field_prefix . 'gutter', 1, __( 'Invalid Gutter value.', 'js_composer' ), 'error' ); } return $gutter; } /** * @param $responsive_max * * @return mixed */ public function sanitize_responsive_max_callback( $responsive_max ) { if ( ! $this->_isNumberValid( $responsive_max ) ) { add_settings_error( self::$field_prefix . 'responsive_max', 1, __( 'Invalid "Responsive max" value.', 'js_composer' ), 'error' ); } return $responsive_max; } /** * @param $number * * @return int */ public static function _isNumberValid( $number ) { return preg_match( '/^[\d]+(\.\d+){0,1}$/', $number ); } /** * @param $gutter * * @return int */ public static function _isGutterValid( $gutter ) { return self::_isNumberValid( $gutter ); } public function useCustomCss() { $use_custom = get_option( self::$field_prefix . 'use_custom', false ); return $use_custom; } public function getCustomCssVersion() { $less_version = get_option( self::$field_prefix . 'less_version', false ); return $less_version; } /** * */ public function rebuild() { /** WordPress Template Administration API */ require_once( ABSPATH . 'wp-admin/includes/template.php' ); /** WordPress Administration File API */ require_once( ABSPATH . 'wp-admin/includes/file.php' ); delete_option( self::$field_prefix . 'compiled_js_composer_less' ); $this->initAdmin(); $this->buildCustomCss(); // TODO: remove this - no needs to re-save always } /** * */ public static function buildCustomColorCss() { /** * Filesystem API init. * */ $url = wp_nonce_url( 'admin.php?page=vc-color&build_css=1', 'wpb_js_settings_save_action' ); self::getFileSystem( $url ); global $wp_filesystem; /** * * Building css file. * */ if ( false === ( $js_composer_upload_dir = self::checkCreateUploadDir( $wp_filesystem, 'use_custom', 'js_composer_front_custom.css' ) ) ) { return; } $filename = $js_composer_upload_dir . '/js_composer_front_custom.css'; $use_custom = get_option( self::$field_prefix . 'use_custom' ); if ( ! $use_custom ) { $wp_filesystem->put_contents( $filename, '', FS_CHMOD_FILE ); return; } $css_string = get_option( self::$field_prefix . 'compiled_js_composer_less' ); if ( strlen( trim( $css_string ) ) > 0 ) { update_option( self::$field_prefix . 'less_version', WPB_VC_VERSION ); delete_option( self::$field_prefix . 'compiled_js_composer_less' ); $css_string = strip_tags( $css_string ); // HERE goes the magic if ( ! $wp_filesystem->put_contents( $filename, $css_string, FS_CHMOD_FILE ) ) { if ( is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) { add_settings_error( self::$field_prefix . 'main_color', $wp_filesystem->errors->get_error_code(), __( 'Something went wrong: js_composer_front_custom.css could not be created.', 'js_composer' ) . ' ' . $wp_filesystem->errors->get_error_message(), 'error' ); } elseif ( ! $wp_filesystem->connect() ) { add_settings_error( self::$field_prefix . 'main_color', $wp_filesystem->errors->get_error_code(), __( 'js_composer_front_custom.css could not be created. Connection error.', 'js_composer' ), 'error' ); } elseif ( ! $wp_filesystem->is_writable( $filename ) ) { add_settings_error( self::$field_prefix . 'main_color', $wp_filesystem->errors->get_error_code(), sprintf( __( 'js_composer_front_custom.css could not be created. Cannot write custom css to "%s".', 'js_composer' ), $filename ), 'error' ); } else { add_settings_error( self::$field_prefix . 'main_color', $wp_filesystem->errors->get_error_code(), __( 'js_composer_front_custom.css could not be created. Problem with access.', 'js_composer' ), 'error' ); } delete_option( self::$field_prefix . 'use_custom' ); delete_option( self::$field_prefix . 'less_version' ); } } } /** * Builds custom css file using css options from vc settings. * * @return bool */ public static function buildCustomCss() { /** * Filesystem API init. * */ $url = wp_nonce_url( 'admin.php?page=vc-color&build_css=1', 'wpb_js_settings_save_action' ); self::getFileSystem( $url ); global $wp_filesystem; /** * Building css file. */ if ( false === ( $js_composer_upload_dir = self::checkCreateUploadDir( $wp_filesystem, 'custom_css', 'custom.css' ) ) ) { return true; } $filename = $js_composer_upload_dir . '/custom.css'; $css_string = ''; $custom_css_string = get_option( self::$field_prefix . 'custom_css' ); if ( ! empty( $custom_css_string ) ) { $assets_url = vc_asset_url( '' ); $css_string .= preg_replace( '/(url\(\.\.\/(?!\.))/', 'url(' . $assets_url, $custom_css_string ); $css_string = strip_tags( $css_string ); } if ( ! $wp_filesystem->put_contents( $filename, $css_string, FS_CHMOD_FILE ) ) { if ( is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) { add_settings_error( self::$field_prefix . 'custom_css', $wp_filesystem->errors->get_error_code(), __( 'Something went wrong: custom.css could not be created.', 'js_composer' ) . $wp_filesystem->errors->get_error_message(), 'error' ); } elseif ( ! $wp_filesystem->connect() ) { add_settings_error( self::$field_prefix . 'custom_css', $wp_filesystem->errors->get_error_code(), __( 'custom.css could not be created. Connection error.', 'js_composer' ), 'error' ); } elseif ( ! $wp_filesystem->is_writable( $filename ) ) { add_settings_error( self::$field_prefix . 'custom_css', $wp_filesystem->errors->get_error_code(), __( 'custom.css could not be created. Cannot write custom css to "' . $filename . '".', 'js_composer' ), 'error' ); } else { add_settings_error( self::$field_prefix . 'custom_css', $wp_filesystem->errors->get_error_code(), __( 'custom.css could not be created. Problem with access.', 'js_composer' ), 'error' ); } return false; } return true; } /** * @param $wp_filesystem * @param $option * @param $filename * * @return bool|string */ public static function checkCreateUploadDir( $wp_filesystem, $option, $filename ) { $js_composer_upload_dir = self::uploadDir(); if ( ! $wp_filesystem->is_dir( $js_composer_upload_dir ) ) { if ( ! $wp_filesystem->mkdir( $js_composer_upload_dir, 0777 ) ) { add_settings_error( self::$field_prefix . $option, $wp_filesystem->errors->get_error_code(), __( sprintf( '%s could not be created. Not available to create js_composer directory in uploads directory (' . $js_composer_upload_dir . ').', $filename ), 'js_composer' ), 'error' ); return false; } } return $js_composer_upload_dir; } /** * @return string */ public static function uploadDir() { $upload_dir = wp_upload_dir(); global $wp_filesystem; return $wp_filesystem->find_folder( $upload_dir['basedir'] ) . vc_upload_dir(); } /** * @return string */ public static function uploadURL() { $upload_dir = wp_upload_dir(); return $upload_dir['baseurl'] . vc_upload_dir(); } /** * @return string */ public static function getFieldPrefix() { return self::$field_prefix; } /** * @param string $url */ protected static function getFileSystem( $url = '' ) { global $wp_filesystem; $status = true; if ( ! $wp_filesystem || ! is_object( $wp_filesystem ) ) { require_once( ABSPATH . '/wp-admin/includes/file.php' ); $status = WP_Filesystem( false, false, true ); } return $status ? $wp_filesystem : false; } /** * @return string */ public function getOptionGroup() { return $this->option_group; } } PK<\ +include/classes/settings/class-vc-roles.phpnu[parts ); } /** * Check required capability for this role to have user access. * * @param $part * * @return array */ public function getPartCapability( $part ) { return 'settings' !== $part ? array( 'edit_posts', 'edit_pages', ) : 'manage_options'; } public function hasRoleCapability( $role, $caps ) { $has = false; $wp_role = get_role( $role ); if ( is_string( $caps ) ) { $has = $wp_role->has_cap( $caps ); } elseif ( is_array( $caps ) ) { $i = 0; while ( false === $has && $i < count( $caps ) ) { $has = $this->hasRoleCapability( $role, $caps[ $i ++ ] ); } } return $has; } public function getWpRoles() { global $wp_roles; if ( function_exists( 'wp_roles' ) ) { return $wp_roles; } else { if ( ! isset( $wp_roles ) ) { $wp_roles = new WP_Roles(); } } return $wp_roles; } public function save( $params = array() ) { $data = array( 'message' => '' ); $roles = $this->getWpRoles(); $editable_roles = get_editable_roles(); foreach ( $params as $role => $parts ) { if ( is_string( $parts ) ) { $parts = json_decode( stripslashes( $parts ), true ); } if ( isset( $editable_roles[ $role ] ) ) { foreach ( $parts as $part => $settings ) { $part_key = vc_role_access() ->who( $role ) ->part( $part ) ->getStateKey(); $stateValue = '0'; $roles->use_db = false; // Disable saving in DB on every cap change foreach ( $settings as $key => $value ) { if ( '_state' === $key ) { $stateValue = in_array( $value, array( '0', '1', ) ) ? (boolean) $value : $value; } else { if ( empty( $value ) ) { $roles->remove_cap( $role, $part_key . '/' . $key ); } else { $roles->add_cap( $role, $part_key . '/' . $key, true ); } } } $roles->use_db = true; // Enable for the lat change in cap of role to store data in DB $roles->add_cap( $role, $part_key, $stateValue ); } } } $data['message'] = __( 'Roles settings successfully saved.', 'js_composer' ); return $data; } public function getPostTypes() { if ( false === $this->post_types ) { $this->post_types = array(); $exclude = $this->getExcludePostTypes(); foreach ( get_post_types( array( 'public' => true ) ) as $post_type ) { if ( ! in_array( $post_type, $exclude ) ) { $this->post_types[] = array( $post_type, $post_type ); } } } return $this->post_types; } public function getExcludePostTypes() { if ( false === $this->vc_excluded_post_types ) { $this->vc_excluded_post_types = apply_filters( 'vc_settings_exclude_post_type', array( 'attachment', 'revision', 'nav_menu_item', 'mediapage', ) ); } return $this->vc_excluded_post_types; } } PK<\ƔJ -C-C0include/classes/settings/class-vc-automapper.phpnu[loadOptionData(); $this->id = is_array( $d ) && isset( $d['id'] ) ? $d['id'] : $d; if ( is_array( $d ) ) { $this->data = stripslashes_deep( $d ); } foreach ( $this->vars as $var ) { $this->$var = $this->get( $var ); } } /** * @return array */ static function findAll() { self::loadOptionData(); $records = array(); foreach ( self::$option_data as $id => $record ) { $record['id'] = $id; $model = new self( $record ); if ( $model ) { $records[] = $model; } } return $records; } /** * @return array|mixed|void */ final protected static function loadOptionData() { if ( is_null( self::$option_data ) ) { self::$option_data = get_option( self::$option_name ); } if ( ! self::$option_data ) { self::$option_data = array(); } return self::$option_data; } /** * @param $key * * @return null */ function get( $key ) { if ( is_null( $this->data ) ) { $this->data = isset( self::$option_data[ $this->id ] ) ? self::$option_data[ $this->id ] : array(); } return isset( $this->data[ $key ] ) ? $this->data[ $key ] : null; } /** * @param $attr * @param null $value */ function set( $attr, $value = null ) { if ( is_array( $attr ) ) { foreach ( $attr as $key => $value ) { $this->set( $key, $value ); } } elseif ( ! is_null( $value ) ) { $this->$attr = $value; } } /** * @return bool */ function save() { if ( ! $this->isValid() ) { return false; } foreach ( $this->vars as $var ) { $this->data[ $var ] = $this->$var; } return $this->saveOption(); } /** * @return bool */ function delete() { return $this->deleteOption(); } /** * @return bool */ public function isValid() { if ( ! is_string( $this->name ) || empty( $this->name ) ) { return false; } if ( ! preg_match( '/^\S+$/', $this->tag ) ) { return false; } return true; } /** * @return bool */ protected function saveOption() { self::$option_data[ $this->id ] = $this->data; return update_option( self::$option_name, self::$option_data ); } /** * @return bool */ protected function deleteOption() { unset( self::$option_data[ $this->id ] ); return update_option( self::$option_name, self::$option_data ); } } } if ( ! class_exists( 'Vc_Automapper' ) ) { /** * Automated shortcode mapping * * Automapper adds settings tab for VC settings tabs with ability to map custom shortcodes to VC editors, * if shortcode is not mapped by default or developers haven't done this yet. * No more shortcode copy/paste. Add any third party shortcode to the list of VC menu elements for reuse. * Edit params, values and description. * * @since 4.1 */ class Vc_Automapper { /** * @var bool */ protected static $disabled = false; /** * */ public function __construct() { $this->title = __( 'Shortcode Mapper', 'js_composer' ); } /** * */ public function addAjaxActions() { add_action( 'wp_ajax_vc_automapper', array( $this, 'goAction', ) ); return $this; } /** * Builds html for Automapper CRUD like administration block * * @return bool */ public function renderHtml() { if ( $this->disabled() ) { return false; } ?>

    renderTemplates() ?> ' . '' . '' . '' . '' . ''; } /** * */ public function renderMapFormTpl() { ?> renderMapFormTpl(); } /** * Action methods(CRUD) */ public function goAction() { vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'manage_options' )->validateDie()->part( 'settings' )->can( 'vc-automapper-tab' )->validateDie(); $action = vc_post_param( 'vc_action' ); $this->result( $this->$action() ); } /** * @return bool */ public function create() { $data = vc_post_param( 'data' ); $shortcode = new Vc_Automap_Model( $data ); return $shortcode->save(); } /** * @return bool */ public function update() { $id = vc_post_param( 'id' ); $data = vc_post_param( 'data' ); $shortcode = new Vc_Automap_Model( $id ); if ( ! isset( $data['params'] ) ) { $data['params'] = array(); } $shortcode->set( $data ); return $shortcode->save(); } /** * @return bool */ public function delete() { $id = vc_post_param( 'id' ); $shortcode = new Vc_Automap_Model( $id ); return $shortcode->delete(); } /** * @return array */ public function read() { return Vc_Automap_Model::findAll(); } /** * Ajax result output * * @param $data */ function result( $data ) { echo is_array( $data ) || is_object( $data ) ? json_encode( $data ) : $data; die(); } /** * Setter/Getter for Disabling Automapper * @static * * @param bool $disable */ public static function setDisabled( $disable = true ) { self::$disabled = $disable; } /** * @return bool */ public static function disabled() { return self::$disabled; } /** * Setter/Getter for Automapper title * * @static * * @param string $title */ public function setTitle( $title ) { $this->title = $title; } /** * @return string|void */ public function title() { return $this->title; } /** * */ public static function map() { $shortcodes = Vc_Automap_Model::findAll(); foreach ( $shortcodes as $shortcode ) { vc_map( array( 'name' => $shortcode->name, 'base' => $shortcode->tag, 'category' => vc_atm_build_categories_array( $shortcode->category ), 'description' => $shortcode->description, 'params' => vc_atm_build_params_array( $shortcode->params ), 'show_settings_on_create' => ! empty( $shortcode->params ), 'atm' => true, 'icon' => 'icon-wpb-atm', ) ); } } } } // Helpers if ( ! function_exists( 'vc_atm_build_categories_array' ) ) { /** * @param $string * * @return array */ function vc_atm_build_categories_array( $string ) { return explode( ',', preg_replace( '/\,\s+/', ',', trim( $string ) ) ); } } if ( ! function_exists( 'vc_atm_build_params_array' ) ) { /** * @param $array * * @return array */ function vc_atm_build_params_array( $array ) { $params = array(); if ( is_array( $array ) ) { foreach ( $array as $param ) { if ( 'dropdown' === $param['type'] ) { $param['value'] = explode( ',', preg_replace( '/\,\s+/', ',', trim( $param['value'] ) ) ); } $param['save_always'] = true; $params[] = $param; } } return $params; } } PK<\&include/classes/settings/.settings.phpnu[PK<\;Oڝd4d4-include/classes/settings/class-vc-license.phpnu[finishActivationDeactivation( true, $_GET['activate'] ); } else if ( ! empty( $_GET['deactivate'] ) ) { $this->finishActivationDeactivation( false, $_GET['deactivate'] ); } } add_action( 'wp_ajax_vc_get_activation_url', array( $this, 'startActivationResponse', ) ); add_action( 'wp_ajax_vc_get_deactivation_url', array( $this, 'startDeactivationResponse', ) ); add_action( 'wp_ajax_nopriv_vc_check_license_key', array( vc_license(), 'checkLicenseKeyFromRemote', ) ); } /** * Output notice * * @param string $message * @param bool $success */ function outputNotice( $message, $success = true ) { echo '

    ' . esc_html( $message ) . '

    '; } /** * Show error * * @param string $error */ public function showError( $error ) { $this->error = $error; add_action( 'admin_notices', array( $this, 'outputLastError', ) ); } /** * Output last error */ function outputLastError() { $this->outputNotice( $this->error, false ); } /** * Output successful activation message */ function outputActivatedSuccess() { $this->outputNotice( __( 'WPBakery Page Builder successfully activated.', 'js_composer' ), true ); } /** * Output successful deactivation message */ function outputDeactivatedSuccess() { $this->outputNotice( __( 'WPBakery Page Builder successfully deactivated.', 'js_composer' ), true ); } /** * Finish pending activation/deactivation * * 1) Make API call to support portal * 2) Receive success status and license key * 3) Set new license key * * @param bool $activation * @param string $user_token * * @return bool */ function finishActivationDeactivation( $activation, $user_token ) { if ( ! $this->isValidToken( $user_token ) ) { $this->showError( __( 'Token is not valid or has expired', 'js_composer' ) ); return false; } if ( $activation ) { $url = self::$support_host . '/finish-license-activation'; } else { $url = self::$support_host . '/finish-license-deactivation'; } $params = array( 'body' => array( 'token' => $user_token ) ); $response = wp_remote_post( $url, $params ); if ( is_wp_error( $response ) ) { $this->showError( __( sprintf( '%s. Please try again.', $response->get_error_message() ), 'js_composer' ) ); return false; } if ( 200 !== $response['response']['code'] ) { $this->showError( __( sprintf( 'Server did not respond with OK: %s', $response['response']['code'] ), 'js_composer' ) ); return false; } $json = json_decode( $response['body'], true ); if ( ! $json || ! isset( $json['status'] ) ) { $this->showError( __( 'Invalid response structure. Please contact us for support.', 'js_composer' ) ); return false; } if ( ! $json['status'] ) { $this->showError( __( 'Something went wrong. Please contact us for support.', 'js_composer' ) ); return false; } if ( $activation ) { if ( ! isset( $json['license_key'] ) || ! $this->isValidFormat( $json['license_key'] ) ) { $this->showError( __( 'Invalid response structure. Please contact us for support.', 'js_composer' ) ); return false; } $this->setLicenseKey( $json['license_key'] ); add_action( 'admin_notices', array( $this, 'outputActivatedSuccess', ) ); } else { $this->setLicenseKey( '' ); add_action( 'admin_notices', array( $this, 'outputDeactivatedSuccess', ) ); } $this->setLicenseKeyToken( '' ); return true; } /** * @return boolean */ public function isActivated() { return (bool) $this->getLicenseKey(); } /** * Check license key from remote * * Function is used by support portal to check if VC w/ specific license is still installed */ public function checkLicenseKeyFromRemote() { $license_key = vc_request_param( 'license_key' ); if ( ! $this->isValid( $license_key ) ) { $response = array( 'status' => false, 'error' => __( 'Invalid license key', 'js_composer' ), ); } else { $response = array( 'status' => true ); } die( json_encode( $response ) ); } /** * Generate action URL * * @return string */ public function generateActivationUrl() { $token = sha1( $this->newLicenseKeyToken() ); $url = esc_url( self::getSiteUrl() ); $redirect = esc_url( vc_updater()->getUpdaterUrl() ); return sprintf( '%s/activate-license?token=%s&url=%s&redirect=%s', self::$support_host, $token, $url, $redirect ); } /** * Generate action URL * * @return string */ public function generateDeactivationUrl() { $license_key = $this->getLicenseKey(); $token = sha1( $this->newLicenseKeyToken() ); $url = esc_url( self::getSiteUrl() ); $redirect = esc_url( vc_updater()->getUpdaterUrl() ); return sprintf( '%s/deactivate-license?license_key=%s&token=%s&url=%s&redirect=%s', self::$support_host, $license_key, $token, $url, $redirect ); } /** * Start activation process and output redirect URL as JSON */ public function startActivationResponse() { vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'manage_options' )->validateDie()->part( 'settings' )->can( 'vc-updater-tab' )->validateDie(); $response = array( 'status' => true, 'url' => $this->generateActivationUrl(), ); die( json_encode( $response ) ); } /** * Start deactivation process and output redirect URL as JSON */ public function startDeactivationResponse() { vc_user_access()->checkAdminNonce()->validateDie( 'Failed nonce check' )->wpAny( 'manage_options' )->validateDie( 'Failed access check' )->part( 'settings' )->can( 'vc-updater-tab' ) ->validateDie( 'Failed access check #2' ); $response = array( 'status' => true, 'url' => $this->generateDeactivationUrl(), ); die( json_encode( $response ) ); } /** * Set license key * * @param string $license_key */ public function setLicenseKey( $license_key ) { if ( vc_is_network_plugin() ) { update_site_option( 'wpb_js_' . self::$license_key_option, $license_key ); } else { vc_settings()->set( self::$license_key_option, $license_key ); } } /** * Get license key * * @return string */ public function getLicenseKey() { if ( vc_is_network_plugin() ) { $value = get_site_option( 'wpb_js_' . self::$license_key_option ); } else { $value = vc_settings()->get( self::$license_key_option ); } return $value; } /** * Check if specified license key is valid * * @param string $license_key * * @return bool */ public function isValid( $license_key ) { return $license_key === $this->getLicenseKey(); } /** * Set up license activation notice if needed * * Don't show notice on dev environment */ public function setupReminder() { if ( self::isDevEnvironment() ) { return; } if ( ! $this->isActivated() && ( empty( $_COOKIE['vchideactivationmsg_vc11'] ) || version_compare( $_COOKIE['vchideactivationmsg_vc11'], WPB_VC_VERSION, '<' ) ) && ! ( vc_is_network_plugin() && is_network_admin() ) ) { add_action( 'admin_notices', array( $this, 'adminNoticeLicenseActivation', ) ); } } /** * Check if current enviroment is dev * * Environment is considered dev if host is: * - ip address * - tld is local, dev, wp, test, example, localhost or invalid * - no tld (localhost, custom hosts) * * @param string $host Hostname to check. If null, use HTTP_HOST * * @return boolean */ public static function isDevEnvironment( $host = null ) { if ( ! $host ) { $host = self::getSiteUrl(); } $chunks = explode( '.', $host ); if ( 1 === count( $chunks ) ) { return true; } if ( in_array( end( $chunks ), array( 'local', 'dev', 'wp', 'test', 'example', 'localhost', 'invalid', ) ) ) { return true; } if ( preg_match( '/^[0-9\.]+$/', $host ) ) { return true; } return false; } public function adminNoticeLicenseActivation() { if ( vc_is_network_plugin() ) { update_site_option( 'wpb_js_composer_license_activation_notified', 'yes' ); } else { vc_settings()->set( 'composer_license_activation_notified', 'yes' ); } $redirect = esc_url( vc_updater()->getUpdaterUrl() ); ?>

    ' . sprintf( __( 'Hola! Would you like to receive automatic updates and unlock premium support? Please activate your copy of WPBakery Page Builder.', 'js_composer' ), wp_nonce_url( $redirect ) ) . '

    ' . ''; } /** * Get license key token * * @return string */ public function getLicenseKeyToken() { $value = vc_is_network_plugin() ? get_site_option( self::$license_key_token_option ) : get_option( self::$license_key_token_option ); return $value; } /** * Set license key token * * @param string $token * * @return string */ public function setLicenseKeyToken( $token ) { if ( vc_is_network_plugin() ) { $value = update_site_option( self::$license_key_token_option, $token ); } else { $value = update_option( self::$license_key_token_option, $token ); } return $value; } /** * Return new license key token * * Token is used to change license key from remote location * * Format is: timestamp|20-random-characters * * @return string */ public function generateLicenseKeyToken() { $token = current_time( 'timestamp' ) . '|' . vc_random_string( 20 ); return $token; } /** * Generate and set new license key token * * @return string */ public function newLicenseKeyToken() { $token = $this->generateLicenseKeyToken(); $this->setLicenseKeyToken( $token ); return $token; } /** * Check if specified license key token is valid * * @param string $token_to_check SHA1 hashed token * @param int $ttl_in_seconds Time to live in seconds. Default = 20min * * @return boolean */ public function isValidToken( $token_to_check, $ttl_in_seconds = 1200 ) { $token = $this->getLicenseKeyToken(); if ( ! $token_to_check || sha1( $token ) !== $token_to_check ) { return false; } $chunks = explode( '|', $token ); if ( intval( $chunks[0] ) < ( current_time( 'timestamp' ) - $ttl_in_seconds ) ) { return false; } return true; } /** * Check if license key format is valid * * license key is version 4 UUID, that have form xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx * where x is any hexadecimal digit and y is one of 8, 9, A, or B. * * @param string $license_key * * @return boolean */ public function isValidFormat( $license_key ) { $pattern = '/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i'; return (bool) preg_match( $pattern, $license_key ); } public static function getSiteUrl() { if ( vc_is_network_plugin() ) { return network_site_url(); } else { return site_url(); } } } PK<\5GK4f4f&include/classes/core/class-vc-base.phpnu[postAdmin()->init(); } add_filter( 'body_class', array( $this, 'bodyClass', ) ); add_filter( 'the_excerpt', array( $this, 'excerptFilter', ) ); add_action( 'wp_head', array( $this, 'addMetaData', ) ); add_action( 'wp_head', array( $this, 'addIEMinimalSupport', ) ); if ( is_admin() ) { $this->initAdmin(); } else { $this->initPage(); } do_action( 'vc_after_init_base' ); } /** * Post object for interacting with Current post data. * @since 4.4 * @return Vc_Post_Admin */ public function postAdmin() { if ( false === $this->post_admin ) { require_once vc_path_dir( 'CORE_DIR', 'class-vc-post-admin.php' ); $this->post_admin = new Vc_Post_Admin(); } return $this->post_admin; } /** * Build VC for frontend pages. * * @since 4.2 * @access public */ public function initPage() { do_action( 'vc_build_page' ); add_action( 'template_redirect', array( $this, 'frontCss', ) ); add_action( 'template_redirect', array( 'WPBMap', 'addAllMappedShortcodes', ) ); add_action( 'wp_head', array( $this, 'addFrontCss', ), 1000 ); add_action( 'wp_head', array( $this, 'addNoScript', ), 1000 ); add_action( 'template_redirect', array( $this, 'frontJsRegister', ) ); add_filter( 'the_content', array( $this, 'fixPContent', ), 11 ); } /** * Load admin required modules and elements * * @since 4.2 * @access public */ public function initAdmin() { do_action( 'vc_build_admin_page' ); // Build settings for admin page; //$this->registerAdminJavascript(); //$this->registerAdminCss(); // editors actions: $this->editForm()->init(); $this->templatesPanelEditor()->init(); $this->shared_templates->init(); // ajax params/shortcode action add_action( 'wp_ajax_wpb_single_image_src', array( $this, 'singleImageSrc', ) ); // @todo move it add_action( 'wp_ajax_wpb_gallery_html', array( $this, 'galleryHTML', ) ); // @todo move it // plugins list page actions links add_filter( 'plugin_action_links', array( $this, 'pluginActionLinks', ), 10, 2 ); } /** * Setter for edit form. * @since 4.2 * * @param Vc_Shortcode_Edit_Form $form */ public function setEditForm( Vc_Shortcode_Edit_Form $form ) { $this->shortcode_edit_form = $form; } /** * Get Shortcodes Edit form object. * * @see Vc_Shortcode_Edit_Form::__construct * @since 4.2 * @access public * @return Vc_Shortcode_Edit_Form */ public function editForm() { return $this->shortcode_edit_form; } /** * Setter for Templates editor. * @since 4.4 * * @param Vc_Templates_Panel_Editor $editor */ public function setTemplatesPanelEditor( Vc_Templates_Panel_Editor $editor ) { $this->templates_panel_editor = $editor; } /** * Setter for Preset editor. * @since 5.2 * * @param Vc_Preset_Panel_Editor $editor */ public function setPresetPanelEditor( Vc_Preset_Panel_Editor $editor ) { $this->preset_panel_editor = $editor; } /** * Get templates manager. * @see Vc_Templates_Panel_Editor::__construct * @since 4.4 * @access public * @return bool|Vc_Templates_Panel_Editor */ public function templatesPanelEditor() { return $this->templates_panel_editor; } /** * Get preset manager. * @see Vc_Preset_Panel_Editor::__construct * @since 5.2 * @access public * @return bool|Vc_Preset_Panel_Editor */ public function presetPanelEditor() { return $this->preset_panel_editor; } /** * Get shortcode class instance. * * @see WPBakeryShortCodeFishBones * @since 4.2 * @access public * * @param string $tag * * @return Vc_Shortcodes_Manager|null */ public function getShortCode( $tag ) { return Vc_Shortcodes_Manager::getInstance()->setTag( $tag ); } /** * Remove shortcode from shortcodes list of VC. * * @since 4.2 * @access public * * @param $tag - shortcode tag */ public function removeShortCode( $tag ) { remove_shortcode( $tag ); } /** * @todo move it * @since 4.2 */ public function singleImageSrc() { // @todo again, this method should be moved (comment added on 4.8) vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'edit_posts', 'edit_pages' )->validateDie(); $image_id = (int) vc_post_param( 'content' ); $params = vc_post_param( 'params' ); $post_id = vc_post_param( 'post_id' ); $img_size = vc_post_param( 'size' ); $img = ''; if ( ! empty( $params['source'] ) ) { $source = $params['source']; } else { $source = 'media_library'; } switch ( $source ) { case 'media_library': case 'featured_image': if ( 'featured_image' === $source ) { if ( $post_id && has_post_thumbnail( $post_id ) ) { $img_id = get_post_thumbnail_id( $post_id ); } else { $img_id = 0; } } else { $img_id = preg_replace( '/[^\d]/', '', $image_id ); } if ( ! $img_size ) { $img_size = 'thumbnail'; } if ( $img_id ) { $img = wp_get_attachment_image_src( $img_id, $img_size ); if ( $img ) { $img = $img[0]; } } break; case 'external_link': if ( ! empty( $params['custom_src'] ) ) { $img = $params['custom_src']; } break; } die( $img ); } /** * @todo move it * @since 4.2 */ public function galleryHTML() { // @todo again, this method should be moved (comment added on 4.8) vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'edit_posts', 'edit_pages' )->validateDie(); $images = vc_post_param( 'content' ); if ( ! empty( $images ) ) { echo fieldAttachedImages( explode( ',', $images ) ); } die(); } /** * Set or modify new settings for shortcode. * * This function widely used by WPBMap class methods to modify shortcodes mapping * * @since 4.3 * * @param $tag * @param $name * @param $value */ public function updateShortcodeSetting( $tag, $name, $value ) { Vc_Shortcodes_Manager::getInstance()->getElementClass( $tag )->setSettings( $name, $value ); } /** * Build custom css styles for page from shortcodes attributes created by VC editors. * * Called by save method, which is hooked by edit_post action. * Function creates meta data for post with the key '_wpb_shortcodes_custom_css' * and value as css string, which will be added to the footer of the page. * * @since 4.2 * @access public * * @param $post_id */ public function buildShortcodesCustomCss( $post_id ) { $post = get_post( $post_id ); /** * vc_filter: vc_base_build_shortcodes_custom_css * @since 4.4 */ $css = apply_filters( 'vc_base_build_shortcodes_custom_css', $this->parseShortcodesCustomCss( $post->post_content ) ); if ( empty( $css ) ) { delete_post_meta( $post_id, '_wpb_shortcodes_custom_css' ); } else { update_post_meta( $post_id, '_wpb_shortcodes_custom_css', $css ); } } /** * Parse shortcodes custom css string. * * This function is used by self::buildShortcodesCustomCss and creates css string from shortcodes attributes * like 'css_editor'. * * @see WPBakeryVisualComposerCssEditor * @since 4.2 * @access public * * @param $content * * @return string */ public function parseShortcodesCustomCss( $content ) { $css = ''; if ( ! preg_match( '/\s*(\.[^\{]+)\s*\{\s*([^\}]+)\s*\}\s*/', $content ) ) { return $css; } WPBMap::addAllMappedShortcodes(); preg_match_all( '/' . get_shortcode_regex() . '/', $content, $shortcodes ); foreach ( $shortcodes[2] as $index => $tag ) { $shortcode = WPBMap::getShortCode( $tag ); $attr_array = shortcode_parse_atts( trim( $shortcodes[3][ $index ] ) ); if ( isset( $shortcode['params'] ) && ! empty( $shortcode['params'] ) ) { foreach ( $shortcode['params'] as $param ) { if ( isset( $param['type'] ) && 'css_editor' === $param['type'] && isset( $attr_array[ $param['param_name'] ] ) ) { $css .= $attr_array[ $param['param_name'] ]; } } } } foreach ( $shortcodes[5] as $shortcode_content ) { $css .= $this->parseShortcodesCustomCss( $shortcode_content ); } return $css; } /** * Hooked class method by wp_head WP action to output post custom css. * * Method gets post meta value for page by key '_wpb_post_custom_css' and if it is not empty * outputs css string wrapped into style tag. * * @since 4.2 * @access public * * @param int $id */ public function addPageCustomCss( $id = null ) { if ( ! is_singular() ) { return; } if ( ! $id ) { $id = get_the_ID(); } if ( $id ) { $post_custom_css = get_post_meta( $id, '_wpb_post_custom_css', true ); if ( ! empty( $post_custom_css ) ) { $post_custom_css = strip_tags( $post_custom_css ); echo ''; } } } /** * Hooked class method by wp_footer WP action to output shortcodes css editor settings from page meta data. * * Method gets post meta value for page by key '_wpb_shortcodes_custom_css' and if it is not empty * outputs css string wrapped into style tag. * * @since 4.2 * @access public * * @param int $id * */ public function addShortcodesCustomCss( $id = null ) { if ( ! is_singular() ) { return; } if ( ! $id ) { $id = get_the_ID(); } if ( $id ) { $shortcodes_custom_css = get_post_meta( $id, '_wpb_shortcodes_custom_css', true ); if ( ! empty( $shortcodes_custom_css ) ) { $shortcodes_custom_css = strip_tags( $shortcodes_custom_css ); echo ''; } } } /** * Add css styles for current page and elements design options added w\ editor. */ public function addFrontCss() { $this->addPageCustomCss(); $this->addShortcodesCustomCss(); } public function addNoScript() { echo ''; } /** * Register front css styles. * * Calls wp_register_style for required css libraries files. * * @since 3.1 * @access public */ public function frontCss() { wp_register_style( 'flexslider', vc_asset_url( 'lib/bower/flexslider/flexslider.min.css' ), array(), WPB_VC_VERSION ); wp_register_style( 'nivo-slider-css', vc_asset_url( 'lib/bower/nivoslider/nivo-slider.min.css' ), array(), WPB_VC_VERSION ); wp_register_style( 'nivo-slider-theme', vc_asset_url( 'lib/bower/nivoslider/themes/default/default.min.css' ), array( 'nivo-slider-css' ), WPB_VC_VERSION ); wp_register_style( 'prettyphoto', vc_asset_url( 'lib/prettyphoto/css/prettyPhoto.min.css' ), array(), WPB_VC_VERSION ); wp_register_style( 'isotope-css', vc_asset_url( 'css/lib/isotope.min.css' ), array(), WPB_VC_VERSION ); wp_register_style( 'font-awesome', vc_asset_url( 'lib/bower/font-awesome/css/font-awesome.min.css' ), array(), WPB_VC_VERSION ); wp_register_style( 'animate-css', vc_asset_url( 'lib/bower/animate-css/animate.min.css' ), array(), WPB_VC_VERSION ); $front_css_file = vc_asset_url( 'css/js_composer.min.css' ); $upload_dir = wp_upload_dir(); $vc_upload_dir = vc_upload_dir(); if ( '1' === vc_settings()->get( 'use_custom' ) && is_file( $upload_dir['basedir'] . '/' . $vc_upload_dir . '/js_composer_front_custom.css' ) ) { $front_css_file = $upload_dir['baseurl'] . '/' . $vc_upload_dir . '/js_composer_front_custom.css'; $front_css_file = vc_str_remove_protocol( $front_css_file ); } wp_register_style( 'js_composer_front', $front_css_file, array(), WPB_VC_VERSION ); $custom_css_path = $upload_dir['basedir'] . '/' . $vc_upload_dir . '/custom.css'; if ( is_file( $upload_dir['basedir'] . '/' . $vc_upload_dir . '/custom.css' ) && filesize( $custom_css_path ) > 0 ) { $custom_css_url = $upload_dir['baseurl'] . '/' . $vc_upload_dir . '/custom.css'; $custom_css_url = vc_str_remove_protocol( $custom_css_url ); wp_register_style( 'js_composer_custom_css', $custom_css_url, array(), WPB_VC_VERSION ); } add_action( 'wp_enqueue_scripts', array( $this, 'enqueueStyle', ) ); /** * @since 4.4 */ do_action( 'vc_base_register_front_css' ); } /** * Enqueue base css class for VC elements and enqueue custom css if exists. */ public function enqueueStyle() { $post = get_post(); if ( $post && preg_match( '/vc_row/', $post->post_content ) ) { wp_enqueue_style( 'js_composer_front' ); } wp_enqueue_style( 'js_composer_custom_css' ); } /** * Register front javascript libs. * * Calls wp_register_script for required css libraries files. * * @since 3.1 * @access public */ public function frontJsRegister() { wp_register_script( 'prettyphoto', vc_asset_url( 'lib/prettyphoto/js/jquery.prettyPhoto.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true ); wp_register_script( 'waypoints', vc_asset_url( 'lib/waypoints/waypoints.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true ); // @deprecated used in old tabs wp_register_script( 'jquery_ui_tabs_rotate', vc_asset_url( 'lib/bower/jquery-ui-tabs-rotate/jquery-ui-tabs-rotate.min.js' ), array( 'jquery', 'jquery-ui-tabs', ), WPB_VC_VERSION, true ); // used in vc_gallery, old grid wp_register_script( 'isotope', vc_asset_url( 'lib/bower/isotope/dist/isotope.pkgd.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true ); wp_register_script( 'twbs-pagination', vc_asset_url( 'lib/bower/twbs-pagination/jquery.twbsPagination.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true ); wp_register_script( 'nivo-slider', vc_asset_url( 'lib/bower/nivoslider/jquery.nivo.slider.pack.js' ), array( 'jquery' ), WPB_VC_VERSION, true ); wp_register_script( 'flexslider', vc_asset_url( 'lib/bower/flexslider/jquery.flexslider-min.js' ), array( 'jquery' ), WPB_VC_VERSION, true ); wp_register_script( 'wpb_composer_front_js', vc_asset_url( 'js/dist/js_composer_front.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true ); /** * @since 4.4 */ do_action( 'vc_base_register_front_js' ); } /** * Register admin javascript libs. * * Calls wp_register_script for required css libraries files for Admin dashboard. * * @since 3.1 * vc_filter: vc_i18n_locale_composer_js_view, since 4.4 - override localization for js * @access public */ public function registerAdminJavascript() { /** * @since 4.4 */ do_action( 'vc_base_register_admin_js' ); } /** * Register admin css styles. * * Calls wp_register_style for required css libraries files for admin dashboard. * * @since 3.1 * @access public */ public function registerAdminCss() { /** * @since 4.4 */ do_action( 'vc_base_register_admin_css' ); } /** * Add Settings link in plugin's page * @since 4.2 * * @param $links * @param $file * * @return array */ public function pluginActionLinks( $links, $file ) { if ( plugin_basename( vc_path_dir( 'APP_DIR', '/js_composer.php' ) ) == $file ) { $title = __( 'WPBakery Page Builder Settings', 'js_composer' ); $html = esc_html__( 'Settings', 'js_composer' ); if ( ! vc_user_access()->part( 'settings' )->can( 'vc-general-tab' )->get() ) { $title = __( 'About WPBakery Page Builder', 'js_composer' ); $html = esc_html__( 'About', 'js_composer' ); } $link = '' . $html . ''; array_unshift( $links, $link ); // Add to top } return $links; } /** * Get settings page link * @since 4.2 * @return string url to settings page */ public function getSettingsPageLink() { $page = 'vc-general'; if ( ! vc_user_access()->part( 'settings' )->can( 'vc-general-tab' )->get() ) { $page = 'vc-welcome'; } return add_query_arg( array( 'page' => $page ), admin_url( 'admin.php' ) ); } /** * Hooked class method by wp_head WP action. * @since 4.2 * @access public */ public function addMetaData() { echo '' . "\n"; } /** * Also add fix for IE8 bootstrap styles from WPExplorer * @since 4.9 * @access public */ public function addIEMinimalSupport() { echo ''; } /** * Method adds css class to body tag. * * Hooked class method by body_class WP filter. Method adds custom css class to body tag of the page to help * identify and build design specially for VC shortcodes. * * @since 4.2 * @access public * * @param $classes * * @return array */ public function bodyClass( $classes ) { return js_composer_body_class( $classes ); } /** * Builds excerpt for post from content. * * Hooked class method by the_excerpt WP filter. When user creates content with VC all content is always wrapped by * shortcodes. This methods calls do_shortcode for post's content and then creates a new excerpt. * * @since 4.2 * @access public * * @param $output * * @return string */ public function excerptFilter( $output ) { global $post; if ( empty( $output ) && ! empty( $post->post_content ) ) { $text = strip_tags( do_shortcode( $post->post_content ) ); $excerpt_length = apply_filters( 'excerpt_length', 55 ); $excerpt_more = apply_filters( 'excerpt_more', ' ' . '[...]' ); $text = wp_trim_words( $text, $excerpt_length, $excerpt_more ); return $text; } return $output; } /** * Remove unwanted wraping with p for content. * * Hooked by 'the_content' filter. * @since 4.2 * * @param null $content * * @return string|null */ public function fixPContent( $content = null ) { if ( $content ) { $s = array( '/' . preg_quote( '', '/' ) . '[\s\n\f]*' . preg_quote( '

    ', '/' ) . '/i', '/' . preg_quote( '

    ', '/' ) . '[\s\n\f]*' . preg_quote( '

    ', '/' ) . '[\s\n\f]*' . preg_quote( '
    ', '/' ) . '[\s\n\f]*' . preg_quote( '

    ', '/' ) . '/i', ); $r = array( '
    ', '
    ', ); $content = preg_replace( $s, $r, $content ); return $content; } return null; } /** * Get array of string for locale. * * @since 4.7 * * @return array */ public function getEditorsLocale() { return array( 'add_remove_picture' => __( 'Add/remove picture', 'js_composer' ), 'finish_adding_text' => __( 'Finish Adding Images', 'js_composer' ), 'add_image' => __( 'Add Image', 'js_composer' ), 'add_images' => __( 'Add Images', 'js_composer' ), 'settings' => __( 'Settings', 'js_composer' ), 'main_button_title' => __( 'WPBakery Page Builder', 'js_composer' ), 'main_button_title_backend_editor' => __( 'Backend Editor', 'js_composer' ), 'main_button_title_frontend_editor' => __( 'Frontend Editor', 'js_composer' ), 'main_button_title_revert' => __( 'Classic Mode', 'js_composer' ), 'please_enter_templates_name' => __( 'Enter template name you want to save.', 'js_composer' ), 'confirm_deleting_template' => __( 'Confirm deleting "{template_name}" template, press Cancel to leave. This action cannot be undone.', 'js_composer' ), 'press_ok_to_delete_section' => __( 'Press OK to delete section, Cancel to leave', 'js_composer' ), 'drag_drop_me_in_column' => __( 'Drag and drop me in the column', 'js_composer' ), 'press_ok_to_delete_tab' => __( 'Press OK to delete "{tab_name}" tab, Cancel to leave', 'js_composer' ), 'slide' => __( 'Slide', 'js_composer' ), 'tab' => __( 'Tab', 'js_composer' ), 'section' => __( 'Section', 'js_composer' ), 'please_enter_new_tab_title' => __( 'Please enter new tab title', 'js_composer' ), 'press_ok_delete_section' => __( 'Press OK to delete "{tab_name}" section, Cancel to leave', 'js_composer' ), 'section_default_title' => __( 'Section', 'js_composer' ), 'please_enter_section_title' => __( 'Please enter new section title', 'js_composer' ), 'error_please_try_again' => __( 'Error. Please try again.', 'js_composer' ), 'if_close_data_lost' => __( 'If you close this window all shortcode settings will be lost. Close this window?', 'js_composer' ), 'header_select_element_type' => __( 'Select element type', 'js_composer' ), 'header_media_gallery' => __( 'Media gallery', 'js_composer' ), 'header_element_settings' => __( 'Element settings', 'js_composer' ), 'add_tab' => __( 'Add tab', 'js_composer' ), 'are_you_sure_convert_to_new_version' => __( 'Are you sure you want to convert to new version?', 'js_composer' ), 'loading' => __( 'Loading...', 'js_composer' ), // Media editor 'set_image' => __( 'Set Image', 'js_composer' ), 'are_you_sure_reset_css_classes' => __( 'Are you sure that you want to remove all your data?', 'js_composer' ), 'loop_frame_title' => __( 'Loop settings', 'js_composer' ), 'enter_custom_layout' => __( 'Custom row layout', 'js_composer' ), 'wrong_cells_layout' => __( 'Wrong row layout format! Example: 1/2 + 1/2 or span6 + span6.', 'js_composer' ), 'row_background_color' => __( 'Row background color', 'js_composer' ), 'row_background_image' => __( 'Row background image', 'js_composer' ), 'column_background_color' => __( 'Column background color', 'js_composer' ), 'column_background_image' => __( 'Column background image', 'js_composer' ), 'guides_on' => __( 'Guides ON', 'js_composer' ), 'guides_off' => __( 'Guides OFF', 'js_composer' ), 'template_save' => __( 'New template successfully saved.', 'js_composer' ), 'template_added' => __( 'Template added to the page.', 'js_composer' ), 'template_added_with_id' => __( 'Template added to the page. Template has ID attributes, make sure that they are not used more than once on the same page.', 'js_composer' ), 'template_removed' => __( 'Template successfully removed.', 'js_composer' ), 'template_is_empty' => __( 'Template is empty: There is no content to be saved as a template.', 'js_composer' ), 'template_save_error' => __( 'Error while saving template.', 'js_composer' ), 'css_updated' => __( 'Page settings updated!', 'js_composer' ), 'update_all' => __( 'Update all', 'js_composer' ), 'confirm_to_leave' => __( 'The changes you made will be lost if you navigate away from this page.', 'js_composer' ), 'inline_element_saved' => __( '%s saved!', 'js_composer' ), 'inline_element_deleted' => __( '%s deleted!', 'js_composer' ), 'inline_element_cloned' => __( '%s cloned. Edit now?', 'js_composer' ), 'gfonts_loading_google_font_failed' => __( 'Loading Google Font failed', 'js_composer' ), 'gfonts_loading_google_font' => __( 'Loading Font...', 'js_composer' ), 'gfonts_unable_to_load_google_fonts' => __( 'Unable to load Google Fonts', 'js_composer' ), 'no_title_parenthesis' => sprintf( '(%s)', __( 'no title', 'js_composer' ) ), 'error_while_saving_image_filtered' => __( 'Error while applying filter to the image. Check your server and memory settings.', 'js_composer' ), 'ui_saved' => sprintf( ' %s', __( 'Saved!', 'js_composer' ) ), 'ui_danger' => sprintf( ' %s', __( 'Failed to Save!', 'js_composer' ) ), 'delete_preset_confirmation' => __( 'You are about to delete this preset. This action can not be undone.', 'js_composer' ), 'ui_template_downloaded' => __( 'Downloaded', 'js_composer' ), 'ui_template_update' => __( 'Update', 'js_composer' ), 'ui_templates_failed_to_download' => __( 'Failed to download template', 'js_composer' ), 'preset_removed' => __( 'Element successfully removed.', 'js_composer' ), ); } } PK<\ջM&include/classes/core/class-vc-page.phpnu[slug; } /** * @param mixed $slug * * @return $this; */ public function setSlug( $slug ) { $this->slug = (string) $slug; return $this; } /** * @return mixed */ public function getTitle() { return $this->title; } /** * @param string $title * * @return $this */ public function setTitle( $title ) { $this->title = (string) $title; return $this; } /** * @return mixed */ public function getTemplatePath() { return $this->templatePath; } /** * @param mixed $templatePath * * @return $this */ public function setTemplatePath( $templatePath ) { $this->templatePath = $templatePath; return $this; } public function render() { ob_start(); vc_include_template( $this->getTemplatePath(), array( 'page' => $this, ) ); echo apply_filters( 'vc_settings-page-render-' . $this->getSlug(), ob_get_clean(), $this ); } } PK<\include/classes/core/.core.phpnu[PK<\)d Cinclude/classes/core/shared-templates/class-vc-shared-templates.phpnu[initialized ) { return; } $this->initialized = true; add_filter( 'vc_templates_render_category', array( $this, 'renderTemplateBlock', ), 10 ); add_filter( 'vc_templates_render_frontend_template', array( $this, 'renderFrontendTemplate', ), 10, 2 ); add_filter( 'vc_templates_render_backend_template', array( $this, 'renderBackendTemplate', ), 10, 2 ); add_filter( 'vc_templates_render_backend_template_preview', array( $this, 'renderBackendTemplate', ), 10, 2 ); add_action( 'vc_templates_delete_templates', array( $this, 'delete', ), 10, 2 ); /* * add_action( 'wp_ajax_vc_frontend_load_template', array( $this, 'renderFrontendTemplate', ) ); */ add_filter( 'wp_ajax_vc_shared_templates_download', array( $this, 'ajaxDownloadTemplate', ) ); add_filter( 'vc_get_all_templates', array( $this, 'addTemplatesTab', ) ); $this->registerPostType(); } public function renderBackendTemplate( $templateId, $templateType ) { if ( 'shared_templates' === $templateType ) { $templates = get_posts( array( 'post_type' => 'vc4_templates', 'include' => intval( $templateId ), 'numberposts' => 1, ) ); if ( ! empty( $templates ) ) { $template = $templates[0]; return $template->post_content; } wp_send_json_error( array( 'code' => 'Wrong ID or no Template found', ) ); } return $templateId; } public function renderFrontendTemplate( $templateId, $templateType ) { if ( 'shared_templates' === $templateType ) { $templates = get_posts( array( 'post_type' => 'vc4_templates', 'include' => intval( $templateId ), 'numberposts' => 1, ) ); if ( ! empty( $templates ) ) { $template = $templates[0]; vc_frontend_editor()->setTemplateContent( $template->post_content ); vc_frontend_editor()->enqueueRequired(); vc_include_template( 'editors/frontend_template.tpl.php', array( 'editor' => vc_frontend_editor(), ) ); die(); } wp_send_json_error( array( 'code' => 'Wrong ID or no Template found #3', ) ); } return $templateId; } public function delete( $templateId, $templateType ) { if ( 'shared_templates' === $templateType ) { $templates = get_posts( array( 'post_type' => 'vc4_templates', 'include' => intval( $templateId ), 'numberposts' => 1, ) ); if ( ! empty( $templates ) ) { $template = $templates[0]; if ( wp_delete_post( $template->ID ) ) { wp_send_json_success(); } } wp_send_json_error( array( 'code' => 'Wrong ID or no Template found #2', ) ); } return $templateId; } /** * Post type from templates registration in wordpress */ private function registerPostType() { register_post_type( 'vc4_templates', array( 'label' => 'Vc Templates', 'public' => false, 'publicly_queryable' => false, 'exclude_from_search' => false, 'show_ui' => false, 'show_in_menu' => false, 'menu_position' => 10, 'menu_icon' => 'dashicons-admin-page', 'hierarchical' => false, 'taxonomies' => array(), 'has_archive' => false, 'rewrite' => false, 'query_var' => false, 'show_in_nav_menus' => false, ) ); } /** * Ajax request processing from templates panel */ public function ajaxDownloadTemplate() { /** @var Vc_Current_User_Access $access */ $access = vc_user_access()->checkAdminNonce()->validateDie( json_encode( array( 'success' => false, 'message' => 'access denied', ) ) )->part( 'templates' )->checkStateAny( true, null )->validateDie( json_encode( array( 'success' => false, 'message' => 'part access denied', ) ) )->check( array( vc_license(), 'isActivated', ) ); $access->validateDie( json_encode( array( 'success' => false, 'message' => 'license is not activated', ) ) ); $templateId = vc_request_param( 'id' ); $requestUrl = $this->getTemplateDownloadLink( $templateId ); $status = false; $file = $this->downloadTemplate( $requestUrl ); $data = array(); if ( $file ) { new Vc_WXR_Parser_Plugin(); $importer = new Vc_WP_Import(); ob_start(); $importer->import( $file ); if ( ! empty( $importer->processed_posts ) ) { $status = true; $postId = reset( $importer->processed_posts ); $data['post_id'] = $postId; } ob_end_clean(); } if ( $status ) { wp_send_json_success( $data ); } else { wp_send_json_error(); } } /** * @param $requestUrl * * @return bool|string */ private function downloadTemplate( $requestUrl ) { $downloadUrlRequest = wp_remote_get( $requestUrl ); if ( is_array( $downloadUrlRequest ) && 200 === $downloadUrlRequest['response']['code'] ) { return $this->parseRequest( $downloadUrlRequest ); } return false; } /** * @param $request * * @return bool|string */ private function parseRequest( $request ) { $body = json_decode( $request['body'], true ); if ( isset( $body['status'], $body['url'] ) && 1 === $body['status'] ) { $downloadUrl = $body['url']; $downloadedTemplateFile = download_url( $downloadUrl ); if ( is_wp_error( $downloadedTemplateFile ) || ! $downloadedTemplateFile ) { return false; } return $downloadedTemplateFile; } return false; } /** * @param $data * * @return array */ public function addTemplatesTab( $data ) { if ( vc_user_access()->part( 'templates' )->checkStateAny( true, null, 'add' )->get() ) { $templates = $this->getTemplates(); if ( ! empty( $templates ) || vc_user_access()->part( 'templates' )->checkStateAny( true, null )->get() ) { $newCategory = array( 'category' => 'shared_templates', 'category_name' => __( 'Template library', 'js_composer' ), 'category_weight' => 10, 'templates' => $this->getTemplates(), ); $data[] = $newCategory; } } return $data; } /** * @param $category * * @return mixed */ public function renderTemplateBlock( $category ) { if ( 'shared_templates' === $category['category'] ) { $category['output'] = $this->getTemplateBlockTemplate(); } return $category; } /** * @return string */ private function getTemplateBlockTemplate() { ob_start(); vc_include_template( 'editors/popups/shared-templates/category.tpl.php', array( 'controller' => $this, 'templates' => $this->getTemplates(), ) ); return ob_get_clean(); } public function getTemplates() { $posts = get_posts( 'post_type=vc4_templates&numberposts=-1' ); $templates = array(); if ( ! empty( $posts ) ) { foreach ( $posts as $post ) { /** @var WP_Post $post */ $id = get_post_meta( $post->ID, '_vc4_templates-id', true ); $template = array(); $template['title'] = $post->post_title; $template['version'] = get_post_meta( $post->ID, '_vc4_templates-version', true ); $template['id'] = $id; $template['post_id'] = $post->ID; $template['name'] = $post->post_title; // For Settings $template['type'] = 'shared_templates'; // For Settings $template['unique_id'] = $id; // For Settings $templates[] = $template; } } return $templates; } /** * Create url for request to download * It requires a license key, product and version * * @param $id * * @return string */ private function getTemplateDownloadLink( $id ) { $url = esc_url( vc_license()->getSiteUrl() ); $key = rawurlencode( vc_license()->getLicenseKey() ); $url = $this->download_link_url . '?product=vc&url=' . $url . '&key=' . $key . '&version=' . WPB_VC_VERSION . '&id=' . esc_attr( $id ); return $url; } } PK<\<include/classes/core/shared-templates/importer/.importer.phpnu[PK<\:k$9include/classes/core/shared-templates/importer/plugin.phpnu[ array( 'ids', ), 'vc_single_image' => array( 'image', ), 'vc_gallery' => array( 'images', ), 'vc_images_carousel' => array( 'images', ), 'vc_media_grid' => array( 'include', ), 'vc_masonry_media_grid' => array( 'include', ), ); protected $remaps = 0; public function __construct() { $this->shortcodes = apply_filters( 'vc_shared_templates_import_shortcodes', $this->shortcodes ); add_filter( 'vc_import_post_data_processed', array( $this, 'processPostContent', ) ); add_action( 'vc_import_pre_end', array( $this, 'remapIdsInPosts', ) ); } private $idsRemap = array(); /** * @param array $postdata * * @return array */ public function processPostContent( $postdata ) { if ( ! empty( $postdata['post_content'] ) && 'vc4_templates' === $postdata['post_type'] ) { $this->parseShortcodes( $postdata['post_content'] ); } return $postdata; } /** * @param Vc_WP_Import $importer */ public function remapIdsInPosts( $importer ) { $currentPost = reset( $importer->processed_posts ); // Nothing to remap or something wrong if ( ! $currentPost ) { return; } $post = get_post( $currentPost ); if ( empty( $post ) || ! is_object( $post ) || 'vc4_templates' !== $post->post_type ) { return; } // We ready to remap attributes in processed attachments $attachments = $importer->processed_attachments; $this->remaps = 0; $newContent = $this->processAttachments( $attachments, $post->post_content ); if ( $this->remaps ) { $post->post_content = $newContent; wp_update_post( $post ); } } protected function processAttachments( $attachments, $content ) { if ( ! empty( $this->idsRemap ) ) { foreach ( $this->idsRemap as $shortcode ) { $tag = $shortcode['tag']; $attributes = $this->shortcodes[ $tag ]; $rawQuery = $shortcode['attrs_query']; $newQuery = $this->shortcodeAttributes( $shortcode, $attributes, $rawQuery, $attachments ); if ( $newQuery ) { $content = str_replace( $rawQuery, $newQuery, $content ); $this->remaps ++; } } } $urlRegex = '#\bhttps?://[^\s()<>]+(?:\([\w\d]+\)|(?:[^[:punct:]\s]|/))#'; $urlMatches = array(); preg_match_all( $urlRegex, $content, $urlMatches ); if ( ! empty( $urlMatches[0] ) ) { foreach ( $urlMatches[0] as $url ) { $idsMatches = array(); preg_match_all( '/id\=(?P\d+)/', $url, $idsMatches ); if ( ! empty( $idsMatches['id'] ) ) { $this->remaps = true; $vals = array_map( 'intval', $idsMatches['id'] ); $content = $this->remapAttachmentUrls( $attachments, $content, $url, $vals ); } } } return $content; } protected function remapAttachmentUrls( $attachments, $content, $url, $vals ) { foreach ( $vals as $oldAttachmentId ) { if ( isset( $attachments[ $oldAttachmentId ] ) ) { $newUrl = wp_get_attachment_url( $attachments[ $oldAttachmentId ] ); $content = str_replace( $url, $newUrl . '?id=' . $attachments[ $oldAttachmentId ], $content ); } } return $content; } protected function shortcodeAttributes( $shortcode, $attributes, $newQuery, $attachments ) { $replacements = 0; foreach ( $attributes as $attribute ) { // for example in vc_single_image 'image' attribute if ( isset( $shortcode['attrs'][ $attribute ] ) ) { $attributeValue = $shortcode['attrs'][ $attribute ]; $attributeValues = explode( ',', $attributeValue ); $newValues = $attributeValues; array_walk( $newValues, array( $this, 'attributesWalker', ), array( 'attachments' => $attachments, ) ); $newAttributeValue = implode( ',', $newValues ); $newQuery = str_replace( sprintf( '%s="%s"', $attribute, $attributeValue ), sprintf( '%s="%s"', $attribute, $newAttributeValue ), $newQuery ); $replacements ++; } } if ( $replacements ) { return $newQuery; } return false; } public function attributesWalker( &$attributeValue, $key, $data ) { $intValue = intval( $attributeValue ); if ( array_key_exists( $intValue, $data['attachments'] ) ) { $attributeValue = $data['attachments'][ $intValue ]; } } private function parseShortcodes( $content ) { WPBMap::addAllMappedShortcodes(); preg_match_all( '/' . get_shortcode_regex() . '/', trim( $content ), $found ); if ( count( $found[2] ) === 0 ) { return $this->idsRemap; } foreach ( $found[2] as $index => $tag ) { $content = $found[5][ $index ]; $shortcode = array( 'tag' => $tag, 'attrs_query' => $found[3][ $index ], 'attrs' => shortcode_parse_atts( $found[3][ $index ] ), ); if ( array_key_exists( $tag, $this->shortcodes ) ) { $this->idsRemap[] = $shortcode; } $this->idsRemap = $this->parseShortcodes( $content ); } return $this->idsRemap; } } PK<\GuMMEinclude/classes/core/shared-templates/importer/wordpress-importer.phpnu[import_start( $file ); wp_suspend_cache_invalidation( true ); $this->process_posts(); wp_suspend_cache_invalidation( false ); // update incorrect/missing information in the DB $this->backfill_parents(); $this->backfill_attachment_urls(); $this->remap_featured_images(); do_action( 'vc_import_pre_end', $this ); $this->import_end(); } /** * Parses the WXR file and prepares us for the task of processing parsed data * * @param string $file Path to the WXR file for importing */ public function import_start( $file ) { if ( ! is_file( $file ) ) { echo '

    ' . __( 'Sorry, there has been an error.', 'wordpress-importer' ) . '
    '; echo __( 'The file does not exist, please try again.', 'wordpress-importer' ) . '

    '; die(); } $import_data = $this->parse( $file ); if ( is_wp_error( $import_data ) ) { echo '

    ' . __( 'Sorry, there has been an error.', 'wordpress-importer' ) . '
    '; /** @var \WP_Error $import_data */ echo esc_html( $import_data->get_error_message() ) . '

    '; die(); } $this->version = $import_data['version']; $this->posts = $import_data['posts']; $this->base_url = esc_url( $import_data['base_url'] ); wp_defer_term_counting( true ); wp_defer_comment_counting( true ); do_action( 'vc_import_start' ); } /** * Performs post-import cleanup of files and the cache */ public function import_end() { wp_import_cleanup( $this->id ); wp_cache_flush(); foreach ( get_taxonomies() as $tax ) { delete_option( "{$tax}_children" ); _get_term_hierarchy( $tax ); } wp_defer_term_counting( false ); wp_defer_comment_counting( false ); do_action( 'vc_import_end' ); return true; } /** * Handles the WXR upload and initial parsing of the file to prepare for * displaying author import options * * @return bool False if error uploading or invalid file, true otherwise */ public function handle_upload() { $file = wp_import_handle_upload(); if ( isset( $file['error'] ) ) { echo '

    ' . __( 'Sorry, there has been an error.', 'wordpress-importer' ) . '
    '; echo esc_html( $file['error'] ) . '

    '; return false; } else if ( ! file_exists( $file['file'] ) ) { echo '

    ' . __( 'Sorry, there has been an error.', 'wordpress-importer' ) . '
    '; printf( __( 'The export file could not be found at %s. It is likely that this was caused by a permissions problem.', 'wordpress-importer' ), esc_html( $file['file'] ) ); echo '

    '; return false; } $this->id = (int) $file['id']; $import_data = $this->parse( $file['file'] ); if ( is_wp_error( $import_data ) ) { echo '

    ' . __( 'Sorry, there has been an error.', 'wordpress-importer' ) . '
    '; /** @var \WP_Error $import_data */ echo esc_html( $import_data->get_error_message() ) . '

    '; return false; } $this->version = $import_data['version']; if ( $this->version > $this->max_wxr_version ) { echo '

    '; printf( __( 'This WXR file (version %s) may not be supported by this version of the importer. Please consider updating.', 'wordpress-importer' ), esc_html( $import_data['version'] ) ); echo '

    '; } return true; } /** * Create new posts based on import information * * Posts marked as having a parent which doesn't exist will become top level items. * Doesn't create a new post if: the post type doesn't exist, the given post ID * is already noted as imported or a post with the same title and date already exists. * Note that new/updated terms, comments and meta are imported for the last of the above. */ public function process_posts() { $status = array(); $this->posts = apply_filters( 'vc_import_posts', $this->posts ); if ( is_array( $this->posts ) && ! empty( $this->posts ) ) { foreach ( $this->posts as $post ) { $post = apply_filters( 'vc_import_post_data_raw', $post ); if ( ! post_type_exists( $post['post_type'] ) ) { $status[] = array( 'success' => false, 'code' => 'invalid_post_type', 'post' => $post, ); do_action( 'vc_import_post_exists', $post ); continue; } if ( isset( $this->processed_posts[ $post['post_id'] ] ) && ! empty( $post['post_id'] ) ) { continue; } if ( 'auto-draft' == $post['status'] ) { continue; } $post_parent = (int) $post['post_parent']; if ( $post_parent ) { // if we already know the parent, map it to the new local ID if ( isset( $this->processed_posts[ $post_parent ] ) ) { $post_parent = $this->processed_posts[ $post_parent ]; // otherwise record the parent for later } else { $this->post_orphans[ intval( $post['post_id'] ) ] = $post_parent; $post_parent = 0; } } // map the post author $author = (int) get_current_user_id(); $postdata = array( // 'import_id' => $post['post_id'], // VC: Make the ID always to be new! 'post_author' => $author, 'post_date' => $post['post_date'], 'post_date_gmt' => $post['post_date_gmt'], 'post_content' => $post['post_content'], 'post_excerpt' => $post['post_excerpt'], 'post_title' => $post['post_title'], 'post_status' => $post['status'], 'post_name' => $post['post_name'], 'comment_status' => $post['comment_status'], 'ping_status' => $post['ping_status'], 'guid' => $post['guid'], 'post_parent' => $post_parent, 'menu_order' => $post['menu_order'], 'post_type' => $post['post_type'], 'post_password' => $post['post_password'], ); $original_post_ID = $post['post_id']; $postdata = apply_filters( 'vc_import_post_data_processed', $postdata, $post, $this ); $postdata = wp_slash( $postdata ); if ( 'attachment' == $postdata['post_type'] ) { $remote_url = ! empty( $post['attachment_url'] ) ? $post['attachment_url'] : $post['guid']; // try to use _wp_attached file for upload folder placement to ensure the same location as the export site // e.g. location is 2003/05/image.jpg but the attachment post_date is 2010/09, see media_handle_upload() $postdata['upload_date'] = $post['post_date']; if ( isset( $post['postmeta'] ) ) { foreach ( $post['postmeta'] as $meta ) { if ( '_wp_attached_file' == $meta['key'] ) { if ( preg_match( '%^[0-9]{4}/[0-9]{2}%', $meta['value'], $matches ) ) { $postdata['upload_date'] = $matches[0]; } break; } } } $post_id = $this->process_attachment( $postdata, $remote_url, $original_post_ID ); } else { $post_id = wp_insert_post( $postdata, true ); do_action( 'vc_import_insert_post', $post_id, $original_post_ID, $postdata, $post ); // map pre-import ID to local ID $this->processed_posts[ intval( $post['post_id'] ) ] = (int) $post_id; } if ( is_wp_error( $post_id ) ) { $status[] = array( 'success' => false, 'code' => 'wp_error', 'post' => $post_id, ); continue; } if ( 1 == $post['is_sticky'] ) { stick_post( $post_id ); } if ( ! isset( $post['postmeta'] ) ) { $post['postmeta'] = array(); } $post['postmeta'] = apply_filters( 'vc_import_post_meta', $post['postmeta'], $post_id, $post ); // add/update post meta if ( ! empty( $post['postmeta'] ) ) { foreach ( $post['postmeta'] as $meta ) { $key = apply_filters( 'vc_import_post_meta_key', $meta['key'], $post_id, $post ); $value = false; if ( '_edit_last' == $key ) { $key = false; } if ( $key ) { // export gets meta straight from the DB so could have a serialized string if ( ! $value ) { $value = maybe_unserialize( $meta['value'] ); } add_post_meta( $post_id, $key, $value ); do_action( 'vc_import_post_meta', $post_id, $key, $value ); // if the post has a featured image, take note of this in case of remap if ( '_thumbnail_id' == $key ) { $this->featured_images[ $post_id ] = (int) $value; } } } } } } unset( $this->posts ); return $status; } /** * If fetching attachments is enabled then attempt to create a new attachment * * @param array $post Attachment post details from WXR * @param string $url URL to fetch attachment from * @param $original_post_ID * @return int|\WP_Error Post ID on success, WP_Error otherwise */ public function process_attachment( $post, $url, $original_post_ID ) { if ( ! $this->fetch_attachments ) { return new WP_Error( 'attachment_processing_error', __( 'Fetching attachments is not enabled', 'wordpress-importer' ) ); } // if the URL is absolute, but does not contain address, then upload it assuming base_site_url if ( preg_match( '|^/[\w\W]+$|', $url ) ) { $url = rtrim( $this->base_url, '/' ) . $url; } $upload = $this->fetch_remote_file( $url, $post ); if ( is_wp_error( $upload ) ) { return $upload; } if ( $info = wp_check_filetype( $upload['file'] ) ) { $post['post_mime_type'] = $info['type']; } else { return new WP_Error( 'attachment_processing_error', __( 'Invalid file type', 'wordpress-importer' ) ); } $post['guid'] = $upload['url']; // as per wp-admin/includes/upload.php $post_id = wp_insert_attachment( $post, $upload['file'] ); wp_update_attachment_metadata( $post_id, wp_generate_attachment_metadata( $post_id, $upload['file'] ) ); // remap resized image URLs, works by stripping the extension and remapping the URL stub. if ( preg_match( '!^image/!', $info['type'] ) ) { $parts = pathinfo( $url ); $name = basename( $parts['basename'], ".{$parts['extension']}" ); // PATHINFO_FILENAME in PHP 5.2 $parts_new = pathinfo( $upload['url'] ); $name_new = basename( $parts_new['basename'], ".{$parts_new['extension']}" ); $this->url_remap[ $parts['dirname'] . '/' . $name ] = $parts_new['dirname'] . '/' . $name_new; } $this->processed_attachments[ intval( $original_post_ID ) ] = (int) $post_id; return $post_id; } private function wp_get_http( $url, $file_path = false ) { @set_time_limit( 60 ); $options = array(); $options['redirection'] = 5; $options['method'] = 'GET'; $response = wp_safe_remote_request( $url, $options ); if ( is_wp_error( $response ) ) { return false; } $headers = wp_remote_retrieve_headers( $response ); $headers['response'] = wp_remote_retrieve_response_code( $response ); if ( false == $file_path ) { return $headers; } // GET request - write it to the supplied filename $out_fp = fopen( $file_path, 'w' ); if ( ! $out_fp ) { return $headers; } fwrite( $out_fp, wp_remote_retrieve_body( $response ) ); fclose( $out_fp ); clearstatcache(); return $headers; } /** * Attempt to download a remote file attachment * * @param string $url URL of item to fetch * @param array $post Attachment details * @return array|WP_Error Local file location details on success, WP_Error otherwise */ public function fetch_remote_file( $url, $post ) { // extract the file name and extension from the url $file_name = basename( $url ); // get placeholder file in the upload dir with a unique, sanitized filename $upload = wp_upload_bits( $file_name, 0, '', $post['upload_date'] ); if ( $upload['error'] ) { return new WP_Error( 'upload_dir_error', $upload['error'] ); } // fetch the remote url and write it to the placeholder file $headers = $this->wp_get_http( $url, $upload['file'] ); // request failed if ( ! $headers ) { @unlink( $upload['file'] ); return new WP_Error( 'import_file_error', __( 'Remote server did not respond', 'wordpress-importer' ) ); } // make sure the fetch was successful if ( '200' != $headers['response'] ) { @unlink( $upload['file'] ); return new WP_Error( 'import_file_error', sprintf( __( 'Remote server returned error response %1$d %2$s', 'wordpress-importer' ), esc_html( $headers['response'] ), get_status_header_desc( $headers['response'] ) ) ); } $filesize = filesize( $upload['file'] ); if ( isset( $headers['content-length'] ) && $filesize != $headers['content-length'] ) { @unlink( $upload['file'] ); return new WP_Error( 'import_file_error', __( 'Remote file is incorrect size', 'wordpress-importer' ) ); } if ( 0 == $filesize ) { @unlink( $upload['file'] ); return new WP_Error( 'import_file_error', __( 'Zero size file downloaded', 'wordpress-importer' ) ); } $max_size = (int) $this->max_attachment_size(); if ( ! empty( $max_size ) && $filesize > $max_size ) { @unlink( $upload['file'] ); return new WP_Error( 'import_file_error', sprintf( __( 'Remote file is too large, limit is %s', 'wordpress-importer' ), size_format( $max_size ) ) ); } // keep track of the old and new urls so we can substitute them later $this->url_remap[ $url ] = $upload['url']; $this->url_remap[ $post['guid'] ] = $upload['url']; // r13735, really needed? // keep track of the destination if the remote url is redirected somewhere else if ( isset( $headers['x-final-location'] ) && $headers['x-final-location'] != $url ) { $this->url_remap[ $headers['x-final-location'] ] = $upload['url']; } return $upload; } /** * Attempt to associate posts and menu items with previously missing parents * * An imported post's parent may not have been imported when it was first created * so try again. Similarly for child menu items and menu items which were missing * the object (e.g. post) they represent in the menu */ public function backfill_parents() { global $wpdb; // find parents for post orphans foreach ( $this->post_orphans as $child_id => $parent_id ) { $local_child_id = $local_parent_id = false; if ( isset( $this->processed_posts[ $child_id ] ) ) { $local_child_id = $this->processed_posts[ $child_id ]; } if ( isset( $this->processed_posts[ $parent_id ] ) ) { $local_parent_id = $this->processed_posts[ $parent_id ]; } if ( $local_child_id && $local_parent_id ) { $wpdb->update( $wpdb->posts, array( 'post_parent' => $local_parent_id ), array( 'ID' => $local_child_id ), '%d', '%d' ); } } } /** * Use stored mapping information to update old attachment URLs */ public function backfill_attachment_urls() { global $wpdb; // make sure we do the longest urls first, in case one is a substring of another uksort( $this->url_remap, array( $this, 'cmpr_strlen', ) ); foreach ( $this->url_remap as $from_url => $to_url ) { // remap urls in post_content $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->posts} SET post_content = REPLACE(post_content, %s, %s)", $from_url, $to_url ) ); // remap enclosure urls $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->postmeta} SET meta_value = REPLACE(meta_value, %s, %s) WHERE meta_key='enclosure'", $from_url, $to_url ) ); } } /** * Update _thumbnail_id meta to new, imported attachment IDs */ public function remap_featured_images() { // cycle through posts that have a featured image foreach ( $this->featured_images as $post_id => $value ) { if ( isset( $this->processed_posts[ $value ] ) ) { $new_id = $this->processed_posts[ $value ]; // only update if there's a difference if ( $new_id != $value ) { update_post_meta( $post_id, '_thumbnail_id', $new_id ); } } } } /** * Parse a WXR file * * @param string $file Path to WXR file for parsing * @return array Information gathered from the WXR file */ public function parse( $file ) { $parser = new Vc_WXR_Parser(); return $parser->parse( $file ); } /** * Decide if the given meta key maps to information we will want to import * * @param string $key The meta key to check * @return string|bool The key if we do want to import, false if not */ public function is_valid_meta_key( $key ) { // skip attachment metadata since we'll regenerate it from scratch // skip _edit_lock as not relevant for import if ( in_array( $key, array( '_wp_attached_file', '_wp_attachment_metadata', '_edit_lock', ) ) ) { return false; } return $key; } /** * Decide whether or not the importer is allowed to create users. * Default is true, can be filtered via import_allow_create_users * * @return bool True if creating users is allowed */ public function allow_create_users() { return false; } /** * Decide whether or not the importer should attempt to download attachment files. * Default is true, can be filtered via import_allow_fetch_attachments. The choice * made at the import options screen must also be true, false here hides that checkbox. * * @return bool True if downloading attachments is allowed */ public function allow_fetch_attachments() { return apply_filters( 'vc_import_allow_fetch_attachments', true ); } /** * Decide what the maximum file size for downloaded attachments is. * Default is 0 (unlimited), can be filtered via import_attachment_size_limit * * @return int Maximum attachment file size to import */ public function max_attachment_size() { return apply_filters( 'vc_import_attachment_size_limit', 0 ); } // return the difference in length between two strings public function cmpr_strlen( $a, $b ) { return strlen( $b ) - strlen( $a ); } } } // class_exists( 'WP_Importer' ) PK<\2bb:include/classes/core/shared-templates/importer/parsers.phpnu[parse( $file ); // If SimpleXML succeeds or this is an invalid WXR file then return the results if ( ! is_wp_error( $result ) || 'SimpleXML_parse_error' != $result->get_error_code() ) { return $result; } } else if ( extension_loaded( 'xml' ) ) { $parser = new Vc_WXR_Parser_XML; $result = $parser->parse( $file ); // If XMLParser succeeds or this is an invalid WXR file then return the results if ( ! is_wp_error( $result ) || 'XML_parse_error' != $result->get_error_code() ) { return $result; } } // We have a malformed XML file, so display the error and fallthrough to regex if ( isset( $result ) && defined( 'IMPORT_DEBUG' ) && IMPORT_DEBUG ) { echo '
    ';
    			if ( 'SimpleXML_parse_error' == $result->get_error_code() ) {
    				foreach ( $result->get_error_data() as $error ) {
    					echo $error->line . ':' . $error->column . ' ' . esc_html( $error->message ) . "\n";
    				}
    			} else if ( 'XML_parse_error' == $result->get_error_code() ) {
    				$error = $result->get_error_data();
    				echo $error[0] . ':' . $error[1] . ' ' . esc_html( $error[2] );
    			}
    			echo '
    '; echo '

    ' . __( 'There was an error when reading this WXR file', 'wordpress-importer' ) . '
    '; echo __( 'Details are shown above. The importer will now try again with a different parser...', 'wordpress-importer' ) . '

    '; } // use regular expressions if nothing else available or this is bad XML $parser = new Vc_WXR_Parser_Regex; return $parser->parse( $file ); } } /** * WXR Parser that makes use of the SimpleXML PHP extension. */ class Vc_WXR_Parser_SimpleXML { function parse( $file ) { $authors = $posts = $categories = $tags = $terms = array(); $internal_errors = libxml_use_internal_errors( true ); $dom = new DOMDocument; $old_value = null; if ( function_exists( 'libxml_disable_entity_loader' ) ) { $old_value = libxml_disable_entity_loader( true ); } $success = $dom->loadXML( file_get_contents( $file ) ); if ( ! is_null( $old_value ) ) { libxml_disable_entity_loader( $old_value ); } if ( ! $success || isset( $dom->doctype ) ) { return new WP_Error( 'SimpleXML_parse_error', __( 'There was an error when reading this WXR file', 'wordpress-importer' ), libxml_get_errors() ); } $xml = simplexml_import_dom( $dom ); unset( $dom ); // halt if loading produces an error if ( ! $xml ) { return new WP_Error( 'SimpleXML_parse_error', __( 'There was an error when reading this WXR file', 'wordpress-importer' ), libxml_get_errors() ); } $wxr_version = $xml->xpath( '/rss/channel/wp:wxr_version' ); if ( ! $wxr_version ) { return new WP_Error( 'WXR_parse_error', __( 'This does not appear to be a WXR file, missing/invalid WXR version number', 'wordpress-importer' ) ); } $wxr_version = (string) trim( $wxr_version[0] ); // confirm that we are dealing with the correct file format if ( ! preg_match( '/^\d+\.\d+$/', $wxr_version ) ) { return new WP_Error( 'WXR_parse_error', __( 'This does not appear to be a WXR file, missing/invalid WXR version number', 'wordpress-importer' ) ); } $base_url = $xml->xpath( '/rss/channel/wp:base_site_url' ); $base_url = (string) trim( $base_url[0] ); $namespaces = $xml->getDocNamespaces(); if ( ! isset( $namespaces['wp'] ) ) { $namespaces['wp'] = 'http://wordpress.org/export/1.1/'; } if ( ! isset( $namespaces['excerpt'] ) ) { $namespaces['excerpt'] = 'http://wordpress.org/export/1.1/excerpt/'; } // grab authors foreach ( $xml->xpath( '/rss/channel/wp:author' ) as $author_arr ) { $a = $author_arr->children( $namespaces['wp'] ); $login = (string) $a->author_login; $authors[ $login ] = array( 'author_id' => (int) $a->author_id, 'author_login' => $login, 'author_email' => (string) $a->author_email, 'author_display_name' => (string) $a->author_display_name, 'author_first_name' => (string) $a->author_first_name, 'author_last_name' => (string) $a->author_last_name, ); } // grab cats, tags and terms foreach ( $xml->xpath( '/rss/channel/wp:category' ) as $term_arr ) { $t = $term_arr->children( $namespaces['wp'] ); $category = array( 'term_id' => (int) $t->term_id, 'category_nicename' => (string) $t->category_nicename, 'category_parent' => (string) $t->category_parent, 'cat_name' => (string) $t->cat_name, 'category_description' => (string) $t->category_description, ); foreach ( $t->termmeta as $meta ) { $category['termmeta'][] = array( 'key' => (string) $meta->meta_key, 'value' => (string) $meta->meta_value, ); } $categories[] = $category; } foreach ( $xml->xpath( '/rss/channel/wp:tag' ) as $term_arr ) { $t = $term_arr->children( $namespaces['wp'] ); $tag = array( 'term_id' => (int) $t->term_id, 'tag_slug' => (string) $t->tag_slug, 'tag_name' => (string) $t->tag_name, 'tag_description' => (string) $t->tag_description, ); foreach ( $t->termmeta as $meta ) { $tag['termmeta'][] = array( 'key' => (string) $meta->meta_key, 'value' => (string) $meta->meta_value, ); } $tags[] = $tag; } foreach ( $xml->xpath( '/rss/channel/wp:term' ) as $term_arr ) { $t = $term_arr->children( $namespaces['wp'] ); $term = array( 'term_id' => (int) $t->term_id, 'term_taxonomy' => (string) $t->term_taxonomy, 'slug' => (string) $t->term_slug, 'term_parent' => (string) $t->term_parent, 'term_name' => (string) $t->term_name, 'term_description' => (string) $t->term_description, ); foreach ( $t->termmeta as $meta ) { $term['termmeta'][] = array( 'key' => (string) $meta->meta_key, 'value' => (string) $meta->meta_value, ); } $terms[] = $term; } // grab posts foreach ( $xml->channel->item as $item ) { $post = array( 'post_title' => (string) $item->title, 'guid' => (string) $item->guid, ); $dc = $item->children( 'http://purl.org/dc/elements/1.1/' ); $post['post_author'] = (string) $dc->creator; $content = $item->children( 'http://purl.org/rss/1.0/modules/content/' ); $excerpt = $item->children( $namespaces['excerpt'] ); $post['post_content'] = (string) $content->encoded; $post['post_excerpt'] = (string) $excerpt->encoded; $wp = $item->children( $namespaces['wp'] ); $post['post_id'] = (int) $wp->post_id; $post['post_date'] = (string) $wp->post_date; $post['post_date_gmt'] = (string) $wp->post_date_gmt; $post['comment_status'] = (string) $wp->comment_status; $post['ping_status'] = (string) $wp->ping_status; $post['post_name'] = (string) $wp->post_name; $post['status'] = (string) $wp->status; $post['post_parent'] = (int) $wp->post_parent; $post['menu_order'] = (int) $wp->menu_order; $post['post_type'] = (string) $wp->post_type; $post['post_password'] = (string) $wp->post_password; $post['is_sticky'] = (int) $wp->is_sticky; if ( isset( $wp->attachment_url ) ) { $post['attachment_url'] = (string) $wp->attachment_url; } foreach ( $item->category as $c ) { $att = $c->attributes(); if ( isset( $att['nicename'] ) ) { $post['terms'][] = array( 'name' => (string) $c, 'slug' => (string) $att['nicename'], 'domain' => (string) $att['domain'], ); } } foreach ( $wp->postmeta as $meta ) { $post['postmeta'][] = array( 'key' => (string) $meta->meta_key, 'value' => (string) $meta->meta_value, ); } foreach ( $wp->comment as $comment ) { $meta = array(); if ( isset( $comment->commentmeta ) ) { foreach ( $comment->commentmeta as $m ) { $meta[] = array( 'key' => (string) $m->meta_key, 'value' => (string) $m->meta_value, ); } } $post['comments'][] = array( 'comment_id' => (int) $comment->comment_id, 'comment_author' => (string) $comment->comment_author, 'comment_author_email' => (string) $comment->comment_author_email, 'comment_author_IP' => (string) $comment->comment_author_IP, 'comment_author_url' => (string) $comment->comment_author_url, 'comment_date' => (string) $comment->comment_date, 'comment_date_gmt' => (string) $comment->comment_date_gmt, 'comment_content' => (string) $comment->comment_content, 'comment_approved' => (string) $comment->comment_approved, 'comment_type' => (string) $comment->comment_type, 'comment_parent' => (string) $comment->comment_parent, 'comment_user_id' => (int) $comment->comment_user_id, 'commentmeta' => $meta, ); } $posts[] = $post; } return array( 'authors' => $authors, 'posts' => $posts, 'categories' => $categories, 'tags' => $tags, 'terms' => $terms, 'base_url' => $base_url, 'version' => $wxr_version, ); } } /** * WXR Parser that makes use of the XML Parser PHP extension. */ class Vc_WXR_Parser_XML { var $wp_tags = array( 'wp:post_id', 'wp:post_date', 'wp:post_date_gmt', 'wp:comment_status', 'wp:ping_status', 'wp:attachment_url', 'wp:status', 'wp:post_name', 'wp:post_parent', 'wp:menu_order', 'wp:post_type', 'wp:post_password', 'wp:is_sticky', 'wp:term_id', 'wp:category_nicename', 'wp:category_parent', 'wp:cat_name', 'wp:category_description', 'wp:tag_slug', 'wp:tag_name', 'wp:tag_description', 'wp:term_taxonomy', 'wp:term_parent', 'wp:term_name', 'wp:term_description', 'wp:author_id', 'wp:author_login', 'wp:author_email', 'wp:author_display_name', 'wp:author_first_name', 'wp:author_last_name', ); var $wp_sub_tags = array( 'wp:comment_id', 'wp:comment_author', 'wp:comment_author_email', 'wp:comment_author_url', 'wp:comment_author_IP', 'wp:comment_date', 'wp:comment_date_gmt', 'wp:comment_content', 'wp:comment_approved', 'wp:comment_type', 'wp:comment_parent', 'wp:comment_user_id', ); function parse( $file ) { $this->wxr_version = $this->in_post = $this->cdata = $this->data = $this->sub_data = $this->in_tag = $this->in_sub_tag = false; $this->authors = $this->posts = $this->term = $this->category = $this->tag = array(); $xml = xml_parser_create( 'UTF-8' ); xml_parser_set_option( $xml, XML_OPTION_SKIP_WHITE, 1 ); xml_parser_set_option( $xml, XML_OPTION_CASE_FOLDING, 0 ); xml_set_object( $xml, $this ); xml_set_character_data_handler( $xml, 'cdata' ); xml_set_element_handler( $xml, 'tag_open', 'tag_close' ); if ( ! xml_parse( $xml, file_get_contents( $file ), true ) ) { $current_line = xml_get_current_line_number( $xml ); $current_column = xml_get_current_column_number( $xml ); $error_code = xml_get_error_code( $xml ); $error_string = xml_error_string( $error_code ); return new WP_Error( 'XML_parse_error', 'There was an error when reading this WXR file', array( $current_line, $current_column, $error_string, ) ); } xml_parser_free( $xml ); if ( ! preg_match( '/^\d+\.\d+$/', $this->wxr_version ) ) { return new WP_Error( 'WXR_parse_error', __( 'This does not appear to be a WXR file, missing/invalid WXR version number', 'wordpress-importer' ) ); } return array( 'authors' => $this->authors, 'posts' => $this->posts, 'categories' => $this->category, 'tags' => $this->tag, 'terms' => $this->term, 'base_url' => $this->base_url, 'version' => $this->wxr_version, ); } function tag_open( $parse, $tag, $attr ) { if ( in_array( $tag, $this->wp_tags ) ) { $this->in_tag = substr( $tag, 3 ); return; } if ( in_array( $tag, $this->wp_sub_tags ) ) { $this->in_sub_tag = substr( $tag, 3 ); return; } switch ( $tag ) { case 'category': if ( isset( $attr['domain'], $attr['nicename'] ) ) { $this->sub_data['domain'] = $attr['domain']; $this->sub_data['slug'] = $attr['nicename']; } break; case 'item': $this->in_post = true; case 'title': if ( $this->in_post ) { $this->in_tag = 'post_title'; } break; case 'guid': $this->in_tag = 'guid'; break; case 'dc:creator': $this->in_tag = 'post_author'; break; case 'content:encoded': $this->in_tag = 'post_content'; break; case 'excerpt:encoded': $this->in_tag = 'post_excerpt'; break; case 'wp:term_slug': $this->in_tag = 'slug'; break; case 'wp:meta_key': $this->in_sub_tag = 'key'; break; case 'wp:meta_value': $this->in_sub_tag = 'value'; break; } } function cdata( $parser, $cdata ) { if ( ! trim( $cdata ) ) { return; } if ( false !== $this->in_tag || false !== $this->in_sub_tag ) { $this->cdata .= $cdata; } else { $this->cdata .= trim( $cdata ); } } function tag_close( $parser, $tag ) { switch ( $tag ) { case 'wp:comment': unset( $this->sub_data['key'], $this->sub_data['value'] ); // remove meta sub_data if ( ! empty( $this->sub_data ) ) { $this->data['comments'][] = $this->sub_data; } $this->sub_data = false; break; case 'wp:commentmeta': $this->sub_data['commentmeta'][] = array( 'key' => $this->sub_data['key'], 'value' => $this->sub_data['value'], ); break; case 'category': if ( ! empty( $this->sub_data ) ) { $this->sub_data['name'] = $this->cdata; $this->data['terms'][] = $this->sub_data; } $this->sub_data = false; break; case 'wp:postmeta': if ( ! empty( $this->sub_data ) ) { $this->data['postmeta'][] = $this->sub_data; } $this->sub_data = false; break; case 'item': $this->posts[] = $this->data; $this->data = false; break; case 'wp:category': case 'wp:tag': case 'wp:term': $n = substr( $tag, 3 ); array_push( $this->$n, $this->data ); $this->data = false; break; case 'wp:author': if ( ! empty( $this->data['author_login'] ) ) { $this->authors[ $this->data['author_login'] ] = $this->data; } $this->data = false; break; case 'wp:base_site_url': $this->base_url = $this->cdata; break; case 'wp:wxr_version': $this->wxr_version = $this->cdata; break; default: if ( $this->in_sub_tag ) { $this->sub_data[ $this->in_sub_tag ] = ! empty( $this->cdata ) ? $this->cdata : ''; $this->in_sub_tag = false; } else if ( $this->in_tag ) { $this->data[ $this->in_tag ] = ! empty( $this->cdata ) ? $this->cdata : ''; $this->in_tag = false; } } $this->cdata = false; } } /** * WXR Parser that uses regular expressions. Fallback for installs without an XML parser. */ class Vc_WXR_Parser_Regex { var $authors = array(); var $posts = array(); var $categories = array(); var $tags = array(); var $terms = array(); var $base_url = ''; function __construct() { $this->has_gzip = is_callable( 'gzopen' ); } function parse( $file ) { $wxr_version = $in_post = false; $fp = $this->fopen( $file, 'r' ); if ( $fp ) { while ( ! $this->feof( $fp ) ) { $importline = rtrim( $this->fgets( $fp ) ); if ( ! $wxr_version && preg_match( '|(\d+\.\d+)|', $importline, $version ) ) { $wxr_version = $version[1]; } if ( false !== strpos( $importline, '' ) ) { preg_match( '|(.*?)|is', $importline, $url ); $this->base_url = $url[1]; continue; } if ( false !== strpos( $importline, '' ) ) { preg_match( '|(.*?)|is', $importline, $category ); $this->categories[] = $this->process_category( $category[1] ); continue; } if ( false !== strpos( $importline, '' ) ) { preg_match( '|(.*?)|is', $importline, $tag ); $this->tags[] = $this->process_tag( $tag[1] ); continue; } if ( false !== strpos( $importline, '' ) ) { preg_match( '|(.*?)|is', $importline, $term ); $this->terms[] = $this->process_term( $term[1] ); continue; } if ( false !== strpos( $importline, '' ) ) { preg_match( '|(.*?)|is', $importline, $author ); $a = $this->process_author( $author[1] ); $this->authors[ $a['author_login'] ] = $a; continue; } if ( false !== strpos( $importline, '' ) ) { $post = ''; $in_post = true; continue; } if ( false !== strpos( $importline, '' ) ) { $in_post = false; $this->posts[] = $this->process_post( $post ); continue; } if ( $in_post ) { $post .= $importline . "\n"; } } $this->fclose( $fp ); } if ( ! $wxr_version ) { return new WP_Error( 'WXR_parse_error', __( 'This does not appear to be a WXR file, missing/invalid WXR version number', 'wordpress-importer' ) ); } return array( 'authors' => $this->authors, 'posts' => $this->posts, 'categories' => $this->categories, 'tags' => $this->tags, 'terms' => $this->terms, 'base_url' => $this->base_url, 'version' => $wxr_version, ); } function get_tag( $string, $tag ) { preg_match( "|<$tag.*?>(.*?)|is", $string, $return ); if ( isset( $return[1] ) ) { if ( substr( $return[1], 0, 9 ) == '' ) !== false ) { preg_match_all( '||s', $return[1], $matches ); $return = ''; foreach ( $matches[1] as $match ) { $return .= $match; } } else { $return = preg_replace( '|^$|s', '$1', $return[1] ); } } else { $return = $return[1]; } } else { $return = ''; } return $return; } function process_category( $c ) { return array( 'term_id' => $this->get_tag( $c, 'wp:term_id' ), 'cat_name' => $this->get_tag( $c, 'wp:cat_name' ), 'category_nicename' => $this->get_tag( $c, 'wp:category_nicename' ), 'category_parent' => $this->get_tag( $c, 'wp:category_parent' ), 'category_description' => $this->get_tag( $c, 'wp:category_description' ), ); } function process_tag( $t ) { return array( 'term_id' => $this->get_tag( $t, 'wp:term_id' ), 'tag_name' => $this->get_tag( $t, 'wp:tag_name' ), 'tag_slug' => $this->get_tag( $t, 'wp:tag_slug' ), 'tag_description' => $this->get_tag( $t, 'wp:tag_description' ), ); } function process_term( $t ) { return array( 'term_id' => $this->get_tag( $t, 'wp:term_id' ), 'term_taxonomy' => $this->get_tag( $t, 'wp:term_taxonomy' ), 'slug' => $this->get_tag( $t, 'wp:term_slug' ), 'term_parent' => $this->get_tag( $t, 'wp:term_parent' ), 'term_name' => $this->get_tag( $t, 'wp:term_name' ), 'term_description' => $this->get_tag( $t, 'wp:term_description' ), ); } function process_author( $a ) { return array( 'author_id' => $this->get_tag( $a, 'wp:author_id' ), 'author_login' => $this->get_tag( $a, 'wp:author_login' ), 'author_email' => $this->get_tag( $a, 'wp:author_email' ), 'author_display_name' => $this->get_tag( $a, 'wp:author_display_name' ), 'author_first_name' => $this->get_tag( $a, 'wp:author_first_name' ), 'author_last_name' => $this->get_tag( $a, 'wp:author_last_name' ), ); } function process_post( $post ) { $post_id = $this->get_tag( $post, 'wp:post_id' ); $post_title = $this->get_tag( $post, 'title' ); $post_date = $this->get_tag( $post, 'wp:post_date' ); $post_date_gmt = $this->get_tag( $post, 'wp:post_date_gmt' ); $comment_status = $this->get_tag( $post, 'wp:comment_status' ); $ping_status = $this->get_tag( $post, 'wp:ping_status' ); $status = $this->get_tag( $post, 'wp:status' ); $post_name = $this->get_tag( $post, 'wp:post_name' ); $post_parent = $this->get_tag( $post, 'wp:post_parent' ); $menu_order = $this->get_tag( $post, 'wp:menu_order' ); $post_type = $this->get_tag( $post, 'wp:post_type' ); $post_password = $this->get_tag( $post, 'wp:post_password' ); $is_sticky = $this->get_tag( $post, 'wp:is_sticky' ); $guid = $this->get_tag( $post, 'guid' ); $post_author = $this->get_tag( $post, 'dc:creator' ); $post_excerpt = $this->get_tag( $post, 'excerpt:encoded' ); $post_excerpt = preg_replace_callback( '|<(/?[A-Z]+)|', array( $this, '_normalize_tag', ), $post_excerpt ); $post_excerpt = str_replace( '
    ', '
    ', $post_excerpt ); $post_excerpt = str_replace( '
    ', '
    ', $post_excerpt ); $post_content = $this->get_tag( $post, 'content:encoded' ); $post_content = preg_replace_callback( '|<(/?[A-Z]+)|', array( $this, '_normalize_tag', ), $post_content ); $post_content = str_replace( '
    ', '
    ', $post_content ); $post_content = str_replace( '
    ', '
    ', $post_content ); $postdata = compact( 'post_id', 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_excerpt', 'post_title', 'status', 'post_name', 'comment_status', 'ping_status', 'guid', 'post_parent', 'menu_order', 'post_type', 'post_password', 'is_sticky' ); $attachment_url = $this->get_tag( $post, 'wp:attachment_url' ); if ( $attachment_url ) { $postdata['attachment_url'] = $attachment_url; } preg_match_all( '|(.+?)|is', $post, $terms, PREG_SET_ORDER ); foreach ( $terms as $t ) { $post_terms[] = array( 'slug' => $t[2], 'domain' => $t[1], 'name' => str_replace( array( '', ), '', $t[3] ), ); } if ( ! empty( $post_terms ) ) { $postdata['terms'] = $post_terms; } preg_match_all( '|(.+?)|is', $post, $comments ); $comments = $comments[1]; if ( $comments ) { foreach ( $comments as $comment ) { preg_match_all( '|(.+?)|is', $comment, $commentmeta ); $commentmeta = $commentmeta[1]; $c_meta = array(); foreach ( $commentmeta as $m ) { $c_meta[] = array( 'key' => $this->get_tag( $m, 'wp:meta_key' ), 'value' => $this->get_tag( $m, 'wp:meta_value' ), ); } $post_comments[] = array( 'comment_id' => $this->get_tag( $comment, 'wp:comment_id' ), 'comment_author' => $this->get_tag( $comment, 'wp:comment_author' ), 'comment_author_email' => $this->get_tag( $comment, 'wp:comment_author_email' ), 'comment_author_IP' => $this->get_tag( $comment, 'wp:comment_author_IP' ), 'comment_author_url' => $this->get_tag( $comment, 'wp:comment_author_url' ), 'comment_date' => $this->get_tag( $comment, 'wp:comment_date' ), 'comment_date_gmt' => $this->get_tag( $comment, 'wp:comment_date_gmt' ), 'comment_content' => $this->get_tag( $comment, 'wp:comment_content' ), 'comment_approved' => $this->get_tag( $comment, 'wp:comment_approved' ), 'comment_type' => $this->get_tag( $comment, 'wp:comment_type' ), 'comment_parent' => $this->get_tag( $comment, 'wp:comment_parent' ), 'comment_user_id' => $this->get_tag( $comment, 'wp:comment_user_id' ), 'commentmeta' => $c_meta, ); } } if ( ! empty( $post_comments ) ) { $postdata['comments'] = $post_comments; } preg_match_all( '|(.+?)|is', $post, $postmeta ); $postmeta = $postmeta[1]; if ( $postmeta ) { foreach ( $postmeta as $p ) { $post_postmeta[] = array( 'key' => $this->get_tag( $p, 'wp:meta_key' ), 'value' => $this->get_tag( $p, 'wp:meta_value' ), ); } } if ( ! empty( $post_postmeta ) ) { $postdata['postmeta'] = $post_postmeta; } return $postdata; } function _normalize_tag( $matches ) { return '<' . strtolower( $matches[1] ); } function fopen( $filename, $mode = 'r' ) { if ( $this->has_gzip ) { return gzopen( $filename, $mode ); } return fopen( $filename, $mode ); } function feof( $fp ) { if ( $this->has_gzip ) { return gzeof( $fp ); } return feof( $fp ); } function fgets( $fp, $len = 8192 ) { if ( $this->has_gzip ) { return gzgets( $fp, $len ); } return fgets( $fp, $len ); } function fclose( $fp ) { if ( $this->has_gzip ) { return gzclose( $fp ); } return fclose( $fp ); } } PK<\;include/classes/core/shared-templates/.shared-templates.phpnu[PK<\vo?""0include/classes/core/class-vc-shared-library.phpnu[ 'blue', 'Turquoise' => 'turquoise', 'Pink' => 'pink', 'Violet' => 'violet', 'Peacoc' => 'peacoc', 'Chino' => 'chino', 'Mulled Wine' => 'mulled_wine', 'Vista Blue' => 'vista_blue', 'Black' => 'black', 'Grey' => 'grey', 'Orange' => 'orange', 'Sky' => 'sky', 'Green' => 'green', 'Juicy pink' => 'juicy_pink', 'Sandy brown' => 'sandy_brown', 'Purple' => 'purple', 'White' => 'white', ); /** * @var array */ public static $icons = array( 'Glass' => 'glass', 'Music' => 'music', 'Search' => 'search', ); /** * @var array */ public static $sizes = array( 'Mini' => 'xs', 'Small' => 'sm', 'Normal' => 'md', 'Large' => 'lg', ); /** * @var array */ public static $button_styles = array( 'Rounded' => 'rounded', 'Square' => 'square', 'Round' => 'round', 'Outlined' => 'outlined', '3D' => '3d', 'Square Outlined' => 'square_outlined', ); /** * @var array */ public static $message_box_styles = array( 'Standard' => 'standard', 'Solid' => 'solid', 'Solid icon' => 'solid-icon', 'Outline' => 'outline', '3D' => '3d', ); /** * Toggle styles * @var array */ public static $toggle_styles = array( 'Default' => 'default', 'Simple' => 'simple', 'Round' => 'round', 'Round Outline' => 'round_outline', 'Rounded' => 'rounded', 'Rounded Outline' => 'rounded_outline', 'Square' => 'square', 'Square Outline' => 'square_outline', 'Arrow' => 'arrow', 'Text Only' => 'text_only', ); /** * Animation styles * @var array */ public static $animation_styles = array( 'Bounce' => 'easeOutBounce', 'Elastic' => 'easeOutElastic', 'Back' => 'easeOutBack', 'Cubic' => 'easeinOutCubic', 'Quint' => 'easeinOutQuint', 'Quart' => 'easeOutQuart', 'Quad' => 'easeinQuad', 'Sine' => 'easeOutSine', ); /** * @var array */ public static $cta_styles = array( 'Rounded' => 'rounded', 'Square' => 'square', 'Round' => 'round', 'Outlined' => 'outlined', 'Square Outlined' => 'square_outlined', ); /** * @var array */ public static $txt_align = array( 'Left' => 'left', 'Right' => 'right', 'Center' => 'center', 'Justify' => 'justify', ); /** * @var array */ public static $el_widths = array( '100%' => '', '90%' => '90', '80%' => '80', '70%' => '70', '60%' => '60', '50%' => '50', '40%' => '40', '30%' => '30', '20%' => '20', '10%' => '10', ); /** * @var array */ public static $sep_widths = array( '1px' => '', '2px' => '2', '3px' => '3', '4px' => '4', '5px' => '5', '6px' => '6', '7px' => '7', '8px' => '8', '9px' => '9', '10px' => '10', ); /** * @var array */ public static $sep_styles = array( 'Border' => '', 'Dashed' => 'dashed', 'Dotted' => 'dotted', 'Double' => 'double', 'Shadow' => 'shadow', ); /** * @var array */ public static $box_styles = array( 'Default' => '', 'Rounded' => 'vc_box_rounded', 'Border' => 'vc_box_border', 'Outline' => 'vc_box_outline', 'Shadow' => 'vc_box_shadow', 'Bordered shadow' => 'vc_box_shadow_border', '3D Shadow' => 'vc_box_shadow_3d', ); /** * Round box styles * * @var array */ public static $round_box_styles = array( 'Round' => 'vc_box_circle', 'Round Border' => 'vc_box_border_circle', 'Round Outline' => 'vc_box_outline_circle', 'Round Shadow' => 'vc_box_shadow_circle', 'Round Border Shadow' => 'vc_box_shadow_border_circle', ); /** * Circle box styles * * @var array */ public static $circle_box_styles = array( 'Circle' => 'vc_box_circle_2', 'Circle Border' => 'vc_box_border_circle_2', 'Circle Outline' => 'vc_box_outline_circle_2', 'Circle Shadow' => 'vc_box_shadow_circle_2', 'Circle Border Shadow' => 'vc_box_shadow_border_circle_2', ); /** * @return array */ public static function getColors() { return self::$colors; } /** * @return array */ public static function getIcons() { return self::$icons; } /** * @return array */ public static function getSizes() { return self::$sizes; } /** * @return array */ public static function getButtonStyles() { return self::$button_styles; } /** * @return array */ public static function getMessageBoxStyles() { return self::$message_box_styles; } /** * @return array */ public static function getToggleStyles() { return self::$toggle_styles; } /** * @return array */ public static function getAnimationStyles() { return self::$animation_styles; } /** * @return array */ public static function getCtaStyles() { return self::$cta_styles; } /** * @return array */ public static function getTextAlign() { return self::$txt_align; } /** * @return array */ public static function getBorderWidths() { return self::$sep_widths; } /** * @return array */ public static function getElementWidths() { return self::$el_widths; } /** * @return array */ public static function getSeparatorStyles() { return self::$sep_styles; } /** * Get list of box styles * * Possible $groups values: * - default * - round * - circle * * @param array $groups Array of groups to include. If not specified, return all * * @return array */ public static function getBoxStyles( $groups = array() ) { $list = array(); $groups = (array) $groups; if ( ! $groups || in_array( 'default', $groups ) ) { $list += self::$box_styles; } if ( ! $groups || in_array( 'round', $groups ) ) { $list += self::$round_box_styles; } if ( ! $groups || in_array( 'cirlce', $groups ) ) { $list += self::$circle_box_styles; } return $list; } public static function getColorsDashed() { $colors = array( __( 'Blue', 'js_composer' ) => 'blue', __( 'Turquoise', 'js_composer' ) => 'turquoise', __( 'Pink', 'js_composer' ) => 'pink', __( 'Violet', 'js_composer' ) => 'violet', __( 'Peacoc', 'js_composer' ) => 'peacoc', __( 'Chino', 'js_composer' ) => 'chino', __( 'Mulled Wine', 'js_composer' ) => 'mulled-wine', __( 'Vista Blue', 'js_composer' ) => 'vista-blue', __( 'Black', 'js_composer' ) => 'black', __( 'Grey', 'js_composer' ) => 'grey', __( 'Orange', 'js_composer' ) => 'orange', __( 'Sky', 'js_composer' ) => 'sky', __( 'Green', 'js_composer' ) => 'green', __( 'Juicy pink', 'js_composer' ) => 'juicy-pink', __( 'Sandy brown', 'js_composer' ) => 'sandy-brown', __( 'Purple', 'js_composer' ) => 'purple', __( 'White', 'js_composer' ) => 'white', ); return $colors; } } /** * @param string $asset * * @return array|string */ function getVcShared( $asset = '' ) { switch ( $asset ) { case 'colors': return VcSharedLibrary::getColors(); break; case 'colors-dashed': return VcSharedLibrary::getColorsDashed(); break; case 'icons': return VcSharedLibrary::getIcons(); break; case 'sizes': return VcSharedLibrary::getSizes(); break; case 'button styles': case 'alert styles': return VcSharedLibrary::getButtonStyles(); break; case 'message_box_styles': return VcSharedLibrary::getMessageBoxStyles(); break; case 'cta styles': return VcSharedLibrary::getCtaStyles(); break; case 'text align': return VcSharedLibrary::getTextAlign(); break; case 'cta widths': case 'separator widths': return VcSharedLibrary::getElementWidths(); break; case 'separator styles': return VcSharedLibrary::getSeparatorStyles(); break; case 'separator border widths': return VcSharedLibrary::getBorderWidths(); break; case 'single image styles': return VcSharedLibrary::getBoxStyles(); break; case 'single image external styles': return VcSharedLibrary::getBoxStyles( array( 'default', 'round' ) ); break; case 'toggle styles': return VcSharedLibrary::getToggleStyles(); break; case 'animation styles': return VcSharedLibrary::getAnimationStyles(); break; default: # code... break; } return ''; } PK<\B_LYY-include/classes/core/class-vc-pages-group.phpnu[activePage; } /** * @param Vc_Page $activePage * * @return $this */ public function setActivePage( Vc_Page $activePage ) { $this->activePage = $activePage; return $this; } /** * @return mixed */ public function getPages() { return $this->pages; } /** * @param mixed $pages * * @return $this */ public function setPages( $pages ) { $this->pages = $pages; return $this; } /** * @return mixed */ public function getTemplatePath() { return $this->templatePath; } /** * @param mixed $templatePath * * @return $this */ public function setTemplatePath( $templatePath ) { $this->templatePath = $templatePath; return $this; } /** * Render html output for current page. */ public function render() { vc_include_template( $this->getTemplatePath(), array( 'pages' => $this->getPages(), 'active_page' => $this->activePage, 'page' => $this, ) ); } } PK<\7б(include/classes/core/class-vc-mapper.phpnu[callActivities(); do_action( 'vc_mapper_init_after' ); } /** * This method is called by VC objects methods if it is called before VC initialization. * * @see WPBMAP * @since 4.2 * @access public * * @param $object - mame of class object * @param $method - method name * @param array $params - list of attributes for object method */ public function addActivity( $object, $method, $params = array() ) { $this->init_activity[] = array( $object, $method, $params, ); } /** * This method is called by VC objects methods if it is called before VC initialization. * * @see WPBMAP * @since 4.9 * @access public * * @param $tag - shortcode tag of element * @param $method - method name * @param array $params - list of attributes for object method */ public function addElementActivity( $tag, $method, $params = array() ) { if ( ! isset( $this->element_activities[ $tag ] ) ) { $this->element_activities[ $tag ] = array(); } $this->element_activities[ $tag ][] = array( $method, $params, ); } /** * Call all stored activities. * * Called by init method. List of activities stored by $init_activity are created by other objects called after * initialization. * * @since 4.2 * @access public */ protected function callActivities() { do_action( 'vc_mapper_call_activities_before' ); while ( $activity = each( $this->init_activity ) ) { list( $object, $method, $params ) = $activity[1]; if ( 'mapper' === $object ) { switch ( $method ) { case 'map': WPBMap::map( $params['tag'], $params['attributes'] ); break; case 'drop_param': WPBMap::dropParam( $params['name'], $params['attribute_name'] ); break; case 'add_param': WPBMap::addParam( $params['name'], $params['attribute'] ); break; case 'mutate_param': WPBMap::mutateParam( $params['name'], $params['attribute'] ); break; case 'drop_all_shortcodes': WPBMap::dropAllShortcodes(); break; case 'drop_shortcode': WPBMap::dropShortcode( $params['name'] ); break; case 'modify': WPBMap::modify( $params['name'], $params['setting_name'], $params['value'] ); break; } } } } /** * Does user has access to modify/clone/delete/add shortcode * * @param $shortcode * * @todo fix_roles and maybe remove/@deprecate this * @since 4.5 * @return bool */ public function userHasAccess( $shortcode ) { if ( $this->isCheckForAccess() ) { if ( isset( $this->hasAccess[ $shortcode ] ) ) { return $this->hasAccess[ $shortcode ]; } else { $this->hasAccess[ $shortcode ] = vc_user_access_check_shortcode_edit( $shortcode ); } return $this->hasAccess[ $shortcode ]; } return true; } /** * @todo fix_roles and maybe remove/@deprecate this * @since 4.5 * @return bool */ public function isCheckForAccess() { return $this->checkForAccess; } /** * @todo fix_roles and maybe remove/@deprecate this * @since 4.5 * * @param bool $checkForAccess */ public function setCheckForAccess( $checkForAccess ) { $this->checkForAccess = $checkForAccess; } public function callElementActivities( $tag ) { do_action( 'vc_mapper_call_activities_before' ); if ( isset( $this->element_activities[ $tag ] ) ) { while ( $activity = each( $this->element_activities[ $tag ] ) ) { list( $method, $params ) = $activity[1]; switch ( $method ) { case 'drop_param': WPBMap::dropParam( $params['name'], $params['attribute_name'] ); break; case 'add_param': WPBMap::addParam( $params['name'], $params['attribute'] ); break; case 'mutate_param': WPBMap::mutateParam( $params['name'], $params['attribute'] ); break; case 'drop_shortcode': WPBMap::dropShortcode( $params['name'] ); break; case 'modify': WPBMap::modify( $params['name'], $params['setting_name'], $params['value'] ); break; } } } } } PK<\03#include/classes/core/interfaces.phpnu[wpAny( array( 'edit_post', $post_id ) ) ->get() ) { return; } $this->setJsStatus( $post_id ); if ( ! ( isset( $_POST['wp-preview'] ) && 'dopreview' === $_POST['wp-preview'] ) ) { $this->setSettings( $post_id ); } /** * vc_filter: vc_base_save_post_custom_css * @since 4.4 */ $post_custom_css = apply_filters( 'vc_base_save_post_custom_css', vc_post_param( 'vc_post_custom_css' ) ); if ( null !== $post_custom_css && empty( $post_custom_css ) ) { delete_post_meta( $post_id, '_wpb_post_custom_css' ); } elseif ( null !== $post_custom_css ) { $post_custom_css = strip_tags( $post_custom_css ); update_post_meta( $post_id, '_wpb_post_custom_css', $post_custom_css ); } visual_composer()->buildShortcodesCustomCss( $post_id ); } /** * Saves VC Backend editor meta box visibility status. * * If post param 'wpb_vc_js_status' set to true, then methods adds/updated post * meta option with tag '_wpb_vc_js_status'. * @since 4.4 * * @param $post_id */ public function setJsStatus( $post_id ) { $value = vc_post_param( 'wpb_vc_js_status' ); if ( null !== $value ) { // Add value if ( '' === get_post_meta( $post_id, '_wpb_vc_js_status' ) ) { add_post_meta( $post_id, '_wpb_vc_js_status', $value, true ); } // Update value elseif ( get_post_meta( $post_id, '_wpb_vc_js_status', true ) != $value ) { update_post_meta( $post_id, '_wpb_vc_js_status', $value ); } // Delete value elseif ( '' === $value ) { delete_post_meta( $post_id, '_wpb_vc_js_status', get_post_meta( $post_id, '_wpb_vc_js_status', true ) ); } } } /** * Saves VC interface version which is used for building post content. * @since 4.4 * @todo check is it used everywhere and is it needed?! * @param $post_id */ public function setInterfaceVersion( $post_id ) { if ( null !== ( $value = vc_post_param( 'wpb_vc_js_interface_version' ) ) ) { update_post_meta( $post_id, '_wpb_vc_js_interface_version', $value ); } } /** * Set Post Settings for VC. * * It is possible to add any data to post settings by adding filter with tag 'vc_hooks_vc_post_settings'. * @since 4.4 * vc_filter: vc_hooks_vc_post_settings - hook to override post meta settings for WPBakery Page Builder (used in grid for * example) * * @param $post_id */ public function setSettings( $post_id ) { $settings = array(); $settings = apply_filters( 'vc_hooks_vc_post_settings', $settings, $post_id, get_post( $post_id ) ); if ( is_array( $settings ) && ! empty( $settings ) ) { update_post_meta( $post_id, '_vc_post_settings', $settings ); } else { delete_post_meta( $post_id, '_vc_post_settings' ); } } } PK<\%d]||&include/classes/core/class-vc-sort.phpnu[data array_search * * @since 4.4 */ /** * Class Vc_Sort * @since 4.4 */ class Vc_Sort { /** * @since 4.4 * @var array $data - sorting data */ protected $data = array(); /** * @since 4.4 * @var string $key - key for search */ protected $key = 'weight'; /** * @since 4.4 * * @param $data - array to sort */ public function __construct( $data ) { $this->data = $data; } /** * Used to change/set data to sort * * @since 4.5 * * @param $data */ public function setData( $data ) { $this->data = $data; } /** * Sort $this->data by user key, used in class-vc-mapper. * If keys are equals it SAVES a position in array (index). * * @since 4.4 * * @param string $key * * @return array - sorted array */ public function sortByKey( $key = 'weight' ) { $this->key = $key; uasort( $this->data, array( $this, '_key' ) ); return array_merge( $this->data ); // reset array keys to 0..N } /** * Sorting by key callable for usort function * @since 4.4 * * @param $a - compare value * @param $b - compare value * * @return int */ private function _key( $a, $b ) { $a_weight = isset( $a[ $this->key ] ) ? (int) $a[ $this->key ] : 0; $b_weight = isset( $b[ $this->key ] ) ? (int) $b[ $this->key ] : 0; // To save real-ordering if ( $a_weight == $b_weight ) { $cmp_a = array_search( $a, $this->data ); $cmp_b = array_search( $b, $this->data ); return $cmp_a - $cmp_b; } return $b_weight - $a_weight; } /** * @since 4.4 * * @return array - sorting data */ public function getData() { return $this->data; } } PK<\RR&include/classes/core/class-wpb-map.phpnu[roles ) ) { self::$user_role = $current_user->roles[0]; } else { self::$user_role = 'author'; } } else { self::$user_role = 'author'; } self::$settings = vc_settings()->get( 'groups_access_rules' ); } return self::$settings; } /** * Check is shortcode with a tag mapped to VC. * * @static * * @param $tag - shortcode tag. * * @return bool */ public static function exists( $tag ) { return (boolean) isset( self::$sc[ $tag ] ); } /** * Map shortcode to VC. * * This method maps shortcode to VC. * You need to shortcode's tag and settings to map correctly. * Default shortcodes are mapped in config/map.php file. * The best way is to call this method with "init" action callback function of WP. * * vc_filter: vc_mapper_tag - to change shortcode tag, arguments 2 ( $tag, $attributes ) * vc_filter: vc_mapper_attributes - to change shortcode attributes (like params array), arguments 2 ( $attributes, * $tag ) vc_filter: vc_mapper_attribute - to change singe shortcode param data, arguments 2 ( $attribute, $tag ) * vc_filter: vc_mapper_attribute_{PARAM_TYPE} - to change singe shortcode param data by param type, arguments 2 ( * $attribute, $tag ) * * @static * * @param $tag * @param $attributes * * @return bool */ public static function map( $tag, $attributes ) { if ( in_array( $tag, self::$removedElements ) ) { return false; } if ( ! self::$is_init ) { if ( empty( $attributes['name'] ) ) { trigger_error( sprintf( __( 'Wrong name for shortcode:%s. Name required', 'js_composer' ), $tag ) ); } elseif ( empty( $attributes['base'] ) ) { trigger_error( sprintf( __( 'Wrong base for shortcode:%s. Base required', 'js_composer' ), $tag ) ); } else { vc_mapper()->addActivity( 'mapper', 'map', array( 'tag' => $tag, 'attributes' => $attributes, ) ); return true; } return false; } if ( empty( $attributes['name'] ) ) { trigger_error( sprintf( __( 'Wrong name for shortcode:%s. Name required', 'js_composer' ), $tag ) ); } elseif ( empty( $attributes['base'] ) ) { trigger_error( sprintf( __( 'Wrong base for shortcode:%s. Base required', 'js_composer' ), $tag ) ); } else { self::$sc[ $tag ] = $attributes; return true; } return false; } /** * Lazy method to map shortcode to VC. * * This method maps shortcode to VC. * You can shortcode settings as you do in self::map method. Bu also you * can pass function name or file, which will be used to add settings for * element. But this will be done only when element data is really required. * * @static * @since 4.9 * * @param $tag * @param $settings_file * @param $settings_function * @param $attributes * * @return bool */ public static function leanMap( $tag, $settings_function = null, $settings_file = null, $attributes = array() ) { if ( in_array( $tag, self::$removedElements ) ) { return false; } self::$sc[ $tag ] = $attributes; self::$sc[ $tag ]['base'] = $tag; if ( is_string( $settings_file ) ) { self::$sc[ $tag ]['__vc_settings_file'] = $settings_file; } if ( ! is_null( $settings_function ) ) { self::$sc[ $tag ]['__vc_settings_function'] = $settings_function; } return true; } /** * Generates list of shortcodes taking into account the access rules for shortcodes from VC Settings page. * * This method parses the list of mapped shortcodes and creates categories list for users. * * @static * * @param bool $force - force data generation even data already generated. */ protected static function generateUserData( $force = false ) { if ( ! $force && false !== self::$user_sc && false !== self::$user_categories ) { return; } //$settings = self::getSettings(); self::$user_sc = self::$user_categories = self::$user_sorted_sc = array(); $deprecated = 'deprecated'; $add_deprecated = false; if ( is_array( self::$sc ) && ! empty( self::$sc ) ) { foreach ( array_keys( self::$sc ) as $name ) { self::setElementSettings( $name ); if ( ! isset( self::$sc[ $name ] ) ) { continue; } $values = self::$sc[ $name ]; if ( vc_user_access_check_shortcode_all( $name ) ) { if ( ! isset( $values['content_element'] ) || true === $values['content_element'] ) { $categories = isset( $values['category'] ) ? $values['category'] : '_other_category_'; $values['_category_ids'] = array(); if ( isset( $values['deprecated'] ) && false !== $values['deprecated'] ) { $add_deprecated = true; $values['_category_ids'][] = 'deprecated'; } else { if ( is_array( $categories ) && ! empty( $categories ) ) { foreach ( $categories as $c ) { if ( false === array_search( $c, self::$user_categories ) ) { self::$user_categories[] = $c; } $values['_category_ids'][] = md5( $c ); } } else { if ( false === array_search( $categories, self::$user_categories ) ) { self::$user_categories[] = $categories; } $values['_category_ids'][] = md5( $categories ); } } } self::$user_sc[ $name ] = $values; self::$user_sorted_sc[] = $values; } } } if ( $add_deprecated ) { self::$user_categories[] = $deprecated; } $sort = new Vc_Sort( self::$user_sorted_sc ); self::$user_sorted_sc = $sort->sortByKey(); } /** * Generates list of shortcodes. * * This method parses the list of mapped shortcodes and creates categories list. * * @static_other_category_ * * @param bool $force - force data generation even data already generated. */ protected static function generateData( $force = false ) { if ( ! $force && false !== self::$categories ) { return; } foreach ( self::$sc as $tag => $settings ) { self::setElementSettings( $tag ); } self::$categories = self::collectCategories( self::$sc ); $sort = new Vc_Sort( array_values( self::$sc ) ); self::$sorted_sc = $sort->sortByKey(); } /** * Get mapped shortcode settings. * * @static * @return array */ public static function getShortCodes() { return self::$sc; } /** * Get mapped shortcode settings. * * @static * @return array */ public static function getAllShortCodes() { self::generateData(); return self::$sc; } /** * Get mapped shortcode settings. * * @static * @return array */ public static function getSortedAllShortCodes() { self::generateData(); return self::$sorted_sc; } /** * Get sorted list of mapped shortcode settings for current user. * * Sorting depends on the weight attribute and mapping order. * * @static * @return array */ public static function getSortedUserShortCodes() { self::generateUserData(); return self::$user_sorted_sc; } /** * Get list of mapped shortcode settings for current user. * @static * @return array - associated array of shortcodes settings with tag as the key. */ public static function getUserShortCodes() { self::generateUserData(); return self::$user_sc; } /** * Get mapped shortcode settings by tag. * * @static * * @param $tag - shortcode tag. * * @return array|null null @since 4.4.3 */ public static function getShortCode( $tag ) { if ( isset( self::$sc[ $tag ] ) && is_array( self::$sc[ $tag ] ) ) { $shortcode = self::setElementSettings( $tag ); } else { $shortcode = null; } return $shortcode; } /** * Get mapped shortcode settings by tag. * * @since 4.5.2 * @static * * @param $tag - shortcode tag. * * @return array|null */ public static function getUserShortCode( $tag ) { self::generateUserData(); if ( isset( self::$user_sc[ $tag ] ) && is_array( self::$user_sc[ $tag ] ) ) { $shortcode = self::$user_sc[ $tag ]; if ( ! empty( $shortcode['params'] ) ) { $params = $shortcode['params']; $shortcode['params'] = array(); foreach ( $params as $attribute ) { $attribute = apply_filters( 'vc_mapper_attribute', $attribute, $tag ); $attribute = apply_filters( 'vc_mapper_attribute_' . $attribute['type'], $attribute, $tag ); $shortcode['params'][] = $attribute; } $sort = new Vc_Sort( $shortcode['params'] ); $shortcode['params'] = $sort->sortByKey(); } return $shortcode; } return null; } /** * Get all categories for mapped shortcodes. * * @static * @return array */ public static function getCategories() { self::generateData(); return self::$categories; } /** * Get all categories for current user. * * Category is added to the list when at least one shortcode of this category is allowed for current user * by Vc access rules. * * @static * @return array */ public static function getUserCategories() { self::generateUserData(); return self::$user_categories; } /** * Drop shortcode param. * * @static * * @param $name * @param $attribute_name * * @return bool */ public static function dropParam( $name, $attribute_name ) { if ( ! isset( self::$init_elements[ $name ] ) ) { vc_mapper()->addElementActivity( $name, 'drop_param', array( 'name' => $name, 'attribute_name' => $attribute_name, ) ); return true; } if ( isset( self::$sc[ $name ], self::$sc[ $name ]['params'] ) && is_array( self::$sc[ $name ]['params'] ) ) { foreach ( self::$sc[ $name ]['params'] as $index => $param ) { if ( $param['param_name'] == $attribute_name ) { unset( self::$sc[ $name ]['params'][ $index ] ); self::$sc[ $name ]['params'] = array_merge( self::$sc[ $name ]['params'] ); // fix indexes return true; } } } return true; } /** * Returns param settings for mapped shortcodes. * * @static * * @param $tag * @param $param_name * * @return bool| array */ public static function getParam( $tag, $param_name ) { if ( ! isset( self::$sc[ $tag ] ) ) { return trigger_error( sprintf( __( 'Wrong name for shortcode:%s. Name required', 'js_composer' ), $tag ) ); } if ( isset( self::$sc[ $tag ]['__vc_settings_function'] ) || isset( self::$sc[ $tag ]['__vc_settings_file'] ) ) { self::setElementSettings( $tag ); } if ( ! isset( self::$sc[ $tag ]['params'] ) ) { return false; } foreach ( self::$sc[ $tag ]['params'] as $index => $param ) { if ( $param['param_name'] == $param_name ) { return self::$sc[ $tag ]['params'][ $index ]; } } return false; } /** * Add new param to shortcode params list. * * @static * * @param $name * @param array $attribute * * @return bool - true if added, false if scheduled/rejected */ public static function addParam( $name, $attribute = array() ) { if ( ! isset( self::$init_elements[ $name ] ) ) { vc_mapper()->addElementActivity( $name, 'add_param', array( 'name' => $name, 'attribute' => $attribute, ) ); return false; } if ( ! isset( self::$sc[ $name ] ) ) { trigger_error( sprintf( __( 'Wrong name for shortcode:%s. Name required', 'js_composer' ), $name ) ); } elseif ( ! isset( $attribute['param_name'] ) ) { trigger_error( sprintf( __( "Wrong attribute for '%s' shortcode. Attribute 'param_name' required", 'js_composer' ), $name ) ); } else { $replaced = false; foreach ( self::$sc[ $name ]['params'] as $index => $param ) { if ( $param['param_name'] == $attribute['param_name'] ) { $replaced = true; self::$sc[ $name ]['params'][ $index ] = $attribute; break; } } if ( false === $replaced ) { self::$sc[ $name ]['params'][] = $attribute; } $sort = new Vc_Sort( self::$sc[ $name ]['params'] ); self::$sc[ $name ]['params'] = $sort->sortByKey(); return true; } return false; } /** * Change param attributes of mapped shortcode. * * @static * * @param $name * @param array $attribute * * @return bool */ public static function mutateParam( $name, $attribute = array() ) { if ( ! isset( self::$init_elements[ $name ] ) ) { vc_mapper()->addElementActivity( $name, 'mutate_param', array( 'name' => $name, 'attribute' => $attribute, ) ); return false; } if ( ! isset( self::$sc[ $name ] ) ) { return trigger_error( sprintf( __( 'Wrong name for shortcode:%s. Name required', 'js_composer' ), $name ) ); } elseif ( ! isset( $attribute['param_name'] ) ) { trigger_error( sprintf( __( "Wrong attribute for '%s' shortcode. Attribute 'param_name' required", 'js_composer' ), $name ) ); } else { $replaced = false; foreach ( self::$sc[ $name ]['params'] as $index => $param ) { if ( $param['param_name'] == $attribute['param_name'] ) { $replaced = true; self::$sc[ $name ]['params'][ $index ] = array_merge( $param, $attribute ); break; } } if ( false === $replaced ) { self::$sc[ $name ]['params'][] = $attribute; } $sort = new Vc_Sort( self::$sc[ $name ]['params'] ); self::$sc[ $name ]['params'] = $sort->sortByKey(); } return true; } /** * Removes shortcode from mapping list. * * @static * * @param $name * * @return bool */ public static function dropShortcode( $name ) { self::$removedElements[] = $name; if ( ! isset( self::$init_elements[ $name ] ) ) { vc_mapper()->addElementActivity( $name, 'drop_shortcode', array( 'name' => $name, ) ); } unset( self::$sc[ $name ] ); visual_composer()->removeShortCode( $name ); return true; } public static function dropAllShortcodes() { if ( ! self::$is_init ) { vc_mapper()->addActivity( '*', 'drop_all_shortcodes', array() ); return false; } foreach ( self::$sc as $name => $data ) { visual_composer()->removeShortCode( $name ); } self::$sc = array(); self::$user_sc = self::$user_categories = self::$user_sorted_sc = false; return true; } /** * Modify shortcode's mapped settings. * You can modify only one option of the group options. * Call this method with $settings_name param as associated array to mass modifications. * * @static * * @param $name - shortcode' name. * @param $setting_name - option key name or the array of options. * @param $value - value of settings if $setting_name is option key. * * @return array|bool */ public static function modify( $name, $setting_name, $value = '' ) { if ( ! isset( self::$init_elements[ $name ] ) ) { vc_mapper()->addElementActivity( $name, 'modify', array( 'name' => $name, 'setting_name' => $setting_name, 'value' => $value, ) ); return false; } if ( ! isset( self::$sc[ $name ] ) ) { return trigger_error( sprintf( __( 'Wrong name for shortcode:%s. Name required', 'js_composer' ), $name ) ); } elseif ( 'base' === $setting_name ) { return trigger_error( sprintf( __( "Wrong setting_name for shortcode:%s. Base can't be modified.", 'js_composer' ), $name ) ); } if ( is_array( $setting_name ) ) { foreach ( $setting_name as $key => $value ) { self::modify( $name, $key, $value ); } } else { if ( is_array( $value ) ) { $value = array_merge( $value ); // fix indexes } self::$sc[ $name ][ $setting_name ] = $value; visual_composer()->updateShortcodeSetting( $name, $setting_name, $value ); } return self::$sc; } /** * Returns "|" separated list of mapped shortcode tags. * * @static * @return string */ public static function getTagsRegexp() { if ( empty( self::$tags_regexp ) ) { self::$tags_regexp = implode( '|', array_keys( self::$sc ) ); } return self::$tags_regexp; } /** * Sorting method for WPBMap::generateUserData method. Called by uasort php function. * @deprecated - use Vc_Sort::sortByKey since 4.4 * @static * * @param $a * @param $b * * @return int */ public static function sort( $a, $b ) { // _deprecated_function( 'WPBMap::sort', '4.4 (will be removed in 4.10)', 'Vc_Sort class, :sortByKey' ); $a_weight = isset( $a['weight'] ) ? (int) $a['weight'] : 0; $b_weight = isset( $b['weight'] ) ? (int) $b['weight'] : 0; if ( $a_weight == $b_weight ) { $cmpa = array_search( $a, (array) self::$user_sorted_sc ); $cmpb = array_search( $b, (array) self::$user_sorted_sc ); return ( $cmpa > $cmpb ) ? 1 : - 1; } return ( $a_weight < $b_weight ) ? 1 : - 1; } public static function collectCategories( &$shortcodes ) { $categories_list = array(); $deprecated = 'deprecated'; $add_deprecated = false; if ( is_array( $shortcodes ) && ! empty( $shortcodes ) ) { foreach ( $shortcodes as $name => $values ) { $values['_category_ids'] = array(); if ( isset( $values['deprecated'] ) && false !== $values['deprecated'] ) { $add_deprecated = true; $values['_category_ids'][] = 'deprecated'; } elseif ( isset( $values['category'] ) ) { $categories = $values['category']; if ( is_array( $categories ) && ! empty( $categories ) ) { foreach ( $categories as $c ) { if ( false === array_search( $c, $categories_list ) ) { $categories[] = $c; } $values['_category_ids'][] = md5( $c ); } } else { if ( false === array_search( $categories, $categories_list ) ) { $categories_list[] = $categories; } /** @var string $categories */ $values['_category_ids'][] = md5( $categories ); } } $shortcodes[ $name ] = $values; } } if ( $add_deprecated ) { $categories_list[] = $deprecated; } return $categories_list; } /** * Process files/functions for lean mapping settings * * @since 4.9 * * @param $tag * * @return array|null */ public static function setElementSettings( $tag ) { if ( ! isset( self::$sc[ $tag ] ) || in_array( $tag, self::$removedElements ) ) { return null; } if ( isset( self::$init_elements[ $tag ] ) && self::$init_elements[ $tag ] ) { return self::$sc[ $tag ]; } $settings = self::$sc[ $tag ]; if ( isset( $settings['__vc_settings_function'] ) ) { self::$sc[ $tag ] = call_user_func( $settings['__vc_settings_function'], $tag ); } elseif ( isset( $settings['__vc_settings_file'] ) ) { self::$sc[ $tag ] = include $settings['__vc_settings_file']; } self::$sc[ $tag ]['base'] = $tag; self::$init_elements[ $tag ] = true; vc_mapper()->callElementActivities( $tag ); return self::$sc[ $tag ]; } /** * Add elements as shortcodes * * @since 4.9 */ public static function addAllMappedShortcodes() { foreach ( self::$sc as $tag => $settings ) { if ( ! in_array( $tag, self::$removedElements ) && ! shortcode_exists( $tag ) ) { add_shortcode( $tag, 'vc_do_shortcode' ); } } } } PK<\R 4include/classes/core/access/class-vc-role-access.phpnu[getRoleName(); if ( ! $role_name ) { throw new Exception( 'roleName for vc_role_access is not set, please use ->who(roleName) method to set!' ); } $key = $part . '_' . $role_name; if ( ! isset( $this->parts[ $key ] ) ) { require_once vc_path_dir( 'CORE_DIR', 'access/class-vc-role-access-controller.php' ); /** @var $role_access_controller Vc_Role_Access_Controller */ $role_access_controller = $this->parts[ $key ] = new Vc_Role_Access_Controller( $part ); $role_access_controller->setRoleName( $this->getRoleName() ); } /** @var $role_access_controller Vc_Role_Access_Controller */ $role_access_controller = $this->parts[ $key ]; $role_access_controller->setValidAccess( $this->getValidAccess() ); // send current status to upper level $this->setValidAccess( true ); // reset return $role_access_controller; } /** * Set role to get access to data. * * @param $roleName * @return $this * @internal param $role * */ public function who( $roleName ) { $this->roleName = $roleName; return $this; } /** * @return null|string */ public function getRoleName() { return $this->roleName; } } PK<\T<include/classes/core/access/class-vc-current-user-access.phpnu[parts[ $part ] ) ) { require_once vc_path_dir( 'CORE_DIR', 'access/class-vc-current-user-access-controller.php' ); /** @var $user_access_controller Vc_Current_User_Access_Controller */ $user_access_controller = $this->parts[ $part ] = new Vc_Current_User_Access_Controller( $part ); } /** @var $user_access_controller Vc_Current_User_Access_Controller */ $user_access_controller = $this->parts[ $part ]; // we also check for user "logged_in" status $is_user_logged_in = function_exists( 'is_user_logged_in' ) && is_user_logged_in(); $user_access_controller->setValidAccess( $is_user_logged_in && $this->getValidAccess() ); // send current status to upper level $this->setValidAccess( true ); // reset return $user_access_controller; } public function wpMulti( $method, $valid, $argsList ) { if ( $this->getValidAccess() ) { $access = ! $valid; foreach ( $argsList as &$args ) { if ( ! is_array( $args ) ) { $args = array( $args ); } array_unshift( $args, 'current_user_can' ); $this->setValidAccess( true ); call_user_func_array( array( $this, $method, ), $args ); if ( $valid === $this->getValidAccess() ) { $access = $valid; break; } } $this->setValidAccess( $access ); } return $this; } /** * Check Wordpress capability. Should be valid one cap at least. * * @return Vc_Current_User_Access */ public function wpAny() { if ( $this->getValidAccess() ) { $args = func_get_args(); $this->wpMulti( 'check', true, $args ); } return $this; } /** * Check Wordpress capability. Should be valid all caps. * * @return Vc_Current_User_Access */ public function wpAll() { if ( $this->getValidAccess() ) { $args = func_get_args(); $this->wpMulti( 'check', false, $args ); } return $this; } } PK<\f 8include/classes/core/access/abstract-class-vc-access.phpnu[validAccess; } /** * @param mixed $validAccess * * @return $this */ public function setValidAccess( $validAccess ) { $this->validAccess = $validAccess; return $this; } /** * Check multi access settings by method inside class object. * * @param $method * @param $valid * @param $argsList * * @return $this */ public function checkMulti( $method, $valid, $argsList ) { if ( $this->getValidAccess() ) { $access = ! $valid; foreach ( $argsList as $args ) { if ( ! is_array( $args ) ) { $args = array( $args ); } $this->setValidAccess( true ); call_user_func_array( array( $this, $method ), $args ); if ( $valid === $this->getValidAccess() ) { $access = $valid; break; } } $this->setValidAccess( $access ); } return $this; } /** * Get current validation state and reset it to true. ( should be never called twice ) * @return bool */ public function get() { $result = $this->getValidAccess(); $this->setValidAccess( true ); return $result; } /** * Call die() function with message if access is invalid. * * @param string $message * @return $this * @throws \Exception */ public function validateDie( $message = '' ) { $result = $this->getValidAccess(); $this->setValidAccess( true ); if ( ! $result ) { if ( defined( 'VC_DIE_EXCEPTION' ) && VC_DIE_EXCEPTION ) { throw new Exception( $message ); } else { die( $message ); } } return $this; } /** * @param $func * * @return $this */ public function check( $func ) { if ( $this->getValidAccess() ) { $args = func_get_args(); $args = array_slice( $args, 1 ); if ( ! empty( $func ) ) { $this->setValidAccess( call_user_func_array( $func, $args ) ); } } return $this; } /** * Any of provided rules should be valid. * Usage: checkAny( * 'vc_verify_admin_nonce', * array( 'current_user_can', 'edit_post', 12 ), * array( 'current_user_can', 'edit_posts' ), * ) * @return $this */ public function checkAny() { if ( $this->getValidAccess() ) { $args = func_get_args(); $this->checkMulti( 'check', true, $args ); } return $this; } /** * All provided rules should be valid. * Usage: checkAll( * 'vc_verify_admin_nonce', * array( 'current_user_can', 'edit_post', 12 ), * array( 'current_user_can', 'edit_posts' ), * ) * @return $this */ public function checkAll() { if ( $this->getValidAccess() ) { $args = func_get_args(); $this->checkMulti( 'check', false, $args ); } return $this; } /** * @param string $nonce * * @return Vc_Access */ public function checkAdminNonce( $nonce = '' ) { return $this->check( 'vc_verify_admin_nonce', $nonce ); } /** * @param string $nonce * * @return Vc_Access */ public function checkPublicNonce( $nonce = '' ) { return $this->check( 'vc_verify_public_nonce', $nonce ); } } PK<\+3]]Ginclude/classes/core/access/class-vc-current-user-access-controller.phpnu[getStateKey() . '/' . $rule; return current_user_can( $role_rule ); } /** * Add capability to role. * * @param $rule * @param bool $value */ public function setCapRule( $rule, $value = true ) { $role_rule = $this->getStateKey() . '/' . $rule; wp_get_current_user()->add_cap( $role_rule, $value ); } public function getRole() { if ( ! $this->roleName && function_exists( 'wp_get_current_user' ) ) { $user = wp_get_current_user(); $user_roles = array_intersect( array_values( (array) $user->roles ), array_keys( (array) get_editable_roles() ) ); $this->roleName = reset( $user_roles ); $this->role = get_role( $this->roleName ); } return $this->role; } } PK<\'include/classes/core/access/.access.phpnu[PK<\鄂VV?include/classes/core/access/class-vc-role-access-controller.phpnu[ 'vc_row_all', 'vc_column_all' => 'vc_row_all', 'vc_column_inner_all' => 'vc_row_all', 'vc_row_inner_edit' => 'vc_row_edit', 'vc_column_edit' => 'vc_row_edit', 'vc_column_inner_edit' => 'vc_row_edit', ); function __construct( $part ) { $this->part = $part; } /** * Set role name. * * @param $role_name */ public function setRoleName( $role_name ) { $this->roleName = $role_name; } /** * Get part for role. * @return bool */ public function getPart() { return $this->part; } /** * Get state of the Vc access rules part. * * @return mixed; */ public function getState() { $role = $this->getRole(); $state = null; if ( $role && isset( $role->capabilities, $role->capabilities[ $this->getStateKey() ] ) ) { $state = $role->capabilities[ $this->getStateKey() ]; } return apply_filters( 'vc_role_access_with_' . $this->getPart() . '_get_state', $state, $this->getRole() ); } /** * Set state for full part. * * State can have 3 values: * true - all allowed under this part; * false - all disabled under this part; * string|'custom' - custom settings. It means that need to check exact capability. * * @param bool $value * * @return $this */ public function setState( $value = true ) { $this->getRole() && $this->getRole()->add_cap( $this->getStateKey(), $value ); return $this; } /** * Can user do what he doo. * Any rule has three types of state: true, false, string. * * @param string $rule * @param bool|true $check_state * * @return $this */ public function can( $rule = '', $check_state = true ) { if ( null === $this->getRole() ) { $this->setValidAccess( is_super_admin() ); } elseif ( $this->getValidAccess() ) { // YES it is hard coded :) if ( 'administrator' === $this->getRole()->name && 'settings' === $this->getPart() && ( 'vc-roles-tab' === $rule || 'vc-updater-tab' === $rule ) ) { $this->setValidAccess( true ); return $this; } $rule = $this->updateMergedCaps( $rule ); if ( true === $check_state ) { $state = $this->getState(); $return = false !== $state; if ( null === $state ) { $return = true; } elseif ( is_bool( $state ) ) { $return = $state; } elseif ( '' !== $rule ) { $return = $this->getCapRule( $rule ); } } else { $return = $this->getCapRule( $rule ); } $return = apply_filters( 'vc_role_access_with_' . $this->getPart() . '_can', $return, $this->getRole(), $rule ); $return = apply_filters( 'vc_role_access_with_' . $this->getPart() . '_can_' . $rule, $return, $this->getRole() ); $this->setValidAccess( $return ); } return $this; } /** * Can user do what he doo. * Any rule has three types of state: true,false, string. */ public function canAny() { if ( $this->getValidAccess() ) { $args = func_get_args(); $this->checkMulti( 'can', true, $args ); } return $this; } /** * Can user do what he doo. * Any rule has three types of state: true,false, string. */ public function canAll() { if ( $this->getValidAccess() ) { $args = func_get_args(); $this->checkMulti( 'can', false, $args ); } return $this; } /** * Get capability for role * * @param $rule * * @return bool */ public function getCapRule( $rule ) { $rule = $this->getStateKey() . '/' . $rule; return $this->getRole() ? $this->getRole()->has_cap( $rule ) : false; } /** * Add capability to role. * * @param $rule * @param bool $value */ public function setCapRule( $rule, $value = true ) { $role_rule = $this->getStateKey() . '/' . $rule; $this->getRole() && $this->getRole()->add_cap( $role_rule, $value ); } /** * Get all capability for this part. */ public function getAllCaps() { $role = $this->getRole(); $caps = array(); if ( $role ) { $role = apply_filters( 'vc_role_access_all_caps_role', $role ); if ( isset( $role->capabilities ) && is_array( $role->capabilities ) ) { foreach ( $role->capabilities as $key => $value ) { if ( preg_match( '/^' . $this->getStateKey() . '\//', $key ) ) { $rule = preg_replace( '/^' . $this->getStateKey() . '\//', '', $key ); $caps[ $rule ] = $value; } } } } return $caps; } /** * @return null|\WP_Role * @throws Exception */ public function getRole() { if ( ! $this->role ) { if ( ! $this->getRoleName() ) { throw new Exception( 'roleName for role_manager is not set, please use ->who(roleName) method to set!' ); } $this->role = get_role( $this->getRoleName() ); } return $this->role; } /** * @return null|string */ public function getRoleName() { return $this->roleName; } public function getStateKey() { return self::$part_name_prefix . $this->getPart(); } public function checkState( $data ) { if ( $this->getValidAccess() ) { $this->setValidAccess( $this->getState() === $data ); } return $this; } public function checkStateAny() { if ( $this->getValidAccess() ) { $args = func_get_args(); $this->checkMulti( 'checkState', true, $args ); } return $this; } /** * Return access value. * @return string */ public function __toString() { return (string) $this->get(); } public function updateMergedCaps( $rule ) { if ( isset( $this->mergedCaps[ $rule ] ) ) { return $this->mergedCaps[ $rule ]; } return $rule; } /** * @return array */ public function getMergedCaps() { return $this->mergedCaps; } } PK<\Q-include/classes/updaters/class-vc-updater.phpnu[auto_updater = $updater; } /** * Getter for manager updater. * * @return Vc_Updating_Manager|bool */ public function updateManager() { return $this->auto_updater; } /** * Get url for version validation * @return string */ public function versionUrl() { return $this->version_url; } /** * Get unique, short-lived download link * * @param deprecated string $license_key * * @return array|boolean JSON response or false if request failed */ public function getDownloadUrl( $license_key = '' ) { $url = $this->getUrl(); $response = wp_remote_get( $url ); if ( is_wp_error( $response ) ) { return false; } return json_decode( $response['body'], true ); } protected function getUrl() { $host = esc_url( vc_license()->getSiteUrl() ); $key = rawurlencode( vc_license()->getLicenseKey() ); $url = $this->download_link_url . '?product=vc&url=' . $host . '&key=' . $key . '&version=' . WPB_VC_VERSION; return $url; } public static function getUpdaterUrl() { return vc_is_network_plugin() ? network_admin_url( 'admin.php?page=vc-updater' ) : admin_url( 'admin.php?page=vc-updater' ); } /** * Get link to newest VC * * @param $reply * @param $package * @param $updater WP_Upgrader * * @return mixed|string|WP_Error */ public function preUpgradeFilter( $reply, $package, $updater ) { $condition1 = isset( $updater->skin->plugin ) && vc_plugin_name() === $updater->skin->plugin; $condition2 = isset( $updater->skin->plugin_info ) && $updater->skin->plugin_info['Name'] === $this->title; if ( ! $condition1 && ! $condition2 ) { return $reply; } $res = $updater->fs_connect( array( WP_CONTENT_DIR ) ); if ( ! $res ) { return new WP_Error( 'no_credentials', __( "Error! Can't connect to filesystem", 'js_composer' ) ); } if ( ! vc_license()->isActivated() ) { if ( vc_is_as_theme() && vc_get_param( 'action' ) !== 'update-selected' ) { return false; } $url = esc_url( self::getUpdaterUrl() ); return new WP_Error( 'no_credentials', __( 'To receive automatic updates license activation is required. Please visit Settings to activate your WPBakery Page Builder.', 'js_composer' ) . ' ' . sprintf( ' %s', __( 'Got WPBakery Page Builder in theme?', 'js_composer' ) ) ); } $updater->strings['downloading_package_url'] = __( 'Getting download link...', 'js_composer' ); $updater->skin->feedback( 'downloading_package_url' ); $response = $this->getDownloadUrl(); if ( ! $response ) { return new WP_Error( 'no_credentials', __( 'Download link could not be retrieved', 'js_composer' ) ); } if ( ! $response['status'] ) { return new WP_Error( 'no_credentials', $response['error'] ); } $updater->strings['downloading_package'] = __( 'Downloading package...', 'js_composer' ); $updater->skin->feedback( 'downloading_package' ); $downloaded_archive = download_url( $response['url'] ); if ( is_wp_error( $downloaded_archive ) ) { return $downloaded_archive; } $plugin_directory_name = dirname( vc_plugin_name() ); // WP will use same name for plugin directory as archive name, so we have to rename it if ( basename( $downloaded_archive, '.zip' ) !== $plugin_directory_name ) { $new_archive_name = dirname( $downloaded_archive ) . '/' . $plugin_directory_name . time() . '.zip'; if ( rename( $downloaded_archive, $new_archive_name ) ) { $downloaded_archive = $new_archive_name; } } return $downloaded_archive; } } PK<\&include/classes/updaters/.updaters.phpnu[PK<\dmm6include/classes/updaters/class-vc-updating-manager.phpnu[current_version = $current_version; $this->update_path = $update_path; $this->plugin_slug = $plugin_slug; $t = explode( '/', $plugin_slug ); $this->slug = str_replace( '.php', '', $t[1] ); // define the alternative API for updating checking add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_update', ) ); // Define the alternative response for information checking add_filter( 'plugins_api', array( $this, 'check_info', ), 10, 3 ); add_action( 'in_plugin_update_message-' . vc_plugin_name(), array( $this, 'addUpgradeMessageLink', ) ); } /** * Add our self-hosted autoupdate plugin to the filter transient * * @param $transient * * @return object $ transient */ public function check_update( $transient ) { // Extra check for 3rd plugins if ( isset( $transient->response[ $this->plugin_slug ] ) ) { return $transient; } // Get the remote version $remote_version = $this->getRemote_version(); // If a newer version is available, add the update if ( version_compare( $this->current_version, $remote_version, '<' ) ) { $obj = new stdClass(); $obj->slug = $this->slug; $obj->new_version = $remote_version; $obj->url = ''; $obj->package = vc_license()->isActivated(); $obj->name = vc_updater()->title; $transient->response[ $this->plugin_slug ] = $obj; } return $transient; } /** * Add our self-hosted description to the filter * * @param bool $false * @param array $action * @param object $arg * * @return bool|object */ public function check_info( $false, $action, $arg ) { if ( isset( $arg->slug ) && $arg->slug === $this->slug ) { $information = $this->getRemote_information(); $array_pattern = array( '/^([\*\s])*(\d\d\.\d\d\.\d\d\d\d[^\n]*)/m', '/^\n+|^[\t\s]*\n+/m', '/\n/', ); $array_replace = array( '

    $2

    ', '
    ', '
    ', ); $information->name = vc_updater()->title; $information->sections = (array) $information->sections; $information->sections['changelog'] = '
    ' . preg_replace( $array_pattern, $array_replace, $information->sections['changelog'] ) . '
    '; return $information; } return $false; } /** * Return the remote version * * @return string $remote_version */ public function getRemote_version() { $request = wp_remote_get( $this->update_path ); if ( ! is_wp_error( $request ) || wp_remote_retrieve_response_code( $request ) === 200 ) { return $request['body']; } return false; } /** * Get information about the remote version * * @return bool|object */ public function getRemote_information() { $request = wp_remote_get( $this->update_path.'information.json' ); if ( ! is_wp_error( $request ) || wp_remote_retrieve_response_code( $request ) === 200 ) { return json_decode( $request['body'] ); } return false; } /** * Shows message on Wp plugins page with a link for updating from envato. */ public function addUpgradeMessageLink() { $is_activated = vc_license()->isActivated(); if ( ! $is_activated ) { $url = esc_url( vc_updater()->getUpdaterUrl() ); $redirect = sprintf( '%s', $url, __( 'settings', 'js_composer' ) ); echo sprintf( ' ' . __( 'To receive automatic updates license activation is required. Please visit %s to activate your WPBakery Page Builder.', 'js_composer' ), $redirect ) . sprintf( ' %s', __( 'Got WPBakery Page Builder in theme?', 'js_composer' ) ); } } } PK<\&3cZZ=include/classes/vendors/plugins/class-vc-vendor-revslider.phpnu[ 'rev_slider_vc', 'name' => __( 'Revolution Slider', 'js_composer' ), 'icon' => 'icon-wpb-revslider', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Place Revolution slider', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Revolution Slider', 'js_composer' ), 'param_name' => 'alias', 'admin_label' => true, 'value' => $revsliders, 'save_always' => true, 'description' => __( 'Select your Revolution Slider.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), ) ); } /** * Replaces id of revslider for frontend editor. * @since 4.3 * * @param $output * * @return string */ public function setId( $output ) { return preg_replace( '/rev_slider_(\d+)_(\d+)/', 'rev_slider_$1_$2' . time() . '_' . self::$instanceIndex ++, $output ); } /** * Mapping settings for lean method. * * @since 4.9 * * @param $tag * * @return array */ public function addShortcodeSettings( $tag ) { $slider = new RevSlider(); $arrSliders = $slider->getArrSliders(); $revsliders = array(); if ( $arrSliders ) { foreach ( $arrSliders as $slider ) { /** @var $slider RevSlider */ $revsliders[ $slider->getTitle() ] = $slider->getAlias(); } } else { $revsliders[ __( 'No sliders found', 'js_composer' ) ] = 0; } // Add fixes for frontend editor to regenerate id return array( 'base' => $tag, 'name' => __( 'Revolution Slider', 'js_composer' ), 'icon' => 'icon-wpb-revslider', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Place Revolution slider', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Revolution Slider', 'js_composer' ), 'param_name' => 'alias', 'admin_label' => true, 'value' => $revsliders, 'save_always' => true, 'description' => __( 'Select your Revolution Slider.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), ); } } PK<\qLL<include/classes/vendors/plugins/class-vc-vendor-jwplayer.phpnu[ 0 ) { $id_zero = time(); foreach ( $pairs as $pair ) { $data = str_replace( $pair, 'jwplayer-' . $id_zero ++, $data ); } } return $data; } public function wrapPlaceholder( $content ) { add_shortcode( 'jwplayer', array( $this, 'renderPlaceholder' ) ); return $content; } public function renderPlaceholder() { return '
    '; } /** * @param $output * * @since 4.3, due to #1065 * * @return string */ public function renderShortcodesPreview( $output ) { $output = str_replace( '][jwplayer', '] [jwplayer', $output ); // fixes jwplayer shortcode regex.. return $output; } /** * @since 4.3 * @todo check it for preview mode (check is it needed) */ public function vc_load_iframe_jscss() { wp_enqueue_script( 'vc_vendor_jwplayer', vc_asset_url( 'js/frontend_editor/vendors/plugins/jwplayer.js' ), array( 'jquery' ), '1.0', true ); } } PK<\V8include/classes/vendors/plugins/class-vc-vendor-wpml.phpnu[ $sitepress->get_current_language() ), $link ); } } } return $link; } public function appendLangToUrlGrid( $link ) { global $sitepress; if ( is_object( $sitepress ) ) { if ( is_string( $link ) && strpos( $link, 'lang' ) === false ) { // add langs for vc_inline/vc_editable requests if ( strpos( $link, 'admin-ajax' ) !== false ) { return add_query_arg( array( 'lang' => $sitepress->get_current_language() ), $link ); } } } return $link; } public function filterMediaId( $id ) { return apply_filters( 'wpml_object_id', $id, 'post', true ); } } PK<\,include/classes/vendors/plugins/.plugins.phpnu[PK<\B}?include/classes/vendors/plugins/class-vc-vendor-mqtranslate.phpnu[languages = $languages; } /** * @since 4.3 */ public function qtransSwitch() { global $q_config; $q_config['js']['qtrans_save'] .= ' var mqtranslate = true; '; } } PK<\/$$>include/classes/vendors/plugins/class-vc-vendor-qtranslate.phpnu[languages = $languages; } public function isValidPostType() { return in_array( get_post_type(), vc_editor_post_types() ); } /** * @since 4.3 */ public function load() { $this->setLanguages(); global $q_config; add_filter( 'vc_frontend_get_page_shortcodes_post_content', array( $this, 'filterPostContent', ) ); add_action( 'vc_backend_editor_render', array( $this, 'enqueueJsBackend', ) ); add_action( 'vc_frontend_editor_render', array( $this, 'enqueueJsFrontend', ) ); add_action( 'vc_frontend_editor_render_template', array( $this, 'vcFrontEndEditorRender', ) ); add_filter( 'vc_nav_controls', array( $this, 'vcNavControls', ) ); add_filter( 'vc_nav_front_controls', array( $this, 'vcNavControlsFrontend', ) ); add_filter( 'vc_frontend_editor_iframe_url', array( $this, 'vcRenderEditButtonLink', ) ); if ( ! vc_is_frontend_editor() ) { add_filter( 'vc_get_inline_url', array( $this, 'vcRenderEditButtonLink', ) ); } $q_lang = vc_get_param( 'qlang' ); if ( is_string( $q_lang ) ) { $q_config['language'] = $q_lang; } add_action( 'init', array( $this, 'qtransPostInit', ), 1000 ); } /** * @since 4.3 */ public function qtransPostInit() { global $q_config; $q_config['js']['qtrans_switch'] = " var swtg= jQuery.extend(true, {}, switchEditors); switchEditors.go = function(id, lang) { if ('content' !== id && 'qtrans_textarea_content' !== id && -1 === id.indexOf('qtrans')) { return swtg.go(id,lang); } id = id || 'qtrans_textarea_content'; lang = lang || 'toggle'; if ( 'toggle' === lang ) { if ( ed && !ed.isHidden() ) lang = 'html'; else lang = 'tmce'; } else if ( 'tinymce' === lang ) lang = 'tmce'; var inst = tinyMCE.get('qtrans_textarea_' + id); var vta = document.getElementById('qtrans_textarea_' + id); var ta = document.getElementById(id); var dom = tinymce.DOM; var wrap_id = 'wp-'+id+'-wrap'; var wrap_id2 = 'wp-qtrans_textarea_content-wrap'; // update merged content if (inst && ! inst.isHidden()) { tinyMCE.triggerSave(); } else { qtrans_save(vta.value); } // check if language is already active if (lang !== 'tmce' && lang !== 'html' && document.getElementById('qtrans_select_'+lang).className === 'wp-switch-editor switch-tmce switch-html') { return; } if (lang !== 'tmce' && lang !== 'html') { document.getElementById('qtrans_select_'+qtrans_get_active_language()).className='wp-switch-editor'; document.getElementById('qtrans_select_'+lang).className='wp-switch-editor switch-tmce switch-html'; } if (lang === 'html') { if ( inst && inst.isHidden() ) return false; if ( inst ) { vta.style.height = inst.getContentAreaContainer().offsetHeight + 20 + 'px'; inst.hide(); } dom.removeClass(wrap_id, 'tmce-active'); dom.addClass(wrap_id, 'html-active'); dom.removeClass(wrap_id2, 'tmce-active'); dom.addClass(wrap_id2, 'html-active'); setUserSetting( 'editor', 'html' ); } else if (lang === 'tmce') { if (inst && ! inst.isHidden()) return false; if ( 'undefined' !== typeof(QTags) ) QTags.closeAllTags('qtrans_textarea_' + id); if ( tinyMCEPreInit.mceInit['qtrans_textarea_'+id] && tinyMCEPreInit.mceInit['qtrans_textarea_'+id].wpautop ) vta.value = this.wpautop(qtrans_use(qtrans_get_active_language(),ta.value)); if (inst) { inst.show(); } else { qtrans_hook_on_tinyMCE('qtrans_textarea_'+id, true); } dom.removeClass(wrap_id, 'html-active'); dom.addClass(wrap_id, 'tmce-active'); dom.removeClass(wrap_id2, 'html-active'); dom.addClass(wrap_id2, 'tmce-active'); setUserSetting('editor', 'tinymce'); } else { // switch content qtrans_assign('qtrans_textarea_'+id,qtrans_use(lang,ta.value)); } } "; $this->qtransSwitch(); } /** * @since 4.3 */ public function qtransSwitch() { global $q_config; $q_config['js']['qtrans_switch'] .= ' jQuery(document).ready(function(){ switchEditors.switchto(document.getElementById("content-html")); }); '; } /** * @since 4.3 */ public function enqueueJsBackend() { if ( $this->isValidPostType() || apply_filters( 'vc_vendor_qtranslate_enqueue_js_backend', false ) ) { wp_enqueue_script( 'vc_vendor_qtranslate_backend', vc_asset_url( 'js/vendors/qtranslate_backend.js' ), array( 'vc-backend-min-js' ), '1.0', true ); } } /** * @since 4.3 */ public function enqueueJsFrontend() { if ( $this->isValidPostType() ) { wp_enqueue_script( 'vc_vendor_qtranslate_frontend', vc_asset_url( 'js/vendors/qtranslate_frontend.js' ), array( 'vc-frontend-editor-min-js' ), '1.0', true ); global $q_config; $q_config['js']['qtrans_save'] = ''; $q_config['js']['qtrans_integrate_category'] = ''; $q_config['js']['qtrans_integrate_title'] = ''; $q_config['js']['qtrans_assign'] = ''; $q_config['js']['qtrans_tinyMCEOverload'] = ''; $q_config['js']['qtrans_wpActiveEditorOverload'] = ''; $q_config['js']['qtrans_updateTinyMCE'] = ''; $q_config['js']['qtrans_wpOnload'] = ''; $q_config['js']['qtrans_editorInit'] = ''; $q_config['js']['qtrans_hook_on_tinyMCE'] = ''; $q_config['js']['qtrans_switch_postbox'] = ''; $q_config['js']['qtrans_switch'] = ''; } } /** * @since 4.3 * @return string */ public function generateSelect() { $output = ''; if ( is_array( $this->languages ) && ! empty( $this->languages ) ) { $output .= ''; } return $output; } /** * @since 4.3 * @return string */ public function generateSelectFrontend() { $output = ''; if ( is_array( $this->languages ) && ! empty( $this->languages ) ) { $output .= ' '; } return $output; } /** * @since 4.3 * * @param $list * * @return array */ public function vcNavControls( $list ) { if ( $this->isValidPostType() ) { if ( is_array( $list ) ) { $list[] = array( 'qtranslate', $this->getControlSelectDropdown(), ); } } return $list; } /** * @since 4.3 * * @param $list * * @return array */ public function vcNavControlsFrontend( $list ) { if ( $this->isValidPostType() ) { if ( is_array( $list ) ) { $list[] = array( 'qtranslate', $this->getControlSelectDropdownFrontend(), ); } } return $list; } /** * @since 4.3 * @return string */ public function getControlSelectDropdown() { return '
  • ' . $this->generateSelect() . '
  • '; } /** * @return string */ public function getControlSelectDropdownFrontend() { return '
  • ' . $this->generateSelectFrontend() . '
  • '; } /** * @since 4.3 * * @param $link * * @return string */ public function vcRenderEditButtonLink( $link ) { return add_query_arg( array( 'qlang' => qtrans_getLanguage() ), $link ); } /** * @since 4.3 */ public function vcFrontendEditorRender() { global $q_config; $output = ''; $q_lang = vc_get_param( 'qlang' ); if ( ! is_string( $q_lang ) ) { $q_lang = $q_config['language']; } $output .= ''; $output .= ''; echo $output; } /** * @since 4.3 * * @param $content * * @return string */ public function filterPostContent( $content ) { return qtrans_useCurrentLanguageIfNotFoundShowAvailable( $content ); } } PK<\K?include/classes/vendors/plugins/class-vc-vendor-woocommerce.phpnu[ __( 'Description', 'woocommerce' ), 'priority' => 10, 'callback' => 'woocommerce_product_description_tab', ); } return $tabs; } /** * @since 4.4 */ public function enqueueJsBackend() { wp_enqueue_script( 'vc_vendor_woocommerce_backend', vc_asset_url( 'js/vendors/woocommerce.js' ), array( 'vc-backend-min-js' ), '1.0', true ); } /** * @since 4.4 */ public function enqueueJsFrontend() { wp_enqueue_script( 'vc_vendor_woocommerce_frontend', vc_asset_url( 'js/vendors/woocommerce.js' ), array( 'vc-frontend-editor-min-js' ), '1.0', true ); } /** * Add settings for shortcodes * * @since 4.9 * * @param $tag * * @return array */ public function addShortcodeSettings( $tag ) { $args = array( 'type' => 'post', 'child_of' => 0, 'parent' => '', 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => false, 'hierarchical' => 1, 'exclude' => '', 'include' => '', 'number' => '', 'taxonomy' => 'product_cat', 'pad_counts' => false, ); $order_by_values = array( '', __( 'Date', 'js_composer' ) => 'date', __( 'ID', 'js_composer' ) => 'ID', __( 'Author', 'js_composer' ) => 'author', __( 'Title', 'js_composer' ) => 'title', __( 'Modified', 'js_composer' ) => 'modified', __( 'Random', 'js_composer' ) => 'rand', __( 'Comment count', 'js_composer' ) => 'comment_count', __( 'Menu order', 'js_composer' ) => 'menu_order', ); $order_way_values = array( '', __( 'Descending', 'js_composer' ) => 'DESC', __( 'Ascending', 'js_composer' ) => 'ASC', ); $settings = array(); switch ( $tag ) { case 'woocommerce_cart': $settings = array( 'name' => __( 'Cart', 'js_composer' ), 'base' => 'woocommerce_cart', 'icon' => 'icon-wpb-woocommerce', 'category' => __( 'WooCommerce', 'js_composer' ), 'description' => __( 'Displays the cart contents', 'js_composer' ), 'show_settings_on_create' => false, 'php_class_name' => 'Vc_WooCommerce_NotEditable', ); break; case 'woocommerce_checkout': /** * @shortcode woocommerce_checkout * @description Used on the checkout page, the checkout shortcode displays the checkout process. * @no_params * @not_editable */ $settings = array( 'name' => __( 'Checkout', 'js_composer' ), 'base' => 'woocommerce_checkout', 'icon' => 'icon-wpb-woocommerce', 'category' => __( 'WooCommerce', 'js_composer' ), 'description' => __( 'Displays the checkout', 'js_composer' ), 'show_settings_on_create' => false, 'php_class_name' => 'Vc_WooCommerce_NotEditable', ); break; case 'woocommerce_order_tracking': /** * @shortcode woocommerce_order_tracking * @description Lets a user see the status of an order by entering their order details. * @no_params * @not_editable */ $settings = array( 'name' => __( 'Order Tracking Form', 'js_composer' ), 'base' => 'woocommerce_order_tracking', 'icon' => 'icon-wpb-woocommerce', 'category' => __( 'WooCommerce', 'js_composer' ), 'description' => __( 'Lets a user see the status of an order', 'js_composer' ), 'show_settings_on_create' => false, 'php_class_name' => 'Vc_WooCommerce_NotEditable', ); break; case 'woocommerce_my_account': /** * @shortcode woocommerce_my_account * @description Shows the ‘my account’ section where the customer can view past orders and update their information. * You can specify the number or order to show, it’s set by default to 15 (use -1 to display all orders.) * * @param order_count integer * Current user argument is automatically set using get_user_by( ‘id’, get_current_user_id() ). */ $settings = array( 'name' => __( 'My Account', 'js_composer' ), 'base' => 'woocommerce_my_account', 'icon' => 'icon-wpb-woocommerce', 'category' => __( 'WooCommerce', 'js_composer' ), 'description' => __( 'Shows the "my account" section', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Order count', 'js_composer' ), 'value' => 15, 'save_always' => true, 'param_name' => 'order_count', 'description' => __( 'You can specify the number or order to show, it\'s set by default to 15 (use -1 to display all orders.)', 'js_composer' ), ), ), ); break; case 'recent_products': /** * @shortcode recent_products * @description Lists recent products – useful on the homepage. The ‘per_page’ shortcode determines how many products * to show on the page and the columns attribute controls how many columns wide the products should be before wrapping. * To learn more about the default ‘orderby’ parameters please reference the WordPress Codex: http://codex.wordpress.org/Class_Reference/WP_Query * * @param per_page integer * @param columns integer * @param orderby array * @param order array */ $settings = array( 'name' => __( 'Recent products', 'js_composer' ), 'base' => 'recent_products', 'icon' => 'icon-wpb-woocommerce', 'category' => __( 'WooCommerce', 'js_composer' ), 'description' => __( 'Lists recent products', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Per page', 'js_composer' ), 'value' => 12, 'save_always' => true, 'param_name' => 'per_page', 'description' => __( 'The "per_page" shortcode determines how many products to show on the page', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Columns', 'js_composer' ), 'value' => 4, 'param_name' => 'columns', 'save_always' => true, 'description' => __( 'The columns attribute controls how many columns wide the products should be before wrapping.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Order by', 'js_composer' ), 'param_name' => 'orderby', 'value' => $order_by_values, 'save_always' => true, 'description' => sprintf( __( 'Select how to sort retrieved products. More at %s.', 'js_composer' ), 'WordPress codex page' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Sort order', 'js_composer' ), 'param_name' => 'order', 'value' => $order_way_values, 'save_always' => true, 'description' => sprintf( __( 'Designates the ascending or descending order. More at %s.', 'js_composer' ), 'WordPress codex page' ), ), ), ); break; case 'featured_products': /** * @shortcode featured_products * @description Works exactly the same as recent products but displays products which have been set as “featured”. * * @param per_page integer * @param columns integer * @param orderby array * @param order array */ $settings = array( 'name' => __( 'Featured products', 'js_composer' ), 'base' => 'featured_products', 'icon' => 'icon-wpb-woocommerce', 'category' => __( 'WooCommerce', 'js_composer' ), 'description' => __( 'Display products set as "featured"', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Per page', 'js_composer' ), 'value' => 12, 'param_name' => 'per_page', 'save_always' => true, 'description' => __( 'The "per_page" shortcode determines how many products to show on the page', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Columns', 'js_composer' ), 'value' => 4, 'param_name' => 'columns', 'save_always' => true, 'description' => __( 'The columns attribute controls how many columns wide the products should be before wrapping.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Order by', 'js_composer' ), 'param_name' => 'orderby', 'value' => $order_by_values, 'save_always' => true, 'description' => sprintf( __( 'Select how to sort retrieved products. More at %s.', 'js_composer' ), 'WordPress codex page' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Sort order', 'js_composer' ), 'param_name' => 'order', 'value' => $order_way_values, 'save_always' => true, 'description' => sprintf( __( 'Designates the ascending or descending order. More at %s.', 'js_composer' ), 'WordPress codex page' ), ), ), ); break; case 'product': /** * @shortcode product * @description Show a single product by ID or SKU. * * @param id integer * @param sku string * If the product isn’t showing, make sure it isn’t set to Hidden in the Catalog Visibility. * To find the Product ID, go to the Product > Edit screen and look in the URL for the postid= . */ $settings = array( 'name' => __( 'Product', 'js_composer' ), 'base' => 'product', 'icon' => 'icon-wpb-woocommerce', 'category' => __( 'WooCommerce', 'js_composer' ), 'description' => __( 'Show a single product by ID or SKU', 'js_composer' ), 'params' => array( array( 'type' => 'autocomplete', 'heading' => __( 'Select identificator', 'js_composer' ), 'param_name' => 'id', 'description' => __( 'Input product ID or product SKU or product title to see suggestions', 'js_composer' ), ), array( 'type' => 'hidden', // This will not show on render, but will be used when defining value for autocomplete 'param_name' => 'sku', ), ), ); break; case 'products': $settings = array( 'name' => __( 'Products', 'js_composer' ), 'base' => 'products', 'icon' => 'icon-wpb-woocommerce', 'category' => __( 'WooCommerce', 'js_composer' ), 'description' => __( 'Show multiple products by ID or SKU.', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Columns', 'js_composer' ), 'value' => 4, 'param_name' => 'columns', 'save_always' => true, ), array( 'type' => 'dropdown', 'heading' => __( 'Order by', 'js_composer' ), 'param_name' => 'orderby', 'value' => $order_by_values, 'std' => 'title', 'save_always' => true, 'description' => sprintf( __( 'Select how to sort retrieved products. More at %s. Default by Title', 'js_composer' ), 'WordPress codex page' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Sort order', 'js_composer' ), 'param_name' => 'order', 'value' => $order_way_values, 'save_always' => true, 'description' => sprintf( __( 'Designates the ascending or descending order. More at %s. Default by ASC', 'js_composer' ), 'WordPress codex page' ), ), array( 'type' => 'autocomplete', 'heading' => __( 'Products', 'js_composer' ), 'param_name' => 'ids', 'settings' => array( 'multiple' => true, 'sortable' => true, 'unique_values' => true, // In UI show results except selected. NB! You should manually check values in backend ), 'save_always' => true, 'description' => __( 'Enter List of Products', 'js_composer' ), ), array( 'type' => 'hidden', 'param_name' => 'skus', ), ), ); break; case 'add_to_cart': /** * @shortcode add_to_cart * @description Show the price and add to cart button of a single product by ID (or SKU). * * @param id integer * @param sku string * @param style string * If the product isn’t showing, make sure it isn’t set to Hidden in the Catalog Visibility. */ $settings = array( 'name' => __( 'Add to cart', 'js_composer' ), 'base' => 'add_to_cart', 'icon' => 'icon-wpb-woocommerce', 'category' => __( 'WooCommerce', 'js_composer' ), 'description' => __( 'Show multiple products by ID or SKU', 'js_composer' ), 'params' => array( array( 'type' => 'autocomplete', 'heading' => __( 'Select identificator', 'js_composer' ), 'param_name' => 'id', 'description' => __( 'Input product ID or product SKU or product title to see suggestions', 'js_composer' ), ), array( 'type' => 'hidden', 'param_name' => 'sku', ), array( 'type' => 'textfield', 'heading' => __( 'Wrapper inline style', 'js_composer' ), 'param_name' => 'style', ), ), ); break; case 'add_to_cart_url': /** * @shortcode add_to_cart_url * @description Echo the URL on the add to cart button of a single product by ID. * * @param id integer * @param sku string */ $settings = array( 'name' => __( 'Add to cart URL', 'js_composer' ), 'base' => 'add_to_cart_url', 'icon' => 'icon-wpb-woocommerce', 'category' => __( 'WooCommerce', 'js_composer' ), 'description' => __( 'Show URL on the add to cart button', 'js_composer' ), 'params' => array( array( 'type' => 'autocomplete', 'heading' => __( 'Select identificator', 'js_composer' ), 'param_name' => 'id', 'description' => __( 'Input product ID or product SKU or product title to see suggestions', 'js_composer' ), ), array( 'type' => 'hidden', 'param_name' => 'sku', ), ), ); break; case 'product_page': /** * @shortcode product_page * @description Show a full single product page by ID or SKU. * * @param id integer * @param sku string */ $settings = array( 'name' => __( 'Product page', 'js_composer' ), 'base' => 'product_page', 'icon' => 'icon-wpb-woocommerce', 'category' => __( 'WooCommerce', 'js_composer' ), 'description' => __( 'Show single product by ID or SKU', 'js_composer' ), 'params' => array( array( 'type' => 'autocomplete', 'heading' => __( 'Select identificator', 'js_composer' ), 'param_name' => 'id', 'description' => __( 'Input product ID or product SKU or product title to see suggestions', 'js_composer' ), ), array( 'type' => 'hidden', 'param_name' => 'sku', ), ), ); break; case 'product_category': /** * @shortcode product_category * @description Show multiple products in a category by slug. * * @param per_page integer * @param columns integer * @param orderby array * @param order array * @param category string * Go to: WooCommerce > Products > Categories to find the slug column. */ // All this move to product $categories = get_categories( $args ); $product_categories_dropdown = array(); $this->getCategoryChildsFull( 0, $categories, 0, $product_categories_dropdown ); $settings = array( 'name' => __( 'Product category', 'js_composer' ), 'base' => 'product_category', 'icon' => 'icon-wpb-woocommerce', 'category' => __( 'WooCommerce', 'js_composer' ), 'description' => __( 'Show multiple products in a category', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Per page', 'js_composer' ), 'value' => 12, 'save_always' => true, 'param_name' => 'per_page', 'description' => __( 'How much items per page to show', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Columns', 'js_composer' ), 'value' => 4, 'save_always' => true, 'param_name' => 'columns', 'description' => __( 'How much columns grid', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Order by', 'js_composer' ), 'param_name' => 'orderby', 'value' => $order_by_values, 'save_always' => true, 'description' => sprintf( __( 'Select how to sort retrieved products. More at %s.', 'js_composer' ), 'WordPress codex page' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Sort order', 'js_composer' ), 'param_name' => 'order', 'value' => $order_way_values, 'save_always' => true, 'description' => sprintf( __( 'Designates the ascending or descending order. More at %s.', 'js_composer' ), 'WordPress codex page' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Category', 'js_composer' ), 'value' => $product_categories_dropdown, 'param_name' => 'category', 'save_always' => true, 'description' => __( 'Product category list', 'js_composer' ), ), ), ); break; case 'product_categories': $settings = array( 'name' => __( 'Product categories', 'js_composer' ), 'base' => 'product_categories', 'icon' => 'icon-wpb-woocommerce', 'category' => __( 'WooCommerce', 'js_composer' ), 'description' => __( 'Display product categories loop', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Number', 'js_composer' ), 'param_name' => 'number', 'description' => __( 'The `number` field is used to display the number of products.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Order by', 'js_composer' ), 'param_name' => 'orderby', 'value' => $order_by_values, 'save_always' => true, 'description' => sprintf( __( 'Select how to sort retrieved products. More at %s.', 'js_composer' ), 'WordPress codex page' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Sort order', 'js_composer' ), 'param_name' => 'order', 'value' => $order_way_values, 'save_always' => true, 'description' => sprintf( __( 'Designates the ascending or descending order. More at %s.', 'js_composer' ), 'WordPress codex page' ), ), array( 'type' => 'textfield', 'heading' => __( 'Columns', 'js_composer' ), 'value' => 4, 'param_name' => 'columns', 'save_always' => true, 'description' => __( 'How much columns grid', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Number', 'js_composer' ), 'param_name' => 'hide_empty', 'description' => __( 'Hide empty', 'js_composer' ), ), array( 'type' => 'autocomplete', 'heading' => __( 'Categories', 'js_composer' ), 'param_name' => 'ids', 'settings' => array( 'multiple' => true, 'sortable' => true, ), 'save_always' => true, 'description' => __( 'List of product categories', 'js_composer' ), ), ), ); break; case 'sale_products': /** * @shortcode sale_products * @description List all products on sale. * * @param per_page integer * @param columns integer * @param orderby array * @param order array */ $settings = array( 'name' => __( 'Sale products', 'js_composer' ), 'base' => 'sale_products', 'icon' => 'icon-wpb-woocommerce', 'category' => __( 'WooCommerce', 'js_composer' ), 'description' => __( 'List all products on sale', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Per page', 'js_composer' ), 'value' => 12, 'save_always' => true, 'param_name' => 'per_page', 'description' => __( 'How much items per page to show', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Columns', 'js_composer' ), 'value' => 4, 'save_always' => true, 'param_name' => 'columns', 'description' => __( 'How much columns grid', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Order by', 'js_composer' ), 'param_name' => 'orderby', 'value' => $order_by_values, 'save_always' => true, 'description' => sprintf( __( 'Select how to sort retrieved products. More at %s.', 'js_composer' ), 'WordPress codex page' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Sort order', 'js_composer' ), 'param_name' => 'order', 'value' => $order_way_values, 'save_always' => true, 'description' => sprintf( __( 'Designates the ascending or descending order. More at %s.', 'js_composer' ), 'WordPress codex page' ), ), ), ); break; case 'best_selling_products': /** * @shortcode best_selling_products * @description List best selling products on sale. * * @param per_page integer * @param columns integer */ $settings = array( 'name' => __( 'Best Selling Products', 'js_composer' ), 'base' => 'best_selling_products', 'icon' => 'icon-wpb-woocommerce', 'category' => __( 'WooCommerce', 'js_composer' ), 'description' => __( 'List best selling products on sale', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Per page', 'js_composer' ), 'value' => 12, 'param_name' => 'per_page', 'save_always' => true, 'description' => __( 'How much items per page to show', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Columns', 'js_composer' ), 'value' => 4, 'param_name' => 'columns', 'save_always' => true, 'description' => __( 'How much columns grid', 'js_composer' ), ), ), ); break; case 'top_rated_products': /** * @shortcode top_rated_products * @description List top rated products on sale. * * @param per_page integer * @param columns integer * @param orderby array * @param order array */ $settings = array( 'name' => __( 'Top Rated Products', 'js_composer' ), 'base' => 'top_rated_products', 'icon' => 'icon-wpb-woocommerce', 'category' => __( 'WooCommerce', 'js_composer' ), 'description' => __( 'List all products on sale', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Per page', 'js_composer' ), 'value' => 12, 'param_name' => 'per_page', 'save_always' => true, 'description' => __( 'How much items per page to show', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Columns', 'js_composer' ), 'value' => 4, 'param_name' => 'columns', 'save_always' => true, 'description' => __( 'How much columns grid', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Order by', 'js_composer' ), 'param_name' => 'orderby', 'value' => $order_by_values, 'save_always' => true, 'description' => sprintf( __( 'Select how to sort retrieved products. More at %s.', 'js_composer' ), 'WordPress codex page' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Sort order', 'js_composer' ), 'param_name' => 'order', 'value' => $order_way_values, 'save_always' => true, 'description' => sprintf( __( 'Designates the ascending or descending order. More at %s.', 'js_composer' ), 'WordPress codex page' ), ), ), ); break; case 'product_attribute': /** * @shortcode product_attribute * @description List products with an attribute shortcode. * * @param per_page integer * @param columns integer * @param orderby array * @param order array * @param attribute string * @param filter string */ $attributes_tax = wc_get_attribute_taxonomies(); $attributes = array(); foreach ( $attributes_tax as $attribute ) { $attributes[ $attribute->attribute_label ] = $attribute->attribute_name; } $settings = array( 'name' => __( 'Product Attribute', 'js_composer' ), 'base' => 'product_attribute', 'icon' => 'icon-wpb-woocommerce', 'category' => __( 'WooCommerce', 'js_composer' ), 'description' => __( 'List products with an attribute shortcode', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Per page', 'js_composer' ), 'value' => 12, 'param_name' => 'per_page', 'save_always' => true, 'description' => __( 'How much items per page to show', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Columns', 'js_composer' ), 'value' => 4, 'param_name' => 'columns', 'save_always' => true, 'description' => __( 'How much columns grid', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Order by', 'js_composer' ), 'param_name' => 'orderby', 'value' => $order_by_values, 'save_always' => true, 'description' => sprintf( __( 'Select how to sort retrieved products. More at %s.', 'js_composer' ), 'WordPress codex page' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Sort order', 'js_composer' ), 'param_name' => 'order', 'value' => $order_way_values, 'save_always' => true, 'description' => sprintf( __( 'Designates the ascending or descending order. More at %s.', 'js_composer' ), 'WordPress codex page' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Attribute', 'js_composer' ), 'param_name' => 'attribute', 'value' => $attributes, 'save_always' => true, 'description' => __( 'List of product taxonomy attribute', 'js_composer' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Filter', 'js_composer' ), 'param_name' => 'filter', 'value' => array( 'empty' => 'empty' ), 'save_always' => true, 'description' => __( 'Taxonomy values', 'js_composer' ), 'dependency' => array( 'callback' => 'vcWoocommerceProductAttributeFilterDependencyCallback', ), ), ), ); break; case 'related_products': /** * @shortcode related_products * @description List related products. * * @param per_page integer * @param columns integer * @param orderby array * @param order array */ /* we need to detect post type to show this shortcode */ global $post, $typenow, $current_screen; $post_type = ''; if ( $post && $post->post_type ) { //we have a post so we can just get the post type from that $post_type = $post->post_type; } elseif ( $typenow ) { //check the global $typenow - set in admin.php $post_type = $typenow; } elseif ( $current_screen && $current_screen->post_type ) { //check the global $current_screen object - set in sceen.php $post_type = $current_screen->post_type; } elseif ( isset( $_REQUEST['post_type'] ) ) { //lastly check the post_type querystring $post_type = sanitize_key( $_REQUEST['post_type'] ); //we do not know the post type! } $settings = array( 'name' => __( 'Related Products', 'js_composer' ), 'base' => 'related_products', 'icon' => 'icon-wpb-woocommerce', 'content_element' => 'product' === $post_type, // disable showing if not product type 'category' => __( 'WooCommerce', 'js_composer' ), 'description' => __( 'List related products', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Per page', 'js_composer' ), 'value' => 12, 'save_always' => true, 'param_name' => 'per_page', 'description' => __( 'Please note: the "per_page" shortcode argument will determine how many products are shown on a page. This will not add pagination to the shortcode. ', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Columns', 'js_composer' ), 'value' => 4, 'save_always' => true, 'param_name' => 'columns', 'description' => __( 'How much columns grid', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Order by', 'js_composer' ), 'param_name' => 'orderby', 'value' => $order_by_values, 'save_always' => true, 'description' => sprintf( __( 'Select how to sort retrieved products. More at %s.', 'js_composer' ), 'WordPress codex page' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Sort order', 'js_composer' ), 'param_name' => 'order', 'value' => $order_way_values, 'save_always' => true, 'description' => sprintf( __( 'Designates the ascending or descending order. More at %s.', 'js_composer' ), 'WordPress codex page' ), ), ), ); break; } return $settings; } /** * Add woocommerce shortcodes and hooks/filters for it. * @since 4.4 */ public function mapShortcodes() { add_action( 'wp_ajax_vc_woocommerce_get_attribute_terms', array( $this, 'getAttributeTermsAjax', ) ); $tags = array( 'woocommerce_cart', 'woocommerce_checkout', 'woocommerce_order_tracking', 'woocommerce_my_account', 'recent_products', 'featured_products', 'product', 'products', 'add_to_cart', 'add_to_cart_url', 'product_page', 'product_category', 'product_categories', 'sale_products', 'best_selling_products', 'top_rated_products', 'product_attribute', 'related_products', ); while ( $tag = current( $tags ) ) { vc_lean_map( $tag, array( $this, 'addShortcodeSettings', ) ); next( $tags ); } //Filters For autocomplete param: //For suggestion: vc_autocomplete_[shortcode_name]_[param_name]_callback add_filter( 'vc_autocomplete_product_id_callback', array( $this, 'productIdAutocompleteSuggester', ), 10, 1 ); // Get suggestion(find). Must return an array add_filter( 'vc_autocomplete_product_id_render', array( $this, 'productIdAutocompleteRender', ), 10, 1 ); // Render exact product. Must return an array (label,value) //For param: ID default value filter add_filter( 'vc_form_fields_render_field_product_id_param_value', array( $this, 'productIdDefaultValue', ), 10, 4 ); // Defines default value for param if not provided. Takes from other param value. //Filters For autocomplete param: //For suggestion: vc_autocomplete_[shortcode_name]_[param_name]_callback add_filter( 'vc_autocomplete_products_ids_callback', array( $this, 'productIdAutocompleteSuggester', ), 10, 1 ); // Get suggestion(find). Must return an array add_filter( 'vc_autocomplete_products_ids_render', array( $this, 'productIdAutocompleteRender', ), 10, 1 ); // Render exact product. Must return an array (label,value) //For param: ID default value filter add_filter( 'vc_form_fields_render_field_products_ids_param_value', array( $this, 'productsIdsDefaultValue', ), 10, 4 ); // Defines default value for param if not provided. Takes from other param value. //Filters For autocomplete param: Exactly Same as "product" shortcode //For suggestion: vc_autocomplete_[shortcode_name]_[param_name]_callback add_filter( 'vc_autocomplete_add_to_cart_id_callback', array( $this, 'productIdAutocompleteSuggester', ), 10, 1 ); // Get suggestion(find). Must return an array add_filter( 'vc_autocomplete_add_to_cart_id_render', array( $this, 'productIdAutocompleteRender', ), 10, 1 ); // Render exact product. Must return an array (label,value) //For param: ID default value filter add_filter( 'vc_form_fields_render_field_add_to_cart_id_param_value', array( $this, 'productIdDefaultValue', ), 10, 4 ); // Defines default value for param if not provided. Takes from other param value. //Filters For autocomplete param: Exactly Same as "product" shortcode //For suggestion: vc_autocomplete_[shortcode_name]_[param_name]_callback add_filter( 'vc_autocomplete_add_to_cart_url_id_callback', array( $this, 'productIdAutocompleteSuggester', ), 10, 1 ); // Get suggestion(find). Must return an array add_filter( 'vc_autocomplete_add_to_cart_url_id_render', array( $this, 'productIdAutocompleteRender', ), 10, 1 ); // Render exact product. Must return an array (label,value) //For param: ID default value filter add_filter( 'vc_form_fields_render_field_add_to_cart_url_id_param_value', array( $this, 'productIdDefaultValue', ), 10, 4 ); // Defines default value for param if not provided. Takes from other param value. //Filters For autocomplete param: Exactly Same as "product" shortcode //For suggestion: vc_autocomplete_[shortcode_name]_[param_name]_callback add_filter( 'vc_autocomplete_product_page_id_callback', array( $this, 'productIdAutocompleteSuggester', ), 10, 1 ); // Get suggestion(find). Must return an array add_filter( 'vc_autocomplete_product_page_id_render', array( $this, 'productIdAutocompleteRender', ), 10, 1 ); // Render exact product. Must return an array (label,value) //For param: ID default value filter add_filter( 'vc_form_fields_render_field_product_page_id_param_value', array( $this, 'productIdDefaultValue', ), 10, 4 ); // Defines default value for param if not provided. Takes from other param value. //Filters For autocomplete param: //For suggestion: vc_autocomplete_[shortcode_name]_[param_name]_callback add_filter( 'vc_autocomplete_product_category_category_callback', array( $this, 'productCategoryCategoryAutocompleteSuggesterBySlug', ), 10, 1 ); // Get suggestion(find). Must return an array add_filter( 'vc_autocomplete_product_category_category_render', array( $this, 'productCategoryCategoryRenderBySlugExact', ), 10, 1 ); // Render exact category by Slug. Must return an array (label,value) //Filters For autocomplete param: //For suggestion: vc_autocomplete_[shortcode_name]_[param_name]_callback add_filter( 'vc_autocomplete_product_categories_ids_callback', array( $this, 'productCategoryCategoryAutocompleteSuggester', ), 10, 1 ); // Get suggestion(find). Must return an array add_filter( 'vc_autocomplete_product_categories_ids_render', array( $this, 'productCategoryCategoryRenderByIdExact', ), 10, 1 ); // Render exact category by id. Must return an array (label,value) //For param: "filter" param value //vc_form_fields_render_field_{shortcode_name}_{param_name}_param add_filter( 'vc_form_fields_render_field_product_attribute_filter_param', array( $this, 'productAttributeFilterParamValue', ), 10, 4 ); // Defines default value for param if not provided. Takes from other param value. } public function mapGridItemShortcodes( array $shortcodes ) { require_once vc_path_dir( 'VENDORS_DIR', 'plugins/woocommerce/class-vc-gitem-woocommerce-shortcode.php' ); require_once vc_path_dir( 'VENDORS_DIR', 'plugins/woocommerce/grid-item-attributes.php' ); $wc_shortcodes = include vc_path_dir( 'VENDORS_DIR', 'plugins/woocommerce/grid-item-shortcodes.php' ); return $shortcodes + $wc_shortcodes; } /** * Defines default value for param if not provided. Takes from other param value. * @since 4.4 * * @param array $param_settings * @param $current_value * @param $map_settings * @param $atts * * @return array */ public function productAttributeFilterParamValue( $param_settings, $current_value, $map_settings, $atts ) { if ( isset( $atts['attribute'] ) ) { $value = $this->getAttributeTerms( $atts['attribute'] ); if ( is_array( $value ) && ! empty( $value ) ) { $param_settings['value'] = $value; } } return $param_settings; } /** * Get attribute terms hooks from ajax request * @since 4.4 */ public function getAttributeTermsAjax() { vc_user_access() ->checkAdminNonce() ->validateDie() ->wpAny( 'edit_posts', 'edit_pages' ) ->validateDie(); $attribute = vc_post_param( 'attribute' ); $values = $this->getAttributeTerms( $attribute ); $param = array( 'param_name' => 'filter', 'type' => 'checkbox', ); $param_line = ''; foreach ( $values as $label => $v ) { $param_line .= ' '; } die( json_encode( $param_line ) ); } /** * Get attribute terms suggester * @since 4.4 * * @param $attribute * * @return array */ public function getAttributeTerms( $attribute ) { $terms = get_terms( 'pa_' . $attribute ); // return array. take slug $data = array(); if ( ! empty( $terms ) && empty( $terms->errors ) ) { foreach ( $terms as $term ) { $data[ $term->name ] = $term->slug; } } return $data; } /** * Get lists of categories. * @since 4.4 * @deprecated 4.5.3 - due to dublicated category names causes an issue * * @param $parent_id * @param $pos * @param array $array * @param $level * @param array $dropdown - passed by reference */ public function getCategoryChilds( $parent_id, $pos, $array, $level, &$dropdown ) { _deprecated_function( 'Vc_Vendor_Woocommerce::getCategoryChilds', '4.5.3 (will be removed in 5.3)', 'Vc_Vendor_Woocommerce::getCategoryChildsFull' ); for ( $i = $pos; $i < count( $array ); $i ++ ) { if ( $array[ $i ]->category_parent == $parent_id ) { $data = array( str_repeat( '- ', $level ) . $array[ $i ]->name => $array[ $i ]->slug, ); $dropdown = array_merge( $dropdown, $data ); $this->getCategoryChilds( $array[ $i ]->term_id, $i, $array, $level + 1, $dropdown ); } } } /** * Get lists of categories. * @since 4.5.3 * * @param $parent_id * @param array $array * @param $level * @param array $dropdown - passed by reference */ protected function getCategoryChildsFull( $parent_id, $array, $level, &$dropdown ) { $keys = array_keys( $array ); $i = 0; while ( $i < count( $array ) ) { $key = $keys[ $i ]; $item = $array[ $key ]; $i ++; if ( $item->category_parent == $parent_id ) { $name = str_repeat( '- ', $level ) . $item->name; $value = $item->slug; $dropdown[] = array( 'label' => $name . '(' . $item->term_id . ')', 'value' => $value, ); unset( $array[ $key ] ); $array = $this->getCategoryChildsFull( $item->term_id, $array, $level + 1, $dropdown ); $keys = array_keys( $array ); $i = 0; } } return $array; } /** * Replace single product sku to id. * @since 4.4 * * @param $current_value * @param $param_settings * @param $map_settings * @param $atts * * @return bool|string */ public function productIdDefaultValue( $current_value, $param_settings, $map_settings, $atts ) { $value = trim( $current_value ); if ( strlen( trim( $current_value ) ) === 0 && isset( $atts['sku'] ) && strlen( $atts['sku'] ) > 0 ) { $value = $this->productIdDefaultValueFromSkuToId( $atts['sku'] ); } return $value; } /** * Replaces product skus to id's. * @since 4.4 * * @param $current_value * @param $param_settings * @param $map_settings * @param $atts * * @return string */ public function productsIdsDefaultValue( $current_value, $param_settings, $map_settings, $atts ) { $value = trim( $current_value ); if ( strlen( trim( $value ) ) === 0 && isset( $atts['skus'] ) && strlen( $atts['skus'] ) > 0 ) { $data = array(); $skus = $atts['skus']; $skus_array = explode( ',', $skus ); foreach ( $skus_array as $sku ) { $id = $this->productIdDefaultValueFromSkuToId( trim( $sku ) ); if ( is_numeric( $id ) ) { $data[] = $id; } } if ( ! empty( $data ) ) { $values = explode( ',', $value ); $values = array_merge( $values, $data ); $value = implode( ',', $values ); } } return $value; } /** * Suggester for autocomplete by id/name/title/sku * @since 4.4 * * @param $query * * @return array - id's from products with title/sku. */ public function productIdAutocompleteSuggester( $query ) { global $wpdb; $product_id = (int) $query; $post_meta_infos = $wpdb->get_results( $wpdb->prepare( "SELECT a.ID AS id, a.post_title AS title, b.meta_value AS sku FROM {$wpdb->posts} AS a LEFT JOIN ( SELECT meta_value, post_id FROM {$wpdb->postmeta} WHERE `meta_key` = '_sku' ) AS b ON b.post_id = a.ID WHERE a.post_type = 'product' AND ( a.ID = '%d' OR b.meta_value LIKE '%%%s%%' OR a.post_title LIKE '%%%s%%' )", $product_id > 0 ? $product_id : - 1, stripslashes( $query ), stripslashes( $query ) ), ARRAY_A ); $results = array(); if ( is_array( $post_meta_infos ) && ! empty( $post_meta_infos ) ) { foreach ( $post_meta_infos as $value ) { $data = array(); $data['value'] = $value['id']; $data['label'] = __( 'Id', 'js_composer' ) . ': ' . $value['id'] . ( ( strlen( $value['title'] ) > 0 ) ? ' - ' . __( 'Title', 'js_composer' ) . ': ' . $value['title'] : '' ) . ( ( strlen( $value['sku'] ) > 0 ) ? ' - ' . __( 'Sku', 'js_composer' ) . ': ' . $value['sku'] : '' ); $results[] = $data; } } return $results; } /** * Find product by id * @since 4.4 * * @param $query * * @return bool|array */ public function productIdAutocompleteRender( $query ) { $query = trim( $query['value'] ); // get value from requested if ( ! empty( $query ) ) { // get product $product_object = wc_get_product( (int) $query ); if ( is_object( $product_object ) ) { $product_sku = $product_object->get_sku(); $product_title = $product_object->get_title(); $product_id = $product_object->get_id(); $product_sku_display = ''; if ( ! empty( $product_sku ) ) { $product_sku_display = ' - ' . __( 'Sku', 'js_composer' ) . ': ' . $product_sku; } $product_title_display = ''; if ( ! empty( $product_title ) ) { $product_title_display = ' - ' . __( 'Title', 'js_composer' ) . ': ' . $product_title; } $product_id_display = __( 'Id', 'js_composer' ) . ': ' . $product_id; $data = array(); $data['value'] = $product_id; $data['label'] = $product_id_display . $product_title_display . $product_sku_display; return ! empty( $data ) ? $data : false; } return false; } return false; } /** * Return ID of product by provided SKU of product. * @since 4.4 * * @param $query * * @return bool */ public function productIdDefaultValueFromSkuToId( $query ) { $result = $this->productIdAutocompleteSuggesterExactSku( $query ); return isset( $result['value'] ) ? $result['value'] : false; } /** * Find product by SKU * @since 4.4 * * @param $query * * @return bool|array */ public function productIdAutocompleteSuggesterExactSku( $query ) { global $wpdb; $query = trim( $query ); $product_id = $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key='_sku' AND meta_value='%s' LIMIT 1", stripslashes( $query ) ) ); $product_data = get_post( $product_id ); if ( 'product' !== $product_data->post_type ) { return ''; } $product_object = wc_get_product( $product_data ); if ( is_object( $product_object ) ) { $product_sku = $product_object->get_sku(); $product_title = $product_object->get_title(); $product_id = $product_object->get_id(); $product_sku_display = ''; if ( ! empty( $product_sku ) ) { $product_sku_display = ' - ' . __( 'Sku', 'js_composer' ) . ': ' . $product_sku; } $product_title_display = ''; if ( ! empty( $product_title ) ) { $product_title_display = ' - ' . __( 'Title', 'js_composer' ) . ': ' . $product_title; } $product_id_display = __( 'Id', 'js_composer' ) . ': ' . $product_id; $data = array(); $data['value'] = $product_id; $data['label'] = $product_id_display . $product_title_display . $product_sku_display; return ! empty( $data ) ? $data : false; } return false; } /** * Autocomplete suggester to search product category by name/slug or id. * @since 4.4 * * @param $query * @param bool $slug - determines what output is needed * default false - return id of product category * true - return slug of product category * * @return array */ public function productCategoryCategoryAutocompleteSuggester( $query, $slug = false ) { global $wpdb; $cat_id = (int) $query; $query = trim( $query ); $post_meta_infos = $wpdb->get_results( $wpdb->prepare( "SELECT a.term_id AS id, b.name as name, b.slug AS slug FROM {$wpdb->term_taxonomy} AS a INNER JOIN {$wpdb->terms} AS b ON b.term_id = a.term_id WHERE a.taxonomy = 'product_cat' AND (a.term_id = '%d' OR b.slug LIKE '%%%s%%' OR b.name LIKE '%%%s%%' )", $cat_id > 0 ? $cat_id : - 1, stripslashes( $query ), stripslashes( $query ) ), ARRAY_A ); $result = array(); if ( is_array( $post_meta_infos ) && ! empty( $post_meta_infos ) ) { foreach ( $post_meta_infos as $value ) { $data = array(); $data['value'] = $slug ? $value['slug'] : $value['id']; $data['label'] = __( 'Id', 'js_composer' ) . ': ' . $value['id'] . ( ( strlen( $value['name'] ) > 0 ) ? ' - ' . __( 'Name', 'js_composer' ) . ': ' . $value['name'] : '' ) . ( ( strlen( $value['slug'] ) > 0 ) ? ' - ' . __( 'Slug', 'js_composer' ) . ': ' . $value['slug'] : '' ); $result[] = $data; } } return $result; } /** * Search product category by id * @since 4.4 * * @param $query * * @return bool|array */ public function productCategoryCategoryRenderByIdExact( $query ) { $query = $query['value']; $cat_id = (int) $query; $term = get_term( $cat_id, 'product_cat' ); return $this->productCategoryTermOutput( $term ); } /** * Suggester for autocomplete to find product category by id/name/slug but return found product category SLUG * @since 4.4 * * @param $query * * @return array - slug of products categories. */ public function productCategoryCategoryAutocompleteSuggesterBySlug( $query ) { $result = $this->productCategoryCategoryAutocompleteSuggester( $query, true ); return $result; } /** * Search product category by slug. * @since 4.4 * * @param $query * * @return bool|array */ public function productCategoryCategoryRenderBySlugExact( $query ) { $query = $query['value']; $query = trim( $query ); $term = get_term_by( 'slug', $query, 'product_cat' ); return $this->productCategoryTermOutput( $term ); } /** * Return product category value|label array * * @param $term * * @since 4.4 * @return array|bool */ protected function productCategoryTermOutput( $term ) { $term_slug = $term->slug; $term_title = $term->name; $term_id = $term->term_id; $term_slug_display = ''; if ( ! empty( $term_slug ) ) { $term_slug_display = ' - ' . __( 'Sku', 'js_composer' ) . ': ' . $term_slug; } $term_title_display = ''; if ( ! empty( $term_title ) ) { $term_title_display = ' - ' . __( 'Title', 'js_composer' ) . ': ' . $term_title; } $term_id_display = __( 'Id', 'js_composer' ) . ': ' . $term_id; $data = array(); $data['value'] = $term_id; $data['label'] = $term_id_display . $term_title_display . $term_slug_display; return ! empty( $data ) ? $data : false; } public static function getProductsFieldsList() { return array( __( 'SKU', 'js_composer' ) => 'sku', __( 'ID', 'js_composer' ) => 'id', __( 'Price', 'js_composer' ) => 'price', __( 'Regular Price', 'js_composer' ) => 'regular_price', __( 'Sale Price', 'js_composer' ) => 'sale_price', __( 'Price html', 'js_composer' ) => 'price_html', __( 'Reviews count', 'js_composer' ) => 'reviews_count', __( 'Short description', 'js_composer' ) => 'short_description', __( 'Dimensions', 'js_composer' ) => 'dimensions', __( 'Rating count', 'js_composer' ) => 'rating_count', __( 'Weight', 'js_composer' ) => 'weight', __( 'Is on sale', 'js_composer' ) => 'on_sale', __( 'Custom field', 'js_composer' ) => '_custom_', ); } public static function getProductFieldLabel( $key ) { if ( false === self::$product_fields_list ) { self::$product_fields_list = array_flip( self::getProductsFieldsList() ); } return isset( self::$product_fields_list[ $key ] ) ? self::$product_fields_list[ $key ] : ''; } public static function getOrderFieldsList() { return array( __( 'ID', 'js_composer' ) => 'id', __( 'Order number', 'js_composer' ) => 'order_number', __( 'Currency', 'js_composer' ) => 'order_currency', __( 'Total', 'js_composer' ) => 'total', __( 'Status', 'js_composer' ) => 'status', __( 'Payment method', 'js_composer' ) => 'payment_method', __( 'Billing address city', 'js_composer' ) => 'billing_address_city', __( 'Billing address country', 'js_composer' ) => 'billing_address_country', __( 'Shipping address city', 'js_composer' ) => 'shipping_address_city', __( 'Shipping address country', 'js_composer' ) => 'shipping_address_country', __( 'Customer Note', 'js_composer' ) => 'customer_note', __( 'Customer API', 'js_composer' ) => 'customer_api', __( 'Custom field', 'js_composer' ) => '_custom_', ); } public static function getOrderFieldLabel( $key ) { if ( false === self::$order_fields_list ) { self::$order_fields_list = array_flip( self::getOrderFieldsList() ); } return isset( self::$order_fields_list[ $key ] ) ? self::$order_fields_list[ $key ] : ''; } public function yoastSeoCompatibility() { if ( function_exists( 'WC' ) ) { // WC()->frontend_includes(); include_once( WC()->plugin_path() . '/includes/wc-template-functions.php' ); // include_once WC()->plugin_path() . ''; } } } /** * Removes EDIT button in backend and frontend editor * Class Vc_WooCommerce_NotEditable * @since 4.4 */ class Vc_WooCommerce_NotEditable extends WPBakeryShortCode { /** * @since 4.4 * @var array */ protected $controls_list = array( 'clone', 'delete', ); } PK<\26Hk k @include/classes/vendors/plugins/class-vc-vendor-qtranslate-x.phpnu[ ( $q_config['language'] ) ), $link ); } return $link; } public function enqueueJsFrontend() { wp_enqueue_script( 'vc_vendor_qtranslatex_frontend', vc_asset_url( 'js/vendors/qtranslatex_frontend.js' ), array( 'vc-frontend-editor-min-js', 'jquery', ), '1.0', true ); } /** * @return string */ public function generateSelectFrontend() { global $q_config; $output = ''; $output .= ' '; return $output; } /** * @param $list * * @return array */ public function vcNavControlsFrontend( $list ) { if ( is_array( $list ) ) { $list[] = array( 'qtranslatex', '
  • ' . $this->generateSelectFrontend() . '
  • ', ); } return $list; } /** * @param $link * * @return string */ public function vcRenderEditButtonLink( $link ) { global $q_config; $activeLanguage = $q_config['language']; return add_query_arg( array( 'lang' => $activeLanguage ), $link ); } } PK<\}u =include/classes/vendors/plugins/class-vc-vendor-yoast_seo.phpnu[parsedContent ) ) { global $post, $wp_the_query; $wp_the_query->post = $post; // since 4.5.3 to avoid the_post replaces /** * @since 4.4.3 * vc_filter: vc_vendor_yoastseo_filter_results */ do_action( 'vc_vendor_yoastseo_filter_results' ); $this->parsedContent = do_shortcode( shortcode_unautop( $content ) ); wp_reset_query(); } return $this->parsedContent; } /** * @since 4.4 */ public function enqueueJs() { require_once vc_path_dir( 'PARAMS_DIR', 'vc_grid_item/editor/class-vc-grid-item-editor.php' ); if ( get_post_type() === Vc_Grid_Item_Editor::postType() ) { return; } wp_enqueue_script( 'vc_vendor_yoast_js', vc_asset_url( 'js/vendors/yoast.js' ), array( 'yoast-seo-post-scraper' ), WPB_VC_VERSION, true ); } public function frontendEditorBuild() { $vc_yoast_meta_box = $GLOBALS['wpseo_metabox']; remove_action( 'admin_init', array( $GLOBALS['wpseo_meta_columns'], 'setup_hooks', ) ); apply_filters( 'wpseo_use_page_analysis', false ); remove_action( 'add_meta_boxes', array( $vc_yoast_meta_box, 'add_meta_box', ) ); remove_action( 'admin_enqueue_scripts', array( $vc_yoast_meta_box, 'enqueue', ) ); remove_action( 'wp_insert_post', array( $vc_yoast_meta_box, 'save_postdata', ) ); remove_action( 'edit_attachment', array( $vc_yoast_meta_box, 'save_postdata', ) ); remove_action( 'add_attachment', array( $vc_yoast_meta_box, 'save_postdata', ) ); remove_action( 'post_submitbox_start', array( $vc_yoast_meta_box, 'publish_box', ) ); remove_action( 'admin_init', array( $vc_yoast_meta_box, 'setup_page_analysis', ) ); remove_action( 'admin_init', array( $vc_yoast_meta_box, 'translate_meta_boxes', ) ); remove_action( 'admin_footer', array( $vc_yoast_meta_box, 'template_keyword_tab', ) ); } } PK<\yu?include/classes/vendors/plugins/class-vc-vendor-layerslider.phpnu[get_results( ' SELECT id, name, date_c FROM ' . $wpdb->prefix . "layerslider WHERE flag_hidden = '0' AND flag_deleted = '0' ORDER BY date_c ASC LIMIT 999 " ); $layer_sliders = array(); if ( ! empty( $ls ) ) { foreach ( $ls as $slider ) { $layer_sliders[ $slider->name ] = $slider->id; } } else { $layer_sliders[ __( 'No sliders found', 'js_composer' ) ] = 0; } } else { $ls = LS_Sliders::find( array( 'limit' => 999, 'order' => 'ASC', ) ); $layer_sliders = array(); if ( ! empty( $ls ) ) { foreach ( $ls as $slider ) { $layer_sliders[ $slider['name'] ] = $slider['id']; } } else { $layer_sliders[ __( 'No sliders found', 'js_composer' ) ] = 0; } } return array( 'base' => $tag, 'name' => __( 'Layer Slider', 'js_composer' ), 'icon' => 'icon-wpb-layerslider', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Place LayerSlider', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'LayerSlider ID', 'js_composer' ), 'param_name' => 'id', 'admin_label' => true, 'value' => $layer_sliders, 'save_always' => true, 'description' => __( 'Select your LayerSlider.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), ); } } PK<\oam# # 1include/classes/vendors/plugins/acf/shortcode.phpnu[ 'dropdown', 'heading' => __( 'Field name', 'js_composer' ), 'param_name' => 'field_from_' . $group[ $id ], 'value' => $fields_param_value, 'save_always' => true, 'description' => __( 'Select field from group.', 'js_composer' ), 'dependency' => array( 'element' => 'field_group', 'value' => array( (string) $group[ $id ] ), ), ); } return array( 'name' => __( 'Advanced Custom Field', 'js_composer' ), 'base' => 'vc_acf', 'icon' => 'vc_icon-acf', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Advanced Custom Field', 'js_composer' ), 'params' => array_merge( array( array( 'type' => 'dropdown', 'heading' => __( 'Field group', 'js_composer' ), 'param_name' => 'field_group', 'value' => $groups_param_values, 'save_always' => true, 'description' => __( 'Select field group.', 'js_composer' ), ), ), $fields_params, array( array( 'type' => 'checkbox', 'heading' => __( 'Show label', 'js_composer' ), 'param_name' => 'show_label', 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), 'description' => __( 'Enter label to display before key value.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Align', 'js_composer' ), 'param_name' => 'align', 'value' => array( __( 'left', 'js_composer' ) => 'left', __( 'right', 'js_composer' ) => 'right', __( 'center', 'js_composer' ) => 'center', __( 'justify', 'js_composer' ) => 'justify', ), 'description' => __( 'Select alignment.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ) ), ); PK<\MS>include/classes/vendors/plugins/acf/class-vc-acf-shortcode.phpnu[getShortcode(), $atts ); $field_group = $atts['field_group']; $field_key = ''; if ( 0 === strlen( $atts['field_group'] ) ) { $groups = function_exists( 'acf_get_field_groups' ) ? acf_get_field_groups() : apply_filters( 'acf/get_field_groups', array() ); if ( is_array( $groups ) && isset( $groups[0] ) ) { $key = isset( $groups[0]['id'] ) ? 'id' : ( isset( $groups[0]['ID'] ) ? 'ID' : 'id' ); $field_group = $groups[0][ $key ]; } } if ( $field_group ) { $field_key = ! empty( $atts[ 'field_from_' . $field_group ] ) ? $atts[ 'field_from_' . $field_group ] : 'field_from_group_' . $field_group; } $css_class = array(); $css_class[] = 'vc_acf'; if ( $atts['el_class'] ) { $css_class[] = $atts['el_class']; } if ( $atts['align'] ) { $css_class[] = 'vc_txt_align_' . $atts['align']; } $value = ''; if ( $field_key ) { $css_class[] = $field_key; $value = do_shortcode( '[acf field="' . $field_key . '" post_id="' . get_the_ID() . '"]' ); if ( $atts['show_label'] ) { $field = get_field_object( $field_key ); $label = is_array( $field ) && isset( $field['label'] ) ? '' . $field['label'] . ': ' : ''; $value = $label . $value; } } $css_string = implode( ' ', $css_class ); $output = '
    ' . $value . '
    '; return $output; } } PK<\b H <include/classes/vendors/plugins/acf/grid-item-shortcodes.phpnu[ 'dropdown', 'heading' => __( 'Field name', 'js_composer' ), 'param_name' => 'field_from_' . $group[ $id ], 'value' => $fields_param_value, 'save_always' => true, 'description' => __( 'Select field from group.', 'js_composer' ), 'dependency' => array( 'element' => 'field_group', 'value' => array( (string) $group[ $id ] ), ), ); } return array( 'vc_gitem_acf' => array( 'name' => __( 'Advanced Custom Field', 'js_composer' ), 'base' => 'vc_gitem_acf', 'icon' => 'vc_icon-acf', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Advanced Custom Field', 'js_composer' ), 'php_class_name' => 'Vc_Gitem_Acf_Shortcode', 'params' => array_merge( array( array( 'type' => 'dropdown', 'heading' => __( 'Field group', 'js_composer' ), 'param_name' => 'field_group', 'value' => $groups_param_values, 'save_always' => true, 'description' => __( 'Select field group.', 'js_composer' ), ), ), $fields_params, array( array( 'type' => 'checkbox', 'heading' => __( 'Show label', 'js_composer' ), 'param_name' => 'show_label', 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), 'description' => __( 'Enter label to display before key value.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Align', 'js_composer' ), 'param_name' => 'align', 'value' => array( __( 'left', 'js_composer' ) => 'left', __( 'right', 'js_composer' ) => 'right', __( 'center', 'js_composer' ) => 'center', __( 'justify', 'js_composer' ) => 'justify', ), 'description' => __( 'Select alignment.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ) ), 'post_type' => Vc_Grid_Item_Editor::postType(), ), ); PK<\,include/classes/vendors/plugins/acf/.acf.phpnu[PK<\X:k<include/classes/vendors/plugins/acf/grid-item-attributes.phpnu[ null, 'data' => '', ), $data ) ); if ( strstr( $data, 'field_from_group_' ) ) { $group_id = preg_replace( '/(^field_from_group_|_labeled$)/', '', $data ); $fields = function_exists( 'acf_get_fields' ) ? acf_get_fields( $group_id ) : apply_filters( 'acf/field_group/get_fields', array(), $group_id ); $field = is_array( $fields ) && isset( $fields[0] ) ? $fields[0] : false; if ( is_array( $field ) && isset( $field['key'] ) ) { $data = $field['key'] . ( strstr( $data, '_labeled' ) ? '_labeled' : '' ); } } $label = ''; if ( preg_match( '/_labeled$/', $data ) ) { $data = preg_replace( '/_labeled$/', '', $data ); $field = get_field_object( $data ); $label = is_array( $field ) && isset( $field['label'] ) ? '' . $field['label'] . ': ' : ''; } $value = ''; if ( $data ) { $value = do_shortcode( '[acf field="' . $data . '" post_id="' . $post->ID . '"]' ); } return $label . apply_filters( 'vc_gitem_template_attribute_acf_value', $value ); } add_filter( 'vc_gitem_template_attribute_acf', 'vc_gitem_template_attribute_acf', 10, 2 ); PK<\WޔbbDinclude/classes/vendors/plugins/acf/class-vc-gitem-acf-shortcode.phpnu[ '', 'field_group' => '', 'show_label' => '', 'align' => '', ), $atts ) ); if ( 0 === strlen( $field_group ) ) { $groups = function_exists( 'acf_get_field_groups' ) ? acf_get_field_groups() : apply_filters( 'acf/get_field_groups', array() ); if ( is_array( $groups ) && isset( $groups[0] ) ) { $key = isset( $groups[0]['id'] ) ? 'id' : ( isset( $groups[0]['ID'] ) ? 'ID' : 'id' ); $field_group = $groups[0][ $key ]; } } if ( ! empty( $field_group ) ) { $field_key = ! empty( $atts[ 'field_from_' . $field_group ] ) ? $atts[ 'field_from_' . $field_group ] : 'field_from_group_' . $field_group; } if ( 'yes' === $show_label && $field_key ) { $field_key .= '_labeled'; } $css_class = 'vc_gitem-acf' . ( strlen( $el_class ) ? ' ' . $el_class : '' ) . ( strlen( $align ) ? ' vc_gitem-align-' . $align : '' ) . ( strlen( $field_key ) ? ' ' . $field_key : '' ); return '
    ' . '{{ acf' . ( ! empty( $field_key ) ? ':' . $field_key : '' ) . ' }}' . '
    '; } } PK<\%z//?include/classes/vendors/plugins/class-vc-vendor-ninja-forms.phpnu[get_forms(); return array( 'base' => $tag, 'name' => __( 'Ninja Forms', 'js_composer' ), 'icon' => 'icon-wpb-ninjaforms', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Place Ninja Form', 'js_composer' ), 'params' => array( array( 'type' => 'dropdown', 'heading' => __( 'Select ninja form', 'js_composer' ), 'param_name' => 'id', 'value' => $ninja_forms, 'save_always' => true, 'description' => __( 'Choose previously created ninja form from the drop down list.', 'js_composer' ), ), ), ); } private function get_forms() { $ninja_forms = array(); if ( $this->is_ninja_forms_three() ) { $ninja_forms_data = ninja_forms_get_all_forms(); if ( ! empty( $ninja_forms_data ) ) { // Fill array with Name=>Value(ID) foreach ( $ninja_forms_data as $key => $value ) { if ( is_array( $value ) ) { $ninja_forms[ $value['name'] ] = $value['id']; } } } } else { $ninja_forms_data = Ninja_Forms()->form()->get_forms(); if ( ! empty( $ninja_forms_data ) ) { // Fill array with Name=>Value(ID) foreach ( $ninja_forms_data as $form ) { $ninja_forms[ $form->get_setting( 'title' ) ] = $form->get_id(); } } } return $ninja_forms; } private function is_ninja_forms_three() { return ( version_compare( get_option( 'ninja_forms_version', '0.0.0' ), '3.0', '<' ) || get_option( 'ninja_forms_load_deprecated', false ) ); } } PK<\<include/classes/vendors/plugins/woocommerce/.woocommerce.phpnu[PK<\ Dinclude/classes/vendors/plugins/woocommerce/grid-item-shortcodes.phpnu[ array( 'name' => __( 'WooCommerce field', 'js_composer' ), 'base' => 'vc_gitem_wocommerce', 'icon' => 'icon-wpb-woocommerce', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Woocommerce', 'js_composer' ), 'php_class_name' => 'Vc_Gitem_Woocommerce_Shortcode', 'params' => array( array( 'type' => 'dropdown', 'heading' => __( 'Content type', 'js_composer' ), 'param_name' => 'post_type', 'value' => array( __( 'Product', 'js_composer' ) => 'product', __( 'Order', 'js_composer' ) => 'order', ), 'save_always' => true, 'description' => __( 'Select Woo Commerce post type.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Product field name', 'js_composer' ), 'param_name' => 'product_field_key', 'value' => Vc_Vendor_Woocommerce::getProductsFieldsList(), 'dependency' => array( 'element' => 'post_type', 'value' => array( 'product' ), ), 'save_always' => true, 'description' => __( 'Select field from product.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Product custom key', 'js_composer' ), 'param_name' => 'product_custom_key', 'description' => __( 'Enter custom key.', 'js_composer' ), 'dependency' => array( 'element' => 'product_field_key', 'value' => array( '_custom_' ), ), ), array( 'type' => 'dropdown', 'heading' => __( 'Order fields', 'js_composer' ), 'param_name' => 'order_field_key', 'value' => Vc_Vendor_Woocommerce::getOrderFieldsList(), 'dependency' => array( 'element' => 'post_type', 'value' => array( 'order' ), ), 'save_always' => true, 'description' => __( 'Select field from order.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Order custom key', 'js_composer' ), 'param_name' => 'order_custom_key', 'dependency' => array( 'element' => 'order_field_key', 'value' => array( '_custom_' ), ), 'description' => __( 'Enter custom key.', 'js_composer' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Show label', 'js_composer' ), 'param_name' => 'show_label', 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), 'save_always' => true, 'description' => __( 'Enter label to display before key value.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Align', 'js_composer' ), 'param_name' => 'align', 'value' => array( __( 'left', 'js_composer' ) => 'left', __( 'right', 'js_composer' ) => 'right', __( 'center', 'js_composer' ) => 'center', __( 'justify', 'js_composer' ) => 'justify', ), 'save_always' => true, 'description' => __( 'Select alignment.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), 'post_type' => Vc_Grid_Item_Editor::postType(), ), ); PK<\6[mDinclude/classes/vendors/plugins/woocommerce/grid-item-attributes.phpnu[ null, 'data' => '', ), $data ) ); require_once WC()->plugin_path() . '/includes/abstracts/abstract-wc-product.php'; $product = new WC_Product( $post ); if ( preg_match( '/_labeled$/', $data ) ) { $data = preg_replace( '/_labeled$/', '', $data ); $label = apply_filters( 'vc_gitem_template_attribute_woocommerce_product_' . $data . '_label', Vc_Vendor_Woocommerce::getProductFieldLabel( $data ) . ': ' ); } switch ( $data ) { case 'id': $value = (int) $product->is_type( 'variation' ) ? $product->get_id() : $product->id; break; case 'sku': $value = $product->get_sku(); break; case 'price': $value = wc_price( $product->get_price() ); break; case 'regular_price': $value = wc_price( $product->get_regular_price() ); break; case 'sale_price': $value = wc_price( $product->get_sale_price() ); break; case 'price_html': $value = $product->get_price_html(); break; case 'reviews_count': $value = count( get_comments( array( 'post_id' => $post->ID, 'approve' => 'approve' ) ) ); break; case 'short_description': $value = apply_filters( 'woocommerce_short_description', get_post( $product->get_id() )->post_excerpt ); break; case 'dimensions': $units = get_option( 'woocommerce_dimension_unit' ); $value = $product->length . $units . 'x' . $product->width . $units . 'x' . $product->height . $units; break; case 'rating_count': $value = $product->get_rating_count(); break; case 'weight': $value = $product->get_weight() ? wc_format_decimal( $product->get_weight(), 2 ) : ''; break; case 'on_sale': $value = $product->is_on_sale() ? 'yes' : 'no'; // TODO: change break; default: $value = $product->$data; } return strlen( $value ) > 0 ? $label . apply_filters( 'vc_gitem_template_attribute_woocommerce_product_' . $data . '_value', $value ) : ''; } /** * Gte woocommerce data for order * * @param $value * @param $data * * @return string */ function vc_gitem_template_attribute_woocommerce_order( $value, $data ) { $label = ''; /** * @var null|Wp_Post $post ; * @var string $data ; */ extract( array_merge( array( 'post' => null, 'data' => '', ), $data ) ); require_once WC()->plugin_path() . '/includes/class-wc-order.php'; $order = new WC_Order( $post->ID ); if ( preg_match( '/_labeled$/', $data ) ) { $data = preg_replace( '/_labeled$/', '', $data ); $label = apply_filters( 'vc_gitem_template_attribute_woocommerce_order_' . $data . '_label', Vc_Vendor_Woocommerce::getOrderFieldLabel( $data ) . ': ' ); } switch ( $data ) { case 'id': $value = $order->id; break; case 'order_number': $value = $order->get_order_number(); break; case 'total': $value = sprintf( get_woocommerce_price_format(), wc_format_decimal( $order->get_total(), 2 ), $order->order_currency ); break; case 'payment_method': $value = $order->payment_method_title; break; case 'billing_address_city': $value = $order->billing_city; break; case 'billing_address_country': $value = $order->billing_country; break; case 'shipping_address_city': $value = $order->shipping_city; break; case 'shipping_address_country': $value = $order->shipping_country; break; default: $value = $order->$data; } return strlen( $value ) > 0 ? $label . apply_filters( 'vc_gitem_template_attribute_woocommerce_order_' . $data . '_value', $value ) : ''; } /** * Get woocommerce product add to cart url. * * @param $value * @param $data * * @since 4.5 * * @return string */ function vc_gitem_template_attribute_woocommerce_product_link( $value, $data ) { /** * @var null|Wp_Post $post ; * @var string $data ; */ extract( array_merge( array( 'post' => null, 'data' => '', ), $data ) ); $link = do_shortcode( '[add_to_cart_url id="' . $post->ID . '"]' ); return apply_filters( 'vc_gitem_template_attribute_woocommerce_product_link_value', $link ); } add_filter( 'vc_gitem_template_attribute_woocommerce_product', 'vc_gitem_template_attribute_woocommerce_product', 10, 2 ); add_filter( 'vc_gitem_template_attribute_woocommerce_order', 'vc_gitem_template_attribute_woocommerce_order', 10, 2 ); add_filter( 'vc_gitem_template_attribute_woocommerce_product_link', 'vc_gitem_template_attribute_woocommerce_product_link', 10, 2 ); PK<\z  Ainclude/classes/vendors/plugins/woocommerce/grid-item-filters.phpnu[ID . '"]' ) . '" class="' . esc_attr( $css_class ) . '" data-product_id="' . esc_attr( vc_gitem_template_attribute_woocommerce_product( '', array( 'post' => $post, 'data' => 'id', ) ) ) . '"' . ' data-product_sku="' . esc_attr( vc_gitem_template_attribute_woocommerce_product( '', array( 'post' => $post, 'data' => 'sku', ) ) ) . '" data-product-quantity="1"'; } return $link; } /**¬ * Remove target as useless for add to cart link. * * @param $link * @param $atts * @param $post * * @since 4.5 * * @return string */ function vc_gitem_post_data_get_link_real_target_woocommerce( $link, $atts, $post ) { return 'woo_add_to_card' === $link ? '' : $link; } function vc_gitem_zone_image_block_link_woocommerce( $image_block, $link, $css_class ) { if ( 'woo_add_to_card' === $link ) { $css_class .= ' add_to_cart_button vc-gitem-link-ajax product_type_simple'; return ''; } return $image_block; } PK<\pTinclude/classes/vendors/plugins/woocommerce/class-vc-gitem-woocommerce-shortcode.phpnu[ '', 'post_type' => 'product', 'product_field_key' => 'sku', 'product_custom_key' => '', 'order_field_key' => 'order_number', 'order_custom_key' => '', 'show_label' => '', 'align' => '', ), $atts ); extract( $atts ); if ( 'product' === $post_type ) { $key = '_custom_' === $product_field_key ? $product_custom_key : $product_field_key; } elseif ( 'order' === $post_type ) { $key = '_custom_' === $order_field_key ? $order_custom_key : $order_field_key; } if ( 'yes' === $show_label ) { $key .= '_labeled'; } $css_class = 'vc_gitem-woocommerce vc_gitem-woocommerce-' . $post_type . '-' . $key . ( strlen( $el_class ) ? ' ' . $el_class : '' ) . ( strlen( $align ) ? ' vc_gitem-align-' . $align : '' ); return '
    ' . '{{ woocommerce_' . $post_type . ':' . $key . ' }}' . '
    '; } } PK<\_2Ainclude/classes/vendors/plugins/class-vc-vendor-contact-form7.phpnu[post_title ] = $cform->ID; } } else { $contact_forms[ __( 'No contact forms found', 'js_composer' ) ] = 0; } return array( 'base' => $tag, 'name' => __( 'Contact Form 7', 'js_composer' ), 'icon' => 'icon-wpb-contactform7', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Place Contact Form7', 'js_composer' ), 'params' => array( array( 'type' => 'dropdown', 'heading' => __( 'Select contact form', 'js_composer' ), 'param_name' => 'id', 'value' => $contact_forms, 'save_always' => true, 'description' => __( 'Choose previously created contact form from the drop down list.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Search title', 'js_composer' ), 'param_name' => 'title', 'admin_label' => true, 'description' => __( 'Enter optional title to search if no ID selected or cannot find by ID.', 'js_composer' ), ), ), ); } } PK<\TJinclude/classes/vendors/plugins/class-vc-vendor-advanced-custom-fields.phpnu[isValidPostType( $post_type ) ) { $this->registerBackendJavascript(); $this->registerBackendCss(); // B.C: visual_composer()->registerAdminCss(); visual_composer()->registerAdminJavascript(); // meta box to render add_meta_box( 'wpb_visual_composer', __( 'WPBakery Page Builder', 'js_composer' ), array( $this, 'renderEditor', ), $post_type, 'normal', 'high' ); } } /** * Output html for backend editor meta box. * * @param null|Wp_Post $post * * @return bool */ public function renderEditor( $post = null ) { /** * TODO: setter/getter for $post */ if ( ! is_object( $post ) || 'WP_Post' !== get_class( $post ) || ! isset( $post->ID ) ) { return false; } $this->post = $post; $post_custom_css = strip_tags( get_post_meta( $post->ID, '_wpb_post_custom_css', true ) ); $this->post_custom_css = $post_custom_css; vc_include_template( 'editors/backend_editor.tpl.php', array( 'editor' => $this, 'post' => $this->post, ) ); add_action( 'admin_footer', array( $this, 'renderEditorFooter', ) ); do_action( 'vc_backend_editor_render' ); return true; } /** * Output required html and js content for VC editor. * * Here comes panels, modals and js objects with data for mapped shortcodes. */ public function renderEditorFooter() { vc_include_template( 'editors/partials/backend_editor_footer.tpl.php', array( 'editor' => $this, 'post' => $this->post, ) ); do_action( 'vc_backend_editor_footer_render' ); } /** * Check is post type is valid for rendering VC backend editor. * * @param string $type * * @return bool */ public function isValidPostType( $type = '' ) { if ( 'vc_grid_item' === $type ) { return false; } return vc_check_post_type( ! empty( $type ) ? $type : get_post_type() ); } /** * Enqueue required javascript libraries and css files. * * This method also setups reminder about license activation. * * @since 4.2 * @access public */ public function printScriptsMessages() { if ( ! vc_is_frontend_editor() && $this->isValidPostType( get_post_type() ) ) { $this->enqueueEditorScripts(); } } /** * Enqueue required javascript libraries and css files. * * @since 4.8 * @access public */ public function enqueueEditorScripts() { if ( $this->editorEnabled() ) { $this->enqueueJs(); $this->enqueueCss(); WPBakeryShortCodeFishBones::enqueueCss(); WPBakeryShortCodeFishBones::enqueueJs(); } else { wp_enqueue_script( 'vc-backend-actions-js' ); $this->enqueueCss(); //needed for navbar @todo split } do_action( 'vc_backend_editor_enqueue_js_css' ); } public function registerBackendJavascript() { // editor can be disabled but fe can be enabled. so we currently need this file. @todo maybe make backend-disabled.min.js wp_register_script( 'vc-backend-actions-js', vc_asset_url( 'js/dist/backend-actions.min.js' ), array( 'jquery', 'backbone', 'underscore', ), WPB_VC_VERSION, true ); wp_register_script( 'vc-backend-min-js', vc_asset_url( 'js/dist/backend.min.js' ), array( 'vc-backend-actions-js' ), WPB_VC_VERSION, true ); // used in tta shortcodes, and panels. wp_register_script( 'vc_accordion_script', vc_asset_url( 'lib/vc_accordion/vc-accordion.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true ); wp_register_script( 'wpb_php_js', vc_asset_url( 'lib/php.default/php.default.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true ); // used as polyfill for JSON.stringify and etc wp_register_script( 'wpb_json-js', vc_asset_url( 'lib/bower/json-js/json2.min.js' ), array(), WPB_VC_VERSION, true ); // used in post settings editor wp_register_script( 'ace-editor', vc_asset_url( 'lib/bower/ace-builds/src-min-noconflict/ace.js' ), array( 'jquery' ), WPB_VC_VERSION, true ); wp_register_script( 'webfont', '//ajax.googleapis.com/ajax/libs/webfont/1.4.7/webfont.js' ); // Google Web Font CDN wp_localize_script( 'vc-backend-actions-js', 'i18nLocale', visual_composer()->getEditorsLocale() ); } public function registerBackendCss() { wp_register_style( 'js_composer', vc_asset_url( 'css/js_composer_backend_editor.min.css' ), array(), WPB_VC_VERSION, false ); if ( $this->editorEnabled() ) { /** * @deprecated, used for accordions/tabs/tours */ wp_register_style( 'ui-custom-theme', vc_asset_url( 'css/ui-custom-theme/jquery-ui-less.custom.min.css' ), array(), WPB_VC_VERSION ); /** * @todo check vc_add-element-deprecated-warning for fa icon usage ( set to our font ) * also used in vc_icon shortcode */ wp_register_style( 'font-awesome', vc_asset_url( 'lib/bower/font-awesome/css/font-awesome.min.css' ), array(), WPB_VC_VERSION ); /** * @todo check for usages * definetelly used in edit form param: css_animation, but curreny vc_add_shortcode_param doesn't accept css [ @todo refactor that ] */ wp_register_style( 'animate-css', vc_asset_url( 'lib/bower/animate-css/animate.min.css' ), array(), WPB_VC_VERSION ); } } public function enqueueJs() { $wp_dependencies = array( 'jquery', 'underscore', 'backbone', 'media-views', 'media-editor', 'wp-pointer', 'mce-view', 'wp-color-picker', 'jquery-ui-sortable', 'jquery-ui-droppable', 'jquery-ui-draggable', 'jquery-ui-autocomplete', 'jquery-ui-resizable', // used in @deprecated tabs 'jquery-ui-tabs', 'jquery-ui-accordion', ); $dependencies = array( 'vc_accordion_script', 'wpb_php_js', // used in our files [e.g. edit form saving sprintf] 'wpb_json-js', 'ace-editor', 'webfont', 'vc-backend-min-js', ); // This workaround will allow to disable any of dependency on-the-fly foreach ( $wp_dependencies as $dependency ) { wp_enqueue_script( $dependency ); } foreach ( $dependencies as $dependency ) { wp_enqueue_script( $dependency ); } } public function enqueueCss() { $wp_dependencies = array( 'wp-color-picker', 'farbtastic', // deprecated for tabs/accordion 'ui-custom-theme', // used in deprecated message and also in vc-icon shortcode 'font-awesome', // used in css_animation edit form param 'animate-css', ); $dependencies = array( 'js_composer', ); // This workaround will allow to disable any of dependency on-the-fly foreach ( $wp_dependencies as $dependency ) { wp_enqueue_style( $dependency ); } foreach ( $dependencies as $dependency ) { wp_enqueue_style( $dependency ); } } /** * @return bool */ public function editorEnabled() { return vc_user_access()->part( 'backend_editor' )->can()->get(); } } PK<\S; YY7include/classes/editors/popups/class-vc-edit-layout.phpnu[ $vc_row_layouts, ) ); } } PK<\*  ?include/classes/editors/popups/class-vc-preset-panel-editor.phpnu[initialized ) { return; } $this->initialized = true; } /** * @since 5.2 */ public function renderUIPreset() { vc_include_template( 'editors/popups/vc_ui-panel-preset.tpl.php', array( 'box' => $this, ) ); return ''; } /** * Get list of all presets for specific shortcode * * @since 5.2 * * * @return array E.g. array(id1 => title1, id2 => title2, ...) */ public function listPresets() { $list = array(); $args = array( 'post_type' => 'vc_settings_preset', 'orderby' => array( 'post_date' => 'DESC' ), 'posts_per_page' => - 1, ); $posts = get_posts( $args ); foreach ( $posts as $post ) { $presetParentName = self::constructPresetParent( $post->post_mime_type ); $list[ $post->ID ] = array( 'title' => $post->post_title, 'parent' => $presetParentName, ); } return $list; } /** * Single preset html * * @since 5.2 * * * @return string */ public function getPresets() { $listPresets = $this->listPresets(); $output = ''; foreach ( $listPresets as $presetId => $preset ) { $output .= '
    '; $output .= '
    '; $output .= ''; $output .= '
    '; $output .= ''; $output .= ''; $output .= '
    '; $output .= '
    '; $output .= '
    '; } return $output; } /** * Get preset parent shortcode name from post mime type * * @since 5.2 * * @param $presetMimeType * * @return string */ public static function constructPresetParent( $presetMimeType ) { return str_replace( '-', '_', str_replace( 'vc-settings-preset/', '', $presetMimeType ) ); } } PK<\*include/classes/editors/popups/.popups.phpnu[PK<\jߩ9include/classes/editors/popups/class-vc-post-settings.phpnu[editor = $editor; } /** * @return Vc_Editor_Interface */ public function editor() { return $this->editor; } /** * */ public function renderUITemplate() { vc_include_template( 'editors/popups/vc_ui-panel-post-settings.tpl.php', array( 'box' => $this, ) ); } } PK<\54ssBinclude/classes/editors/popups/class-vc-templates-panel-editor.phpnu[initialized ) { return; } $this->initialized = true; add_filter( 'vc_load_default_templates_welcome_block', array( $this, 'loadDefaultTemplatesLimit', ) ); add_filter( 'vc_templates_render_category', array( $this, 'renderTemplateBlock', ), 10 ); add_filter( 'vc_templates_render_template', array( $this, 'renderTemplateWindow', ), 10, 2 ); /** * Ajax methods * 'vc_save_template' -> saving content as template * 'vc_backend_load_template' -> loading template content for backend * 'vc_frontend_load_template' -> loading template content for frontend * 'vc_delete_template' -> deleting template by index */ add_action( 'wp_ajax_vc_save_template', array( $this, 'save', ) ); add_action( 'wp_ajax_vc_backend_load_template', array( $this, 'renderBackendTemplate', ) ); add_action( 'wp_ajax_vc_frontend_load_template', array( $this, 'renderFrontendTemplate', ) ); add_action( 'wp_ajax_vc_load_template_preview', array( $this, 'renderTemplatePreview', ) ); add_action( 'wp_ajax_vc_delete_template', array( $this, 'delete', ) ); /* add_action( 'vc-render-templates-preview-template', array( $this, 'addScriptsToTemplatePreview', ) );*/ } public function addBodyClassTemplatePreview() { return 'vc_general-template-preview'; } public function renderTemplateBlock( $category ) { if ( 'my_templates' === $category['category'] ) { $category['output'] = ''; if ( vc_user_access()->part( 'templates' )->checkStateAny( true, null )->get() ) { $category['output'] .= '
    ' . esc_html( __( 'Save current layout as a template', 'js_composer' ) ) . '
    ' . esc_html( __( 'Save layout and reuse it on different sections of this site.', 'js_composer' ) ) . '
    '; } $category['output'] .= '
    '; if ( isset( $category['category_name'] ) ) { $category['output'] .= '

    ' . esc_html( $category['category_name'] ) . '

    '; } if ( isset( $category['category_description'] ) ) { $category['output'] .= '

    ' . esc_html( $category['category_description'] ) . '

    '; } $category['output'] .= '
    '; $category['output'] .= '
    '; if ( ! empty( $category['templates'] ) ) { foreach ( $category['templates'] as $template ) { $category['output'] .= $this->renderTemplateListItem( $template ); } } $category['output'] .= '
    '; } else { if ( 'default_templates' === $category['category'] ) { $category['output'] = '
    '; if ( isset( $category['category_name'] ) ) { $category['output'] .= '

    ' . esc_html( $category['category_name'] ) . '

    '; } if ( isset( $category['category_description'] ) ) { $category['output'] .= '

    ' . esc_html( $category['category_description'] ) . '

    '; } $category['output'] .= '
    '; $category['output'] .= '
    '; if ( ! empty( $category['templates'] ) ) { foreach ( $category['templates'] as $template ) { $category['output'] .= $this->renderTemplateListItem( $template ); } } $category['output'] .= '
    '; } } return $category; } /** Output rendered template in new panel dialog * @since 4.4 * * @param $template_name * @param $template_data * * @return string */ function renderTemplateWindow( $template_name, $template_data ) { if ( 'my_templates' === $template_data['type'] ) { return $this->renderTemplateWindowMyTemplates( $template_name, $template_data ); } else { if ( 'default_templates' === $template_data['type'] ) { return $this->renderTemplateWindowDefaultTemplates( $template_name, $template_data ); } } return $template_name; } /** * @since 4.4 * * @param $template_name * @param $template_data * * @return string */ public function renderTemplateWindowMyTemplates( $template_name, $template_data ) { ob_start(); $template_id = esc_attr( $template_data['unique_id'] ); $template_id_hash = md5( $template_id ); // needed for jquery target for TTA $template_name = esc_html( $template_name ); $preview_template_title = esc_attr__( 'Preview template', 'js_composer' ); $add_template_title = esc_attr__( 'Add template', 'js_composer' ); $deleteControlRender = ''; if ( vc_user_access()->part( 'templates' )->checkStateAny( true, null )->get() ) { $delete_template_title = esc_attr__( 'Delete template', 'js_composer' ); $deleteControlRender = << DATA; } echo <<$template_name
    $deleteControlRender
    HTML; return ob_get_clean(); } /** * @since 4.4 * * @param $template_name * @param $template_data * * @return string */ public function renderTemplateWindowDefaultTemplates( $template_name, $template_data ) { ob_start(); $template_id = esc_attr( $template_data['unique_id'] ); $template_id_hash = md5( $template_id ); // needed for jquery target for TTA $template_name = esc_html( $template_name ); $preview_template_title = esc_attr__( 'Preview template', 'js_composer' ); $add_template_title = esc_attr__( 'Add template', 'js_composer' ); echo <<$template_name
    HTML; return ob_get_clean(); } /** * @since 4.4 * vc_filter: vc_templates_render_frontend_template - called when unknown template received to render in frontend. */ function renderFrontendTemplate() { vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'edit_posts', 'edit_pages' )->validateDie()->part( 'templates' )->can()->validateDie(); add_filter( 'vc_frontend_template_the_content', array( $this, 'frontendDoTemplatesShortcodes', ) ); $template_id = vc_post_param( 'template_unique_id' ); $template_type = vc_post_param( 'template_type' ); add_action( 'wp_print_scripts', array( $this, 'addFrontendTemplatesShortcodesCustomCss', ) ); if ( '' === $template_id ) { die( 'Error: Vc_Templates_Panel_Editor::renderFrontendTemplate:1' ); } WPBMap::addAllMappedShortcodes(); if ( 'my_templates' === $template_type ) { $saved_templates = get_option( $this->option_name ); vc_frontend_editor()->setTemplateContent( $saved_templates[ $template_id ]['template'] ); vc_frontend_editor()->enqueueRequired(); vc_include_template( 'editors/frontend_template.tpl.php', array( 'editor' => vc_frontend_editor(), ) ); die(); } else { if ( 'default_templates' === $template_type ) { $this->renderFrontendDefaultTemplate(); } else { echo apply_filters( 'vc_templates_render_frontend_template', $template_id, $template_type ); } } die(); // no needs to do anything more. optimization. } /** * Load frontend default template content by index * @since 4.4 */ public function renderFrontendDefaultTemplate() { $template_index = (int) vc_post_param( 'template_unique_id' ); $data = $this->getDefaultTemplate( $template_index ); if ( ! $data ) { die( 'Error: Vc_Templates_Panel_Editor::renderFrontendDefaultTemplate:1' ); } vc_frontend_editor()->setTemplateContent( trim( $data['content'] ) ); vc_frontend_editor()->enqueueRequired(); vc_include_template( 'editors/frontend_template.tpl.php', array( 'editor' => vc_frontend_editor(), ) ); die(); } /** * @since 4.7 */ public function renderUITemplate() { vc_include_template( 'editors/popups/vc_ui-panel-templates.tpl.php', array( 'box' => $this, ) ); return ''; } /** * @since 4.4 */ public function save() { vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'edit_posts', 'edit_pages' )->validateDie()->part( 'templates' )->checkStateAny( true, null )->validateDie(); $template_name = vc_post_param( 'template_name' ); $template = vc_post_param( 'template' ); if ( ! isset( $template_name ) || '' === trim( $template_name ) || ! isset( $template ) || '' === trim( $template ) ) { header( ':', true, 500 ); throw new Exception( 'Error: Vc_Templates_Panel_Editor::save:1' ); // @todo set default function for reply } $template_arr = array( 'name' => stripslashes( $template_name ), 'template' => stripslashes( $template ), ); $saved_templates = get_option( $this->option_name ); $template_id = sanitize_title( $template_name ) . '_' . rand(); if ( false === $saved_templates ) { $deprecated = ''; $autoload = 'no'; $new_template = array(); $new_template[ $template_id ] = $template_arr; add_option( $this->option_name, $new_template, $deprecated, $autoload ); } else { $saved_templates[ $template_id ] = $template_arr; update_option( $this->option_name, $saved_templates ); } $template = array( 'name' => $template_arr['name'], 'type' => 'my_templates', 'unique_id' => $template_id, ); echo $this->renderTemplateListItem( $template ); die(); } /** * Loading Any templates Shortcodes for backend by string $template_id from AJAX * @since 4.4 * vc_filter: vc_templates_render_backend_template - called when unknown template requested to render in backend */ public function renderBackendTemplate() { vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'edit_posts', 'edit_pages' )->validateDie()->part( 'templates' )->can()->validateDie(); $template_id = vc_post_param( 'template_unique_id' ); $template_type = vc_post_param( 'template_type' ); if ( ! isset( $template_id, $template_type ) || '' === $template_id || '' === $template_type ) { die( 'Error: Vc_Templates_Panel_Editor::renderBackendTemplate:1' ); } WPBMap::addAllMappedShortcodes(); if ( 'my_templates' === $template_type ) { $saved_templates = get_option( $this->option_name ); $content = trim( $saved_templates[ $template_id ]['template'] ); $content = str_replace( '\"', '"', $content ); $pattern = get_shortcode_regex(); $content = preg_replace_callback( "/{$pattern}/s", 'vc_convert_shortcode', $content ); echo $content; die(); } else { if ( 'default_templates' === $template_type ) { $this->getBackendDefaultTemplate(); die(); } else { echo apply_filters( 'vc_templates_render_backend_template', $template_id, $template_type ); die(); } } } /** * Render new template view as backened editor content. * * @since 4.8 */ public function renderTemplatePreview() { vc_user_access()->checkAdminNonce()->validateDie()->wpAny( array( 'edit_post', (int) vc_request_param( 'post_id' ), ) )->validateDie()->part( 'templates' )->can()->validateDie(); $template_id = vc_request_param( 'template_unique_id' ); $template_type = vc_request_param( 'template_type' ); global $current_user; wp_get_current_user(); if ( ! isset( $template_id, $template_type ) || '' === $template_id || '' === $template_type ) { die( __( 'Error: wrong template id.', 'js_composer' ) ); } WPBMap::addAllMappedShortcodes(); if ( 'my_templates' === $template_type ) { $saved_templates = get_option( $this->option_name ); $content = trim( $saved_templates[ $template_id ]['template'] ); $content = str_replace( '\"', '"', $content ); $pattern = get_shortcode_regex(); $content = preg_replace_callback( "/{$pattern}/s", 'vc_convert_shortcode', $content ); } else { if ( 'default_templates' === $template_type ) { $content = $this->getBackendDefaultTemplate( true ); } else { $content = apply_filters( 'vc_templates_render_backend_template_preview', $template_id, $template_type ); } } vc_include_template( apply_filters( 'vc_render_template_preview_include_template', 'editors/vc_ui-template-preview.tpl.php' ), array( 'content' => $content, 'editorPost' => get_post( vc_request_param( 'post_id' ) ), 'current_user' => $current_user, ) ); die(); } public function registerPreviewScripts() { visual_composer()->registerAdminJavascript(); visual_composer()->registerAdminCss(); vc_backend_editor()->registerBackendJavascript(); vc_backend_editor()->registerBackendCss(); wp_register_script( 'vc_editors-templates-preview-js', vc_asset_url( 'js/editors/templates-preview.js' ), array( 'vc-backend-min-js', ), WPB_VC_VERSION, true ); } /** * Enqueue required scripts for template preview * @since 4.8 */ public function enqueuePreviewScripts() { vc_backend_editor()->enqueueCss(); vc_backend_editor()->enqueueJs(); wp_enqueue_script( 'vc_editors-templates-preview-js' ); } /** * @since 4.4 */ public function delete() { vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'edit_posts', 'edit_pages' )->validateDie()->part( 'templates' )->checkStateAny( true, null )->validateDie(); $template_id = vc_post_param( 'template_id' ); $template_type = vc_post_param( 'template_type' ); if ( ! isset( $template_id ) || '' === $template_id ) { die( 'Error: Vc_Templates_Panel_Editor::delete:1' ); } if ( 'my_templates' === $template_type ) { $saved_templates = get_option( $this->option_name ); unset( $saved_templates[ $template_id ] ); if ( count( $saved_templates ) > 0 ) { update_option( $this->option_name, $saved_templates ); } else { delete_option( $this->option_name ); } wp_send_json_success(); } else { do_action( 'vc_templates_delete_templates', $template_id, $template_type ); } wp_send_json_error(); } /** * @since 4.4 * * @param $templates * * vc_filter: vc_load_default_templates_limit_total - total items to show * * @return array */ public function loadDefaultTemplatesLimit( $templates ) { $start_index = 0; $total_templates_to_show = apply_filters( 'vc_load_default_templates_limit_total', 6 ); return array_slice( $templates, $start_index, $total_templates_to_show ); } /** * Get user templates * * @since 4.12 * @return mixed */ public function getUserTemplates() { return apply_filters( 'vc_get_user_templates', get_option( $this->option_name ) ); } /** * Function to get all templates for display * - with image (optional preview image) * - with unique_id (required for do something for rendering.. ) * - with name (required for display? ) * - with type (required for requesting data in server) * - with category key (optional/required for filtering), if no category provided it will be displayed only in * "All" category type vc_filter: vc_get_user_templates - hook to override "user My Templates" vc_filter: * vc_get_all_templates - hook for override return array(all templates), hook to add/modify/remove more templates, * - this depends only to displaying in panel window (more layouts) * @since 4.4 * @return array - all templates with name/unique_id/category_key(optional)/image */ public function getAllTemplates() { $data = array(); // Here we go.. if ( apply_filters( 'vc_show_user_templates', true ) ) { // We need to get all "My Templates" $user_templates = $this->getUserTemplates(); // this has only 'name' and 'template' key and index 'key' is template id. $arr_category = array( 'category' => 'my_templates', 'category_name' => __( 'My Templates', 'js_composer' ), 'category_description' => __( 'Append previously saved template to the current layout.', 'js_composer' ), 'category_weight' => 10, ); $category_templates = array(); if ( ! empty( $user_templates ) ) { foreach ( $user_templates as $template_id => $template_data ) { $category_templates[] = array( 'unique_id' => $template_id, 'name' => $template_data['name'], 'type' => 'my_templates', // for rendering in backend/frontend with ajax ); } } $arr_category['templates'] = $category_templates; $data[] = $arr_category; } // To get all "Default Templates" $default_templates = $this->getDefaultTemplates(); // this has 'name', 'image_path', 'custom_class', and 'content' as template data if ( ! empty( $default_templates ) ) { $arr_category = array( 'category' => 'default_templates', 'category_name' => __( 'Default Templates', 'js_composer' ), 'category_description' => __( 'Append default template to the current layout.', 'js_composer' ), 'category_weight' => 11, ); $category_templates = array(); foreach ( $default_templates as $template_id => $template_data ) { if ( isset( $template_data['disabled'] ) && $template_data['disabled'] ) { continue; } $category_templates[] = array( 'unique_id' => $template_id, 'name' => $template_data['name'], 'type' => 'default_templates', // for rendering in backend/frontend with ajax 'image' => isset( $template_data['image_path'] ) ? $template_data['image_path'] : false, // preview image 'custom_class' => isset( $template_data['custom_class'] ) ? $template_data['custom_class'] : false, ); } if ( ! empty( $category_templates ) ) { $arr_category['templates'] = $category_templates; $data[] = $arr_category; } } // To get any other 3rd "Custom template" - do this by hook filter 'vc_get_all_templates' return apply_filters( 'vc_get_all_templates', $data ); } /** * Load default templates list and initialize variable * To modify you should use add_filter('vc_load_default_templates','your_custom_function'); * Argument is array of templates data like: * array( * array( * 'name'=>__('My custom template','my_plugin'), * 'image_path'=> preg_replace( '/\s/', '%20', plugins_url( 'images/my_image.png', __FILE__ ) ), // * always use preg replace to be sure that "space" will not break logic * 'custom_class'=>'my_custom_class', // if needed * 'content'=>'[my_shortcode]yeah[/my_shortcode]', // Use HEREDoc better to escape all single-quotes * and double quotes * ), * ... * ); * Also see filters 'vc_load_default_templates_panels' and 'vc_load_default_templates_welcome_block' to modify * templates in panels tab and/or in welcome block. vc_filter: vc_load_default_templates - filter to override * default templates array * @since 4.4 * @return array */ public function loadDefaultTemplates() { if ( ! $this->initialized ) { $this->init(); // add hooks if not added already (fix for in frontend) } if ( ! is_array( $this->default_templates ) ) { require_once vc_path_dir( 'CONFIG_DIR', 'templates.php' ); $templates = apply_filters( 'vc_load_default_templates', $this->default_templates ); $this->default_templates = $templates; do_action( 'vc_load_default_templates_action' ); } return $this->default_templates; } /** * Alias for loadDefaultTemplates * @since 4.4 * @return array - list of default templates */ public function getDefaultTemplates() { return $this->loadDefaultTemplates(); } /** * Get default template data by template index in array. * @since 4.4 * * @param number $template_index * * @return array|bool */ public function getDefaultTemplate( $template_index ) { $this->loadDefaultTemplates(); if ( ! is_numeric( $template_index ) || ! is_array( $this->default_templates ) || ! isset( $this->default_templates[ $template_index ] ) ) { return false; } return $this->default_templates[ $template_index ]; } /** * Add custom template to default templates list ( at end of list ) * $data = array( 'name'=>'', 'image'=>'', 'content'=>'' ) * @since 4.4 * * @param $data * * @return bool true if added, false if failed */ public function addDefaultTemplates( $data ) { if ( is_array( $data ) && ! empty( $data ) && isset( $data['name'], $data['content'] ) ) { if ( ! is_array( $this->default_templates ) ) { $this->default_templates = array(); } $this->default_templates[] = $data; return true; } return false; } /** * Load default template content by index from ajax * @since 4.4 * * @param bool $return | should function return data or not * * @return string */ public function getBackendDefaultTemplate( $return = false ) { $template_index = (int) vc_request_param( 'template_unique_id' ); $data = $this->getDefaultTemplate( $template_index ); if ( ! $data ) { die( 'Error: Vc_Templates_Panel_Editor::getBackendDefaultTemplate:1' ); } if ( $return ) { return trim( $data['content'] ); } else { echo trim( $data['content'] ); die(); } } /** * @since 4.4 * * @param array $data * * @return array */ public function sortTemplatesByCategories( array $data ) { $buffer = $data; uasort( $buffer, array( $this, 'cmpCategory', ) ); return $buffer; } /** * @since 4.4 * * @param array $data * * @return array */ public function sortTemplatesByNameWeight( array $data ) { $buffer = $data; uasort( $buffer, array( $this, 'cmpNameWeight', ) ); return $buffer; } /** * Function should return array of templates categories * @since 4.4 * * @param array $categories * * @return array - associative array of category key => and visible Name */ public function getAllCategoriesNames( array $categories ) { $categories_names = array(); foreach ( $categories as $category ) { if ( isset( $category['category'] ) ) { $categories_names[ $category['category'] ] = isset( $category['category_name'] ) ? $category['category_name'] : $category['category']; } } return $categories_names; } /** * @since 4.4 * @return array */ public function getAllTemplatesSorted() { $data = $this->getAllTemplates(); // firstly we need to sort by categories $data = $this->sortTemplatesByCategories( $data ); // secondly we need to sort templates by their weight or name foreach ( $data as $key => $category ) { $data[ $key ]['templates'] = $this->sortTemplatesByNameWeight( $category['templates'] ); } return $data; } /** * Used to compare two templates by category, category_weight * If category weight is less template will appear in first positions * @since 4.4 * * @param array $a - template one * @param array $b - second template to compare * * @return int */ protected function cmpCategory( $a, $b ) { $a_k = isset( $a['category'] ) ? $a['category'] : '*'; $b_k = isset( $b['category'] ) ? $b['category'] : '*'; $a_category_weight = isset( $a['category_weight'] ) ? $a['category_weight'] : 0; $b_category_weight = isset( $b['category_weight'] ) ? $b['category_weight'] : 0; return $a_category_weight == $b_category_weight ? strcmp( $a_k, $b_k ) : $a_category_weight - $b_category_weight; } /** * @since 4.4 * * @param $a * @param $b * * @return int */ protected function cmpNameWeight( $a, $b ) { $a_k = isset( $a['name'] ) ? $a['name'] : '*'; $b_k = isset( $b['name'] ) ? $b['name'] : '*'; $a_weight = isset( $a['weight'] ) ? $a['weight'] : 0; $b_weight = isset( $b['weight'] ) ? $b['weight'] : 0; return $a_weight == $b_weight ? strcmp( $a_k, $b_k ) : $a_weight - $b_weight; } /** * Calls do_shortcode for templates. * * @param $content * * @return string */ public function frontendDoTemplatesShortcodes( $content ) { return do_shortcode( $content ); } /** * Add custom css from shortcodes from template for template editor. * * Used by action 'wp_print_scripts'. * * @todo move to autoload or else some where. * @since 4.4.3 * */ public function addFrontendTemplatesShortcodesCustomCss() { $output = $shortcodes_custom_css = ''; $shortcodes_custom_css = visual_composer()->parseShortcodesCustomCss( vc_frontend_editor()->getTemplateContent() ); if ( ! empty( $shortcodes_custom_css ) ) { $shortcodes_custom_css = strip_tags( $shortcodes_custom_css ); $output .= ''; } echo $output; } public function addScriptsToTemplatePreview() { // wp_enqueue_script( 'vc-template-preview-script', vc_asset_url( 'js/editors/vc_ui-panel-templates-preview-be.js' ), array( 'vc-backend-min-js' ), WPB_VC_VERSION, true ); } public function renderTemplateListItem( $template ) { $name = isset( $template['name'] ) ? esc_html( $template['name'] ) : esc_html( __( 'No title', 'js_composer' ) ); $template_id = esc_attr( $template['unique_id'] ); $template_id_hash = md5( $template_id ); // needed for jquery target for TTA $template_name = esc_html( $name ); $template_name_lower = esc_attr( vc_slugify( $template_name ) ); $template_type = esc_attr( isset( $template['type'] ) ? $template['type'] : 'custom' ); $custom_class = esc_attr( isset( $template['custom_class'] ) ? $template['custom_class'] : '' ); $output = <<
    HTML; $output .= apply_filters( 'vc_templates_render_template', $name, $template ); $output .= <<
    HTML; return $output; } public function getOptionName() { return $this->option_name; } } PK<\AvAA;include/classes/editors/popups/class-vc-add-element-box.phpnu[
    '; } /** * Single button html template * * @param $params * * @return string */ public function renderButton( $params ) { if ( ! is_array( $params ) || empty( $params ) ) { return ''; } $output = $class = $class_out = $data = $category_css_classes = ''; if ( ! empty( $params['class'] ) ) { $class_ar = $class_at_out = explode( ' ', $params['class'] ); for ( $n = 0; $n < count( $class_ar ); $n ++ ) { $class_ar[ $n ] .= '_nav'; $class_at_out[ $n ] .= '_o'; } $class = ' ' . implode( ' ', $class_ar ); $class_out = ' ' . implode( ' ', $class_at_out ); } if ( isset( $params['_category_ids'] ) ) { foreach ( $params['_category_ids'] as $id ) { $category_css_classes .= ' js-category-' . $id; } } if ( isset( $params['is_container'] ) && true === $params['is_container'] ) { $data .= ' data-is-container="true"'; } $data .= ' data-vc-ui-element="add-element-button"'; $description = ! empty( $params['description'] ) ? '' . htmlspecialchars( $params['description'] ) . '' : ''; $name = '' . htmlspecialchars( stripslashes( $params['name'] ) ) . ''; $output .= '
  • '; return $output; } /** * Get mapped shortcodes list. * * @since 4.4 * @return array */ public function shortcodes() { return apply_filters( 'vc_add_new_elements_to_box', WPBMap::getSortedUserShortCodes() ); } /** * Render list of buttons for each mapped and allowed VC shortcodes. * vc_filter: vc_add_element_box_buttons - hook to override output of getControls method * @see WPBMap::getSortedUserShortCodes * @return mixed|void */ public function getControls() { $output = '
      '; /** @var array $element */ $buttons_count = 0; $shortcodes = $this->shortcodes(); foreach ( $shortcodes as $element ) { if ( isset( $element['content_element'] ) && false === $element['content_element'] ) { continue; } $button = $this->renderButton( $element ); if ( ! empty( $button ) ) { $buttons_count ++; } $output .= $button; } $output .= '
    '; if ( 0 === $buttons_count ) { $this->show_empty_message = true; } return apply_filters( 'vc_add_element_box_buttons', $output ); } /** * Get categories list from mapping data. * @since 4.5 * * @return array */ public function getCategories() { return apply_filters( 'vc_add_new_category_filter', WPBMap::getUserCategories() ); } public function render() { vc_include_template( 'editors/popups/vc_ui-panel-add-element.tpl.php', array( 'box' => $this, 'template_variables' => array( 'categories' => $this->getCategories(), ), ) ); } /** * Render icon for shortcode * * @param $params * * @since 4.8 * @return string */ public function renderIcon( $params ) { return $this->getIcon( $params ); } /** * @return boolean */ public function isShowEmptyMessage() { return $this->show_empty_message; } public function getPartState() { return vc_user_access()->part( 'shortcodes' )->getState(); } } PK<\ B B ?include/classes/editors/popups/class-vc-shortcode-edit-form.phpnu[initialized ) { return; } $this->initialized = true; add_action( 'wp_ajax_vc_edit_form', array( $this, 'renderFields', ) ); add_filter( 'vc_single_param_edit', array( $this, 'changeEditFormFieldParams', ) ); add_filter( 'vc_edit_form_class', array( $this, 'changeEditFormParams', ) ); } /** * */ public function render() { vc_include_template( 'editors/popups/vc_ui-panel-edit-element.tpl.php', array( 'box' => $this, ) ); } /** * Build edit form fields. * * @since 4.4 */ public function renderFields() { $tag = vc_post_param( 'tag' ); vc_user_access()->checkAdminNonce()->validateDie( __( 'Access denied', 'js_composer' ) )->wpAny( array( 'edit_post', (int) vc_request_param( 'post_id' ), ) )->validateDie( __( 'Access denied', 'js_composer' ) )->check( 'vc_user_access_check_shortcode_edit', $tag )->validateDie( __( 'Access denied', 'js_composer' ) ); $params = (array) stripslashes_deep( vc_post_param( 'params' ) ); $params = array_map( 'vc_htmlspecialchars_decode_deep', $params ); require_once vc_path_dir( 'EDITORS_DIR', 'class-vc-edit-form-fields.php' ); $fields = new Vc_Edit_Form_Fields( $tag, $params ); $fields->render(); die(); } /** * @param $param * * @return mixed */ public function changeEditFormFieldParams( $param ) { $css = $param['vc_single_param_edit_holder_class']; if ( isset( $param['edit_field_class'] ) ) { $new_css = $param['edit_field_class']; } else { $new_css = 'vc_col-xs-12'; } array_unshift( $css, $new_css ); $param['vc_single_param_edit_holder_class'] = $css; return $param; } /** * @param $css_classes * * @return mixed */ public function changeEditFormParams( $css_classes ) { $css = ''; array_unshift( $css_classes, $css ); return $css_classes; } } PK<\0C/1&,&,5include/classes/editors/class-vc-edit-form-fields.phpnu[tag = $tag; $this->atts = apply_filters( 'vc_edit_form_fields_attributes_' . $this->tag, $atts ); $this->setSettings( WPBMap::getShortCode( $this->tag ) ); } /** * Get settings * @since 4.4 * * @param $key * * @return null */ public function setting( $key ) { return isset( $this->settings[ $key ] ) ? $this->settings[ $key ] : null; } /** * Set settings data * @since 4.4 * * @param array $settings */ public function setSettings( array $settings ) { $this->settings = $settings; } /** * Shortcode Post ID getter. * If post id isn't set try to get from get_the_ID function. * @since 4.4 * @return int|bool; */ public function postId() { if ( false === $this->post_id ) { $this->post_id = get_the_ID(); } return $this->post_id; } /** * Shortcode Post ID setter. * @since 4.4 * * @param $post_id - integer value in post_id */ public function setPostId( $post_id ) { $this->post_id = (int) $post_id; } /** * Get shortcode attribute value. * * This function checks if value isn't set then it uses std or value fields in param settings. * @since 4.4 * * @param $param_settings * @param $value * * @return null */ protected function parseShortcodeAttributeValue( $param_settings, $value ) { if ( is_null( $value ) ) { // If value doesn't exists if ( isset( $param_settings['std'] ) ) { $value = $param_settings['std']; } elseif ( isset( $param_settings['value'] ) && is_array( $param_settings['value'] ) && ! empty( $param_settings['type'] ) && 'checkbox' !== $param_settings['type'] ) { $first_key = key( $param_settings['value'] ); $value = $first_key ? $param_settings['value'][ $first_key ] : ''; } elseif ( isset( $param_settings['value'] ) && ! is_array( $param_settings['value'] ) ) { $value = $param_settings['value']; } } return $value; } /** * Enqueue js scripts for attributes types. * @since 4.4 * @return string */ public function enqueueScripts() { $output = ''; if ( ! WpbakeryShortcodeParams::isEnqueue() ) { $scripts = apply_filters( 'vc_edit_form_enqueue_script', WpbakeryShortcodeParams::getScripts() ); foreach ( $scripts as $script ) { $output .= "\n\n" . ''; } } return $output; } /** * Render grouped fields. * @since 4.4 * * @param $groups * @param $groups_content * * @return string */ protected function renderGroupedFields( $groups, $groups_content ) { $output = ''; if ( sizeof( $groups ) > 1 || ( sizeof( $groups ) >= 1 && empty( $groups_content['_general'] ) ) ) { $output .= '
    '; $output .= '
      '; $key = 0; foreach ( $groups as $g ) { $output .= '
    • '; } $output .= '
    '; $key = 0; foreach ( $groups as $g ) { $output .= '
    '; $output .= $groups_content[ $g ]; $output .= '
    '; } $output .= '
    '; } elseif ( ! empty( $groups_content['_general'] ) ) { $output .= '
    ' . $groups_content['_general'] . '
    '; } return $output; } /** * Render fields html and output it. * @since 4.4 * vc_filter: vc_edit_form_class - filter to override editor_css_classes array */ public function render() { $this->loadDefaultParams(); $output = $el_position = ''; $groups_content = $groups = array(); $params = $this->setting( 'params' ); $editor_css_classes = apply_filters( 'vc_edit_form_class', array( 'wpb_edit_form_elements', 'vc_edit_form_elements', ), $this->atts, $params ); $deprecated = $this->setting( 'deprecated' ); require_once vc_path_dir( 'AUTOLOAD_DIR', 'class-vc-settings-presets.php' ); $list_vendor_presets = Vc_Settings_Preset::listVendorSettingsPresets( $this->tag ); $list_presets = Vc_Settings_Preset::listSettingsPresets( $this->tag ); $show_settings = false; $saveAsTemplateElements = apply_filters( 'vc_popup_save_as_template_elements', array( 'vc_row', 'vc_section', ) ); $show_presets = ! in_array( $this->tag, $saveAsTemplateElements ) && vc_user_access()->part( 'presets' )->checkStateAny( true, null )->get(); if ( in_array( $this->tag, $saveAsTemplateElements ) && vc_user_access()->part( 'templates' )->checkStateAny( true, null )->get() ) { $show_settings = true; } $output .= sprintf( '', $show_presets ? 'true' : 'false' ); $output .= sprintf( '', $show_presets || $show_settings ? 'true' : 'false' ); if ( ! empty( $deprecated ) ) { $output .= '
    ' . vc_message_warning( sprintf( __( 'You are using outdated element, it is deprecated since version %s.', 'js_composer' ), $this->setting( 'deprecated' ) ) ) . '
    '; } $output .= '
    '; if ( is_array( $params ) ) { foreach ( $params as $param ) { $name = isset( $param['param_name'] ) ? $param['param_name'] : null; if ( ! is_null( $name ) ) { $value = isset( $this->atts[ $name ] ) ? $this->atts[ $name ] : null; $value = $this->parseShortcodeAttributeValue( $param, $value ); $group = isset( $param['group'] ) && '' !== $param['group'] ? $param['group'] : '_general'; if ( ! isset( $groups_content[ $group ] ) ) { $groups[] = $group; $groups_content[ $group ] = ''; } $groups_content[ $group ] .= $this->renderField( $param, $value ); } } } $output .= $this->renderGroupedFields( $groups, $groups_content ); $output .= '
    '; $output .= $this->enqueueScripts(); echo $output; do_action( 'vc_edit_form_fields_after_render' ); } /** * Generate html for shortcode attribute. * * Method * @since 4.4 * * @param $param * @param $value * * vc_filter: vc_single_param_edit - hook to edit any shortode param * vc_filter: vc_form_fields_render_field_{shortcode_name}_{param_name}_param_value - hook to edit shortcode param * value vc_filter: vc_form_fields_render_field_{shortcode_name}_{param_name}_param - hook to edit shortcode * param attributes vc_filter: vc_single_param_edit_holder_output - hook to edit output of this method * * @return mixed|void */ protected function renderField( $param, $value ) { $param['vc_single_param_edit_holder_class'] = array( 'wpb_el_type_' . $param['type'], 'vc_wrapper-param-type-' . $param['type'], 'vc_shortcode-param', 'vc_column', ); if ( ! empty( $param['param_holder_class'] ) ) { $param['vc_single_param_edit_holder_class'][] = $param['param_holder_class']; } $param = apply_filters( 'vc_single_param_edit', $param, $value ); $output = '
    '; $output .= ( isset( $param['heading'] ) ) ? '
    ' . $param['heading'] . '
    ' : ''; $output .= '
    '; $value = apply_filters( 'vc_form_fields_render_field_' . $this->setting( 'base' ) . '_' . $param['param_name'] . '_param_value', $value, $param, $this->settings, $this->atts ); $param = apply_filters( 'vc_form_fields_render_field_' . $this->setting( 'base' ) . '_' . $param['param_name'] . '_param', $param, $value, $this->settings, $this->atts ); $output = apply_filters( 'vc_edit_form_fields_render_field_' . $param['type'] . '_before', $output ); $output .= vc_do_shortcode_param_settings_field( $param['type'], $param, $value, $this->setting( 'base' ) ); $output_after = ''; if ( isset( $param['description'] ) ) { $output_after .= '' . $param['description'] . ''; } $output_after .= '
    '; $output .= apply_filters( 'vc_edit_form_fields_render_field_' . $param['type'] . '_after', $output_after ); return apply_filters( 'vc_single_param_edit_holder_output', $output, $param, $value, $this->settings, $this->atts ); } /** * Create default shortcode params * * List of params stored in global variable $vc_params_list. * Please check include/params/load.php for default params list. * @since 4.4 * @return bool */ public function loadDefaultParams() { global $vc_params_list; if ( empty( $vc_params_list ) ) { return false; } $script_url = vc_asset_url( 'js/dist/edit-form.min.js' ); foreach ( $vc_params_list as $param ) { vc_add_shortcode_param( $param, 'vc_' . $param . '_form_field', $script_url ); } do_action( 'vc_load_default_params' ); return true; } } PK<\]uS;include/classes/editors/navbar/class-vc-navbar-frontend.phpnu[' . '' . ''; } /** * @return string */ public function getControlScreenSize() { $disable_responsive = vc_settings()->get( 'not_responsive_css' ); if ( '1' !== $disable_responsive ) { $screen_sizes = array( array( 'title' => __( 'Desktop', 'js_composer' ), 'size' => '100%', 'key' => 'default', 'active' => true, ), array( 'title' => __( 'Tablet landscape mode', 'js_composer' ), 'size' => '1024px', 'key' => 'landscape-tablets', ), array( 'title' => __( 'Tablet portrait mode', 'js_composer' ), 'size' => '768px', 'key' => 'portrait-tablets', ), array( 'title' => __( 'Smartphone landscape mode', 'js_composer' ), 'size' => '480px', 'key' => 'landscape-smartphones', ), array( 'title' => __( 'Smartphone portrait mode', 'js_composer' ), 'size' => '320px', 'key' => 'portrait-smartphones', ), ); $output = '
  • ' . '
    ' . '' . '
      '; while ( $screen = current( $screen_sizes ) ) { $output .= '
    • '; next( $screen_sizes ); } $output .= '
  • '; return $output; } return ''; } /** * @return string */ public function getControlSaveUpdate() { $post = $this->post(); $post_type = get_post_type_object( $this->post->post_type ); $can_publish = current_user_can( $post_type->cap->publish_posts ); ob_start(); ?>
  • post_status, array( 'publish', 'future', 'private', ) ) ) : ?> post_status ) : ?> post_status && $can_publish ) : ?>
  • ' . '' . ''; } } PK<\*include/classes/editors/navbar/.navbar.phpnu[PK<\[())2include/classes/editors/navbar/class-vc-navbar.phpnu[post = $post; } /** * Generate array of controls by iterating property $controls list. * vc_filter: vc_nav_controls - hook to override list of controls * @return array - list of arrays witch contains key name and html output for button. */ public function getControls() { $list = array(); foreach ( $this->controls as $control ) { $method = vc_camel_case( 'get_control_' . $control ); if ( method_exists( $this, $method ) ) { $list[] = array( $control, $this->$method() . "\n" ); } } return apply_filters( $this->controls_filter_name, $list ); } /** * Get current post. * @return null|WP_Post */ public function post() { if ( $this->post ) { return $this->post; } return get_post(); } /** * Render template. */ public function render() { vc_include_template( 'editors/navbar/navbar.tpl.php', array( 'css_class' => $this->css_class, 'controls' => $this->getControls(), 'nav_bar' => $this, 'post' => $this->post(), ) ); } /** * vc_filter: vc_nav_front_logo - hook to override WPBakery Page Builder logo * @return mixed|void */ public function getLogo() { $output = ''; return apply_filters( 'vc_nav_front_logo', $output ); } /** * @return string */ public function getControlCustomCss() { if ( ! vc_user_access()->part( 'post_settings' )->can()->get() ) { return ''; } return '
  • ' . '' . '
  • '; } /** * @return string */ public function getControlFullscreen() { return '
  • ' . '' . '
  • '; } /** * @return string */ public function getControlWindowed() { return '
  • ' . '' . '
  • '; } /** * @return string */ public function getControlAddElement() { if ( vc_user_access() ->part( 'shortcodes' ) ->checkStateAny( true, 'custom', null ) ->get() && vc_user_access_check_shortcode_all( 'vc_row' ) && vc_user_access_check_shortcode_all( 'vc_column' ) ) { return '
  • ' . ' ' . ' ' . ' ' . '
  • '; } return ''; } /** * @return string */ public function getControlTemplates() { if ( ! vc_user_access()->part( 'templates' )->can()->get() ) { return ''; } return '
  • '; } /** * @return string */ public function getControlFrontend() { if ( ! vc_enabled_frontend() ) { return ''; } return ''; } /** * @return string */ public function getControlPreview() { return ''; } /** * @return string */ public function getControlSaveBackend() { return '
  • ' . '' . __( 'Preview', 'js_composer' ) . '' . '' . __( 'Update', 'js_composer' ) . '' . '
  • '; } } PK<\?کFoFo4include/classes/editors/class-vc-frontend-editor.phpnu[ 'assets', 'templates_dir' => 'templates', 'template_extension' => 'tpl.php', 'plugin_path' => 'js_composer/inline', ); /** * @var string */ protected static $content_editor_id = 'content'; /** * @var array */ protected static $content_editor_settings = array( 'dfw' => true, 'tabfocus_elements' => 'insert-media-button', 'editor_height' => 360, ); /** * @var string */ protected static $brand_url = 'http://vc.wpbakery.com/?utm_campaign=VCplugin&utm_source=vc_user&utm_medium=frontend_editor'; /** * */ public function init() { $this->addHooks(); /** * If current mode of VC is frontend editor load it. */ if ( vc_is_frontend_editor() ) { $this->hookLoadEdit(); } elseif ( vc_is_page_editable() ) { /** * if page loaded inside frontend editor iframe it has page_editable mode. * It required to some some js/css elements and add few helpers for editor to be used. */ $this->buildEditablePage(); } else { // Is it is simple page just enable buttons and controls $this->buildPage(); } } /** * */ public function addHooks() { add_action( 'template_redirect', array( $this, 'loadShortcodes', ) ); add_filter( 'page_row_actions', array( $this, 'renderRowAction', ) ); add_filter( 'post_row_actions', array( $this, 'renderRowAction', ) ); add_shortcode( 'vc_container_anchor', 'vc_container_anchor' ); } /** * */ public function hookLoadEdit() { add_action( 'current_screen', array( $this, 'adminInit', ) ); do_action( 'vc_frontend_editor_hook_load_edit' ); } /** * */ public function adminInit() { $this->setPost(); $this->renderEditor(); } /** * */ public function buildEditablePage() { ! defined( 'CONCATENATE_SCRIPTS' ) && define( 'CONCATENATE_SCRIPTS', false ); visual_composer()->shared_templates->init(); add_filter( 'the_title', array( $this, 'setEmptyTitlePlaceholder', ) ); add_action( 'the_post', array( $this, 'parseEditableContent', ), 9999 ); // after all the_post actions ended do_action( 'vc_inline_editor_page_view' ); add_filter( 'wp_enqueue_scripts', array( $this, 'loadIFrameJsCss', ) ); add_action( 'wp_footer', array( $this, 'printPostShortcodes', ) ); } /** * */ public function buildPage() { add_action( 'admin_bar_menu', array( $this, 'adminBarEditLink', ), 1000 ); add_filter( 'edit_post_link', array( $this, 'renderEditButton', ) ); } /** * @return bool */ public static function inlineEnabled() { return true === self::$enabled_inline; } public static function frontendEditorEnabled() { return self::inlineEnabled() && vc_user_access()->part( 'frontend_editor' )->can()->get(); } /** * @param bool $disable */ public static function disableInline( $disable = true ) { self::$enabled_inline = ! $disable; } /** * Main purpose of this function is to * 1) Parse post content to get ALL shortcodes in to array * 2) Wrap all shortcodes into editable-wrapper * 3) Return "iframe" editable content in extra-script wrapper * * @param Wp_Post $post */ public function parseEditableContent( $post ) { if ( ! vc_is_page_editable() || vc_action() || vc_post_param( 'action' ) ) { return; } $post_id = (int) vc_get_param( 'vc_post_id' ); if ( $post_id > 0 && $post->ID === $post_id && ! defined( 'VC_LOADING_EDITABLE_CONTENT' ) ) { define( 'VC_LOADING_EDITABLE_CONTENT', true ); remove_filter( 'the_content', 'wpautop' ); do_action( 'vc_load_shortcode' ); ob_start(); $this->getPageShortcodesByContent( $post->post_content ); vc_include_template( 'editors/partials/vc_welcome_block.tpl.php' ); $post_content = ob_get_clean(); ob_start(); vc_include_template( 'editors/partials/post_shortcodes.tpl.php', array( 'editor' => $this ) ); $post_shortcodes = ob_get_clean(); $GLOBALS['vc_post_content'] = '' . $post_shortcodes; // We already used the_content filter, we need to remove it to avoid double-using remove_all_filters( 'the_content' ); // Used for just returning $post->post_content add_filter( 'the_content', array( $this, 'editableContent', ) ); } } /** * @since 4.4 * Used to print rendered post content, wrapped with frontend editors "div" and etc. */ public function printPostShortcodes() { echo isset( $GLOBALS['vc_post_content'] ) ? $GLOBALS['vc_post_content'] : ''; } /** * @param $content * * @return string */ public function editableContent( $content ) { // same addContentAnchor do_shortcode( $content ); // this will not be outputted, but this is needed to enqueue needed js/styles. return ''; } /** * @param string $url * @param string $id * * vc_filter: vc_get_inline_url - filter to edit frontend editor url (can be used for example in vendors like * qtranslate do) * * @return mixed|void */ public static function getInlineUrl( $url = '', $id = '' ) { $the_ID = ( strlen( $id ) > 0 ? $id : get_the_ID() ); return apply_filters( 'vc_get_inline_url', admin_url() . 'post.php?vc_action=vc_inline&post_id=' . $the_ID . '&post_type=' . get_post_type( $the_ID ) . ( strlen( $url ) > 0 ? '&url=' . rawurlencode( $url ) : '' ) ); } /** * @return string */ function wrapperStart() { return ''; } /** * @return string */ function wrapperEnd() { return ''; } /** * @param $url */ public static function setBrandUrl( $url ) { self::$brand_url = $url; } /** * @return string */ public static function getBrandUrl() { return self::$brand_url; } /** * @return string */ public static function shortcodesRegexp() { $tagnames = array_keys( WPBMap::getShortCodes() ); $tagregexp = implode( '|', array_map( 'preg_quote', $tagnames ) ); // WARNING from shortcodes.php! Do not change this regex without changing do_shortcode_tag() and strip_shortcode_tag() // Also, see shortcode_unautop() and shortcode.js. return '\\[' // Opening bracket . '(\\[?)' // 1: Optional second opening bracket for escaping shortcodes: [[tag]] . "($tagregexp)" // 2: Shortcode name . '(?![\\w-])' // Not followed by word character or hyphen . '(' // 3: Unroll the loop: Inside the opening shortcode tag . '[^\\]\\/]*' // Not a closing bracket or forward slash . '(?:' . '\\/(?!\\])' // A forward slash not followed by a closing bracket . '[^\\]\\/]*' // Not a closing bracket or forward slash . ')*?' . ')' . '(?:' . '(\\/)' // 4: Self closing tag ... . '\\]' // ... and closing bracket . '|' . '\\]' // Closing bracket . '(?:' . '(' // 5: Unroll the loop: Optionally, anything between the opening and closing shortcode tags . '[^\\[]*+' // Not an opening bracket . '(?:' . '\\[(?!\\/\\2\\])' // An opening bracket not followed by the closing shortcode tag . '[^\\[]*+' // Not an opening bracket . ')*+' . ')' . '\\[\\/\\2\\]' // Closing shortcode tag . ')?' . ')' . '(\\]?)'; // 6: Optional second closing brocket for escaping shortcodes: [[tag]] } /** * */ function setPost() { global $post; $this->post = get_post(); // fixes #1342 if no get/post params set $this->post_id = vc_get_param( 'post_id' ); if ( vc_post_param( 'post_id' ) ) { $this->post_id = vc_post_param( 'post_id' ); } if ( $this->post_id ) { $this->post = get_post( $this->post_id ); } do_action_ref_array( 'the_post', array( $this->post ) ); $post = $this->post; $this->post_id = $this->post->ID; } /** * @return mixed */ function post() { ! isset( $this->post ) && $this->setPost(); return $this->post; } /** * Used for wp filter 'wp_insert_post_empty_content' to allow empty post insertion. * * @param $allow_empty * * @return bool */ public function allowInsertEmptyPost( $allow_empty ) { return false; } /** * vc_filter: vc_frontend_editor_iframe_url - hook to edit iframe url, can be used in vendors like qtranslate do. */ function renderEditor() { global $current_user; wp_get_current_user(); $this->current_user = $current_user; $this->post_url = vc_str_remove_protocol( get_permalink( $this->post_id ) ); if ( ! self::inlineEnabled() || ! vc_user_access()->wpAny( array( 'edit_post', $this->post_id, ) )->get() ) { header( 'Location: ' . $this->post_url ); } $this->registerJs(); $this->registerCss(); visual_composer()->registerAdminCss(); //bc visual_composer()->registerAdminJavascript(); //bc if ( $this->post && 'auto-draft' === $this->post->post_status ) { $post_data = array( 'ID' => $this->post_id, 'post_status' => 'draft', 'post_title' => '', ); add_filter( 'wp_insert_post_empty_content', array( $this, 'allowInsertEmptyPost', ) ); wp_update_post( $post_data, true ); $this->post->post_status = 'draft'; $this->post->post_title = ''; } add_filter( 'admin_body_class', array( $this, 'filterAdminBodyClass', ) ); $this->post_type = get_post_type_object( $this->post->post_type ); $this->url = $this->post_url . ( preg_match( '/\?/', $this->post_url ) ? '&' : '?' ) . 'vc_editable=true&vc_post_id=' . $this->post->ID . '&_vcnonce=' . vc_generate_nonce( 'vc-admin-nonce' ); $this->url = apply_filters( 'vc_frontend_editor_iframe_url', $this->url ); $this->enqueueAdmin(); $this->enqueueMappedShortcode(); wp_enqueue_media( array( 'post' => $this->post_id ) ); remove_all_actions( 'admin_notices', 3 ); remove_all_actions( 'network_admin_notices', 3 ); $post_custom_css = strip_tags( get_post_meta( $this->post_id, '_wpb_post_custom_css', true ) ); $this->post_custom_css = $post_custom_css; if ( ! defined( 'IFRAME_REQUEST' ) ) { define( 'IFRAME_REQUEST', true ); } /** * @deprecated vc_admin_inline_editor action hook */ do_action( 'vc_admin_inline_editor' ); /** * new one */ do_action( 'vc_frontend_editor_render' ); add_filter( 'admin_title', array( $this, 'setEditorTitle', ) ); $this->render( 'editor' ); die(); } /** * @return string */ function setEditorTitle() { return sprintf( __( 'Edit %s with WPBakery Page Builder', 'js_composer' ), $this->post_type->labels->singular_name ); } /** * @param $title * * @return string|void */ function setEmptyTitlePlaceholder( $title ) { return ! is_string( $title ) || strlen( $title ) === 0 ? __( '(no title)', 'js_composer' ) : $title; } /** * @param $template */ function render( $template ) { vc_include_template( 'editors/frontend_' . $template . '.tpl.php', array( 'editor' => $this ) ); } /** * @param $link * * @return string */ function renderEditButton( $link ) { if ( $this->showButton( get_the_ID() ) ) { return $link . ' ' . __( 'Edit with WPBakery Page Builder', 'js_composer' ) . ''; } return $link; } /** * @param $actions * * @return mixed */ function renderRowAction( $actions ) { $post = get_post(); if ( $this->showButton( $post->ID ) ) { $actions['edit_vc'] = '' . __( 'Edit with WPBakery Page Builder', 'js_composer' ) . ''; } return $actions; } /** * @param null $post_id * * @return bool */ function showButton( $post_id = null ) { $type = get_post_type(); return self::inlineEnabled() && ! in_array( get_post_status(), array( 'private', 'trash', ) ) && ! in_array( $type, array( 'templatera', 'vc_grid_item', ) ) && vc_user_access()->wpAny( array( 'edit_post', $post_id, ) )->get() && vc_check_post_type( $type ); } /** * @param WP_Admin_Bar $wp_admin_bar */ function adminBarEditLink( $wp_admin_bar ) { if ( ! is_object( $wp_admin_bar ) ) { global $wp_admin_bar; } if ( is_singular() ) { if ( $this->showButton( get_the_ID() ) ) { $wp_admin_bar->add_menu( array( 'id' => 'vc_inline-admin-bar-link', 'title' => __( 'Edit with WPBakery Page Builder', 'js_composer' ), 'href' => self::getInlineUrl(), 'meta' => array( 'class' => 'vc_inline-link' ), ) ); } } } /** * @param $content */ function setTemplateContent( $content ) { $this->template_content = $content; } /** * vc_filter: vc_inline_template_content - filter to override template content * @return mixed|void */ function getTemplateContent() { return apply_filters( 'vc_inline_template_content', $this->template_content ); } /** * */ function renderTemplates() { $this->render( 'templates' ); die(); } /** * */ function loadTinyMceSettings() { if ( ! class_exists( '_WP_Editors' ) ) { require( ABSPATH . WPINC . '/class-wp-editor.php' ); } $set = _WP_Editors::parse_settings( self::$content_editor_id, self::$content_editor_settings ); _WP_Editors::editor_settings( self::$content_editor_id, $set ); } /** * */ function loadIFrameJsCss() { wp_enqueue_script( 'jquery-ui-tabs' ); wp_enqueue_script( 'jquery-ui-sortable' ); wp_enqueue_script( 'jquery-ui-droppable' ); wp_enqueue_script( 'jquery-ui-draggable' ); wp_enqueue_script( 'jquery-ui-accordion' ); wp_enqueue_script( 'jquery-ui-autocomplete' ); wp_enqueue_script( 'wpb_composer_front_js' ); wp_enqueue_style( 'js_composer_front' ); wp_enqueue_style( 'vc_inline_css', vc_asset_url( 'css/js_composer_frontend_editor_iframe.min.css' ), array(), WPB_VC_VERSION ); wp_enqueue_script( 'waypoints' ); wp_enqueue_script( 'wpb_scrollTo_js', vc_asset_url( 'lib/bower/scrollTo/jquery.scrollTo.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true ); wp_enqueue_style( 'js_composer_custom_css' ); wp_enqueue_script( 'wpb_php_js', vc_asset_url( 'lib/php.default/php.default.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true ); wp_enqueue_script( 'vc_inline_iframe_js', vc_asset_url( 'js/dist/page_editable.min.js' ), array( 'jquery', 'underscore', ), WPB_VC_VERSION, true ); do_action( 'vc_load_iframe_jscss' ); } /** * */ function loadShortcodes() { if ( vc_is_page_editable() && vc_enabled_frontend() ) { $action = vc_post_param( 'action' ); if ( 'vc_load_shortcode' === $action ) { ! defined( 'CONCATENATE_SCRIPTS' ) && define( 'CONCATENATE_SCRIPTS', false ); ob_start(); $this->setPost(); $shortcodes = (array) vc_post_param( 'shortcodes' ); do_action( 'vc_load_shortcode', $shortcodes ); $this->renderShortcodes( $shortcodes ); echo '
    '; _print_styles(); print_head_scripts(); print_late_styles(); print_footer_scripts(); do_action( 'wp_print_footer_scripts' ); echo '
    '; $output = ob_get_clean(); die( apply_filters( 'vc_frontend_editor_load_shortcode_ajax_output', $output ) ); } elseif ( 'vc_frontend_load_template' === $action ) { $this->setPost(); visual_composer()->templatesPanelEditor()->renderFrontendTemplate(); } else if ( '' !== $action ) { do_action( 'vc_front_load_page_' . esc_attr( vc_post_param( 'action' ) ) ); } } } /** * @param $s * * @return string */ function fullUrl( $s ) { $ssl = ( ! empty( $s['HTTPS'] ) && 'on' === $s['HTTPS'] ) ? true : false; $sp = strtolower( $s['SERVER_PROTOCOL'] ); $protocol = substr( $sp, 0, strpos( $sp, '/' ) ) . ( ( $ssl ) ? 's' : '' ); $port = $s['SERVER_PORT']; $port = ( ( ! $ssl && '80' === $port ) || ( $ssl && '443' === $port ) ) ? '' : ':' . $port; $host = isset( $s['HTTP_X_FORWARDED_HOST'] ) ? $s['HTTP_X_FORWARDED_HOST'] : isset( $s['HTTP_HOST'] ) ? $s['HTTP_HOST'] : $s['SERVER_NAME']; return $protocol . '://' . $host . $port . $s['REQUEST_URI']; } /** * @return string */ static function cleanStyle() { return ''; } /** * */ function enqueueRequired() { do_action( 'wp_enqueue_scripts' ); visual_composer()->frontCss(); visual_composer()->frontJsRegister(); } /** * @param array $shortcodes * * vc_filter: vc_front_render_shortcodes - hook to override shortcode rendered output */ function renderShortcodes( array $shortcodes ) { $this->enqueueRequired(); $output = ''; foreach ( $shortcodes as $shortcode ) { if ( isset( $shortcode['id'] ) && isset( $shortcode['string'] ) ) { if ( isset( $shortcode['tag'] ) ) { $shortcode_obj = visual_composer()->getShortCode( $shortcode['tag'] ); if ( is_object( $shortcode_obj ) ) { $output .= '
    '; $is_container = $shortcode_obj->settings( 'is_container' ) || ( null !== $shortcode_obj->settings( 'as_parent' ) && false !== $shortcode_obj->settings( 'as_parent' ) ); if ( $is_container ) { $shortcode['string'] = preg_replace( '/\]/', '][vc_container_anchor]', $shortcode['string'], 1 ); } $output .= '
    ' . $this->wrapperStart() . do_shortcode( stripslashes( $shortcode['string'] ) ) . $this->wrapperEnd() . '
    '; $output .= '
    '; } } } } echo apply_filters( 'vc_front_render_shortcodes', $output ); } /** * @param $string * * @return string */ function filterAdminBodyClass( $string ) { // @todo check vc_inline-shortcode-edit-form class looks like incorrect place $string .= ( strlen( $string ) > 0 ? ' ' : '' ) . 'vc_editor vc_inline-shortcode-edit-form'; if ( '1' === vc_settings()->get( 'not_responsive_css' ) ) { $string .= ' vc_responsive_disabled'; } return $string; } /** * @param $path * * @return string */ function adminFile( $path ) { return ABSPATH . 'wp-admin/' . $path; } public function registerJs() { wp_register_script( 'vc_bootstrap_js', vc_asset_url( 'lib/bower/bootstrap3/dist/js/bootstrap.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true ); wp_register_script( 'vc_accordion_script', vc_asset_url( 'lib/vc_accordion/vc-accordion.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true ); wp_register_script( 'wpb_php_js', vc_asset_url( 'lib/php.default/php.default.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true ); // used as polyfill for JSON.stringify and etc wp_register_script( 'wpb_json-js', vc_asset_url( 'lib/bower/json-js/json2.min.js' ), array(), WPB_VC_VERSION, true ); // used in post settings editor wp_register_script( 'ace-editor', vc_asset_url( 'lib/bower/ace-builds/src-min-noconflict/ace.js' ), array( 'jquery' ), WPB_VC_VERSION, true ); wp_register_script( 'webfont', '//ajax.googleapis.com/ajax/libs/webfont/1.4.7/webfont.js' ); // Google Web Font CDN wp_register_script( 'wpb_scrollTo_js', vc_asset_url( 'lib/bower/scrollTo/jquery.scrollTo.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true ); wp_register_script( 'vc_accordion_script', vc_asset_url( 'lib/vc_accordion/vc-accordion.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true ); wp_register_script( 'vc-frontend-editor-min-js', vc_asset_url( 'js/dist/frontend-editor.min.js' ), array(), WPB_VC_VERSION, true ); wp_localize_script( 'vc-frontend-editor-min-js', 'i18nLocale', visual_composer()->getEditorsLocale() ); } /** * */ public function enqueueJs() { $wp_dependencies = array( 'jquery', 'underscore', 'backbone', 'media-views', 'media-editor', 'wp-pointer', 'mce-view', 'wp-color-picker', 'jquery-ui-sortable', 'jquery-ui-droppable', 'jquery-ui-draggable', 'jquery-ui-resizable', 'jquery-ui-accordion', 'jquery-ui-autocomplete', // used in @deprecated tabs 'jquery-ui-tabs', 'wp-color-picker', 'farbtastic', ); $dependencies = array( 'vc_bootstrap_js', 'vc_accordion_script', 'wpb_php_js', 'wpb_json-js', 'ace-editor', 'webfont', 'vc_accordion_script', 'vc-frontend-editor-min-js', ); // This workaround will allow to disable any of dependency on-the-fly foreach ( $wp_dependencies as $dependency ) { wp_enqueue_script( $dependency ); } foreach ( $dependencies as $dependency ) { wp_enqueue_script( $dependency ); } } public function registerCss() { wp_register_style( 'ui-custom-theme', vc_asset_url( 'css/ui-custom-theme/jquery-ui-less.custom.min.css' ), false, WPB_VC_VERSION ); wp_register_style( 'animate-css', vc_asset_url( 'lib/bower/animate-css/animate.min.css' ), false, WPB_VC_VERSION, 'screen' ); wp_register_style( 'font-awesome', vc_asset_url( 'lib/bower/font-awesome/css/font-awesome.min.css' ), false, WPB_VC_VERSION, 'screen' ); wp_register_style( 'vc_inline_css', vc_asset_url( 'css/js_composer_frontend_editor.min.css' ), array(), WPB_VC_VERSION ); } public function enqueueCss() { $wp_dependencies = array( 'wp-color-picker', 'farbtastic', ); $dependencies = array( 'ui-custom-theme', 'animate-css', 'font-awesome', //'wpb_jscomposer_autosuggest', 'vc_inline_css', ); // This workaround will allow to disable any of dependency on-the-fly foreach ( $wp_dependencies as $dependency ) { wp_enqueue_style( $dependency ); } foreach ( $dependencies as $dependency ) { wp_enqueue_style( $dependency ); } } /** * */ function enqueueAdmin() { $this->enqueueJs(); $this->enqueueCss(); do_action( 'vc_frontend_editor_enqueue_js_css' ); } /** * Enqueue js/css files from mapped shortcodes. * * To add js/css files to this enqueue please add front_enqueue_js/front_enqueue_css setting in vc_map array. * @since 4.3 * */ function enqueueMappedShortcode() { foreach ( WPBMap::getUserShortCodes() as $shortcode ) { $param = isset( $shortcode['front_enqueue_js'] ) ? $shortcode['front_enqueue_js'] : null; if ( is_array( $param ) && ! empty( $param ) ) { foreach ( $param as $value ) { $this->enqueueMappedShortcodeJs( $value ); } } elseif ( is_string( $param ) && ! empty( $param ) ) { $this->enqueueMappedShortcodeJs( $param ); } $param = isset( $shortcode['front_enqueue_css'] ) ? $shortcode['front_enqueue_css'] : null; if ( is_array( $param ) && ! empty( $param ) ) { foreach ( $param as $value ) { $this->enqueueMappedShortcodeCss( $value ); } } elseif ( is_string( $param ) && ! empty( $param ) ) { $this->enqueueMappedShortcodeCss( $param ); } } } public function enqueueMappedShortcodeJs( $value ) { wp_enqueue_script( 'front_enqueue_js_' . md5( $value ), $value, array( 'vc-frontend-editor-min-js' ), WPB_VC_VERSION, true ); } public function enqueueMappedShortcodeCss( $value ) { wp_enqueue_style( 'front_enqueue_css_' . md5( $value ), $value, array( 'vc_inline_css' ), WPB_VC_VERSION ); } /** * @param $content * * @since 4.4 */ function getPageShortcodesByContent( $content ) { if ( ! empty( $this->post_shortcodes ) ) { return; } $content = shortcode_unautop( trim( $content ) ); // @todo this seems not working fine. $not_shortcodes = preg_split( '/' . self::shortcodesRegexp() . '/', $content ); foreach ( $not_shortcodes as $string ) { $temp = str_replace( array( '

    ', '

    ', ), '', $string ); // just to avoid autop @todo maybe do it better like vc_wpnop in js. if ( strlen( trim( $temp ) ) > 0 ) { $content = preg_replace( '/(' . preg_quote( $string, '/' ) . '(?!\[\/))/', '[vc_row][vc_column width="1/1"][vc_column_text]$1[/vc_column_text][/vc_column][/vc_row]', $content ); } } echo $this->parseShortcodesString( $content ); } /** * @param $content * @param bool $is_container * @param bool $parent_id * * @since 4.2 * @return string */ function parseShortcodesString( $content, $is_container = false, $parent_id = false ) { $string = ''; preg_match_all( '/' . self::shortcodesRegexp() . '/', trim( $content ), $found ); WPBMap::addAllMappedShortcodes(); add_shortcode( 'vc_container_anchor', 'vc_container_anchor' ); if ( count( $found[2] ) === 0 ) { return $is_container && strlen( $content ) > 0 ? $this->parseShortcodesString( '[vc_column_text]' . $content . '[/vc_column_text]', false, $parent_id ) : $content; } foreach ( $found[2] as $index => $s ) { $id = md5( time() . '-' . $this->tag_index ++ ); $content = $found[5][ $index ]; $attrs = shortcode_parse_atts( $found[3][ $index ] ); if ( empty( $attrs ) ) { $attrs = array(); } elseif ( ! is_array( $attrs ) ) { $attrs = (array) $attrs; } $shortcode = array( 'tag' => $s, 'attrs_query' => $found[3][ $index ], 'attrs' => $attrs, 'id' => $id, 'parent_id' => $parent_id, ); if ( false !== WPBMap::getParam( $s, 'content' ) ) { $shortcode['attrs']['content'] = $content; } $this->post_shortcodes[] = rawurlencode( json_encode( $shortcode ) ); $string .= $this->toString( $shortcode, $content ); } return $string; } /** * @param $shortcode * @param $content * * @since 4.2 * @return string */ function toString( $shortcode, $content ) { $shortcode_obj = visual_composer()->getShortCode( $shortcode['tag'] ); $is_container = $shortcode_obj->settings( 'is_container' ) || ( null !== $shortcode_obj->settings( 'as_parent' ) && false !== $shortcode_obj->settings( 'as_parent' ) ); $shortcode = apply_filters( 'vc_frontend_editor_to_string', $shortcode, $shortcode_obj ); $output = ( '
    ' . $this->wrapperStart() . '[' . $shortcode['tag'] . ' ' . $shortcode['attrs_query'] . ']' . ( $is_container ? '[vc_container_anchor]' . $this->parseShortcodesString( $content, $is_container, $shortcode['id'] ) : do_shortcode( $content ) ) . '[/' . $shortcode['tag'] . ']' . $this->wrapperEnd() . '
    ' ); return $output; } } if ( ! function_exists( 'vc_container_anchor' ) ) { /** * @since 4.2 * @return string */ function vc_container_anchor() { return ''; } } PK<\$include/classes/editors/.editors.phpnu[PK<\AJp2Q7Q70include/params/font_container/font_container.phpnu[ 'font_container', * 'param_name' => 'font_container', * 'value'=>'', * 'settings'=>array( * 'fields'=>array( * 'tag'=>'h2', * 'text_align', * 'font_size', * 'line_height', * 'color', * * 'tag_description' => __('Select element tag.','js_composer'), * 'text_align_description' => __('Select text alignment.','js_composer'), * 'font_size_description' => __('Enter font size.','js_composer'), * 'line_height_description' => __('Enter line height.','js_composer'), * 'color_description' => __('Select color for your element.','js_composer'), * ), * ), * ), * Ordering of fields, font_family, tag, text_align and etc. will be Same as ordering in array! * To provide default value to field use 'key' => 'value' */ class Vc_Font_Container { /** * @param $settings * @param $value * * @return string */ public function render( $settings, $value ) { $fields = array(); $values = array(); extract( $this->_vc_font_container_parse_attributes( $settings['settings']['fields'], $value ) ); $data = array(); $output = ''; if ( ! empty( $fields ) ) { if ( isset( $fields['tag'] ) ) { $data['tag'] = '
    ' . __( 'Element tag', 'js_composer' ) . '
    '; if ( isset( $fields['tag_description'] ) && strlen( $fields['tag_description'] ) > 0 ) { $data['tag'] .= ' ' . $fields['tag_description'] . ' '; } $data['tag'] .= '
    '; } if ( isset( $fields['font_size'] ) ) { $data['font_size'] = '
    ' . __( 'Font size', 'js_composer' ) . '
    '; if ( isset( $fields['font_size_description'] ) && strlen( $fields['font_size_description'] ) > 0 ) { $data['font_size'] .= ' ' . $fields['font_size_description'] . ' '; } $data['font_size'] .= '
    '; } if ( isset( $fields['text_align'] ) ) { $data['text_align'] = '
    ' . __( 'Text align', 'js_composer' ) . '
    '; if ( isset( $fields['text_align_description'] ) && strlen( $fields['text_align_description'] ) > 0 ) { $data['text_align'] .= ' ' . $fields['text_align_description'] . ' '; } $data['text_align'] .= '
    '; } if ( isset( $fields['line_height'] ) ) { $data['line_height'] = '
    ' . __( 'Line height', 'js_composer' ) . '
    '; if ( isset( $fields['line_height_description'] ) && strlen( $fields['line_height_description'] ) > 0 ) { $data['line_height'] .= ' ' . $fields['line_height_description'] . ' '; } $data['line_height'] .= '
    '; } if ( isset( $fields['color'] ) ) { $data['color'] = '
    ' . __( 'Text color', 'js_composer' ) . '
    '; if ( isset( $fields['color_description'] ) && strlen( $fields['color_description'] ) > 0 ) { $data['color'] .= ' ' . $fields['color_description'] . ' '; } $data['color'] .= '
    '; } if ( isset( $fields['font_family'] ) ) { $data['font_family'] = '
    ' . __( 'Font Family', 'js_composer' ) . '
    '; if ( isset( $fields['font_family_description'] ) && strlen( $fields['font_family_description'] ) > 0 ) { $data['font_family'] .= ' ' . $fields['font_family_description'] . ' '; } $data['font_family'] .= '
    '; } if ( isset( $fields['font_style'] ) ) { $data['font_style'] = '
    ' . __( 'Font style', 'js_composer' ) . '

    '; if ( isset( $fields['font_style_description'] ) && strlen( $fields['font_style_description'] ) > 0 ) { $data['font_style'] .= ' ' . $fields['font_style_description'] . ' '; } $data['font_style'] .= '
    '; } $data = apply_filters( 'vc_font_container_output_data', $data, $fields, $values, $settings ); // combine all in output, make sure you follow ordering foreach ( $fields as $key => $field ) { if ( isset( $data[ $key ] ) ) { $output .= $data[ $key ]; } } } $output .= ''; return $output; } /** * If field 'font_family' is used this is list of fonts available * To modify this list, you should use add_filter('vc_font_container_get_fonts_filter','your_custom_function'); * vc_filter: vc_font_container_get_fonts_filter - to modify list of fonts * @return array list of fonts */ public function _vc_font_container_get_web_safe_fonts() { // this is "Web Safe FONTS" from w3c: http://www.w3schools.com/cssref/css_websafe_fonts.asp $web_fonts = array( 'Georgia' => 'Georgia, serif', 'Palatino Linotype' => '"Palatino Linotype", "Book Antiqua", Palatino, serif', 'Book Antiqua' => '"Book Antiqua", Palatino, serif', 'Palatino' => 'Palatino, serif', 'Times New Roman' => '"Times New Roman", Times, serif', 'Arial' => 'Arial, Helvetica, sans-serif', 'Arial Black' => '"Arial Black", Gadget, sans-serif', 'Helvetica' => 'Helvetica, sans-serif', 'Comic Sans MS' => '"Comic Sans MS", cursive, sans-serif', 'Impact' => 'Impact, Charcoal, sans-serif', 'Charcoal' => 'Charcoal, sans-serif', 'Lucida Sans Unicode' => '"Lucida Sans Unicode", "Lucida Grande", sans-serif', 'Lucida Grande' => '"Lucida Grande", sans-serif', 'Tahoma' => 'Tahoma, Geneva, sans-serif', 'Geneva' => 'Geneva, sans-serif', 'Trebuchet MS' => '"Trebuchet MS", Helvetica, sans-serif', 'Verdana' => '"Trebuchet MS", Helvetica, sans-serif', 'Courier New' => '"Courier New", Courier, monospace', 'Lucida Console' => '"Lucida Console", Monaco, monospace', 'Monaco' => 'Monaco, monospace', ); return apply_filters( 'vc_font_container_get_fonts_filter', $web_fonts ); } /** * If 'tag' field used this is list of allowed tags * To modify this list, you should use add_filter('vc_font_container_get_allowed_tags','your_custom_function'); * vc_filter: vc_font_container_get_allowed_tags - to modify list of allowed tags by default * @return array list of allowed tags */ public function _vc_font_container_get_allowed_tags() { $allowed_tags = array( 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'div', ); return apply_filters( 'vc_font_container_get_allowed_tags', $allowed_tags ); } /** * @param $attr * @param $value * * @return array */ public function _vc_font_container_parse_attributes( $attr, $value ) { $fields = array(); if ( isset( $attr ) ) { foreach ( $attr as $key => $val ) { if ( is_numeric( $key ) ) { $fields[ $val ] = ''; } else { $fields[ $key ] = $val; } } } $values = vc_parse_multi_attribute( $value, array( 'tag' => isset( $fields['tag'] ) ? $fields['tag'] : 'h2', 'font_size' => isset( $fields['font_size'] ) ? $fields['font_size'] : '', 'font_style_italic' => isset( $fields['font_style_italic'] ) ? $fields['font_style_italic'] : '', 'font_style_bold' => isset( $fields['font_style_bold'] ) ? $fields['font_style_bold'] : '', 'font_family' => isset( $fields['font_family'] ) ? $fields['font_family'] : '', 'color' => isset( $fields['color'] ) ? $fields['color'] : '', 'line_height' => isset( $fields['line_height'] ) ? $fields['line_height'] : '', 'text_align' => isset( $fields['text_align'] ) ? $fields['text_align'] : 'left', 'tag_description' => isset( $fields['tag_description'] ) ? $fields['tag_description'] : '', 'font_size_description' => isset( $fields['font_size_description'] ) ? $fields['font_size_description'] : '', 'font_style_description' => isset( $fields['font_style_description'] ) ? $fields['font_style_description'] : '', 'font_family_description' => isset( $fields['font_family_description'] ) ? $fields['font_family_description'] : '', 'color_description' => isset( $fields['color_description'] ) ? $fields['color_description'] : 'left', 'line_height_description' => isset( $fields['line_height_description'] ) ? $fields['line_height_description'] : '', 'text_align_description' => isset( $fields['text_align_description'] ) ? $fields['text_align_description'] : '', ) ); return array( 'fields' => $fields, 'values' => $values ); } } /** * @param $settings * @param $value * * @return mixed|void */ function vc_font_container_form_field( $settings, $value ) { $font_container = new Vc_Font_Container(); return apply_filters( 'vc_font_container_render_filter', $font_container->render( $settings, $value ) ); } PK<\1include/params/font_container/.font_container.phpnu[PK<\3include/params/animation_style/.animation_style.phpnu[PK<\);;2include/params/animation_style/animation_style.phpnu[ 'animation_style', * 'heading' => __( 'Animation', 'js_composer' ), * 'param_name' => 'animation', * ), * Preview in http://daneden.github.io/animate.css/ * @since 4.4 */ class Vc_ParamAnimation { /** * @since 4.4 * @var array $settings parameter settings from vc_map */ protected $settings; /** * @since 4.4 * @var string $value parameter value */ protected $value; /** * Define available animation effects * @since 4.4 * vc_filter: vc_param_animation_style_list - to override animation styles * array * @return array */ protected function animationStyles() { $styles = array( array( 'values' => array( __( 'None', 'js_composer' ) => 'none', ), ), array( 'label' => __( 'Attention Seekers', 'js_composer' ), 'values' => array( // text to display => value __( 'bounce', 'js_composer' ) => array( 'value' => 'bounce', 'type' => 'other', ), __( 'flash', 'js_composer' ) => array( 'value' => 'flash', 'type' => 'other', ), __( 'pulse', 'js_composer' ) => array( 'value' => 'pulse', 'type' => 'other', ), __( 'rubberBand', 'js_composer' ) => array( 'value' => 'rubberBand', 'type' => 'other', ), __( 'shake', 'js_composer' ) => array( 'value' => 'shake', 'type' => 'other', ), __( 'swing', 'js_composer' ) => array( 'value' => 'swing', 'type' => 'other', ), __( 'tada', 'js_composer' ) => array( 'value' => 'tada', 'type' => 'other', ), __( 'wobble', 'js_composer' ) => array( 'value' => 'wobble', 'type' => 'other', ), ), ), array( 'label' => __( 'Bouncing Entrances', 'js_composer' ), 'values' => array( // text to display => value __( 'bounceIn', 'js_composer' ) => array( 'value' => 'bounceIn', 'type' => 'in', ), __( 'bounceInDown', 'js_composer' ) => array( 'value' => 'bounceInDown', 'type' => 'in', ), __( 'bounceInLeft', 'js_composer' ) => array( 'value' => 'bounceInLeft', 'type' => 'in', ), __( 'bounceInRight', 'js_composer' ) => array( 'value' => 'bounceInRight', 'type' => 'in', ), __( 'bounceInUp', 'js_composer' ) => array( 'value' => 'bounceInUp', 'type' => 'in', ), ), ), array( 'label' => __( 'Bouncing Exits', 'js_composer' ), 'values' => array( // text to display => value __( 'bounceOut', 'js_composer' ) => array( 'value' => 'bounceOut', 'type' => 'out', ), __( 'bounceOutDown', 'js_composer' ) => array( 'value' => 'bounceOutDown', 'type' => 'out', ), __( 'bounceOutLeft', 'js_composer' ) => array( 'value' => 'bounceOutLeft', 'type' => 'out', ), __( 'bounceOutRight', 'js_composer' ) => array( 'value' => 'bounceOutRight', 'type' => 'out', ), __( 'bounceOutUp', 'js_composer' ) => array( 'value' => 'bounceOutUp', 'type' => 'out', ), ), ), array( 'label' => __( 'Fading Entrances', 'js_composer' ), 'values' => array( // text to display => value __( 'fadeIn', 'js_composer' ) => array( 'value' => 'fadeIn', 'type' => 'in', ), __( 'fadeInDown', 'js_composer' ) => array( 'value' => 'fadeInDown', 'type' => 'in', ), __( 'fadeInDownBig', 'js_composer' ) => array( 'value' => 'fadeInDownBig', 'type' => 'in', ), __( 'fadeInLeft', 'js_composer' ) => array( 'value' => 'fadeInLeft', 'type' => 'in', ), __( 'fadeInLeftBig', 'js_composer' ) => array( 'value' => 'fadeInLeftBig', 'type' => 'in', ), __( 'fadeInRight', 'js_composer' ) => array( 'value' => 'fadeInRight', 'type' => 'in', ), __( 'fadeInRightBig', 'js_composer' ) => array( 'value' => 'fadeInRightBig', 'type' => 'in', ), __( 'fadeInUp', 'js_composer' ) => array( 'value' => 'fadeInUp', 'type' => 'in', ), __( 'fadeInUpBig', 'js_composer' ) => array( 'value' => 'fadeInUpBig', 'type' => 'in', ), ), ), array( 'label' => __( 'Fading Exits', 'js_composer' ), 'values' => array( __( 'fadeOut', 'js_composer' ) => array( 'value' => 'fadeOut', 'type' => 'out', ), __( 'fadeOutDown', 'js_composer' ) => array( 'value' => 'fadeOutDown', 'type' => 'out', ), __( 'fadeOutDownBig', 'js_composer' ) => array( 'value' => 'fadeOutDownBig', 'type' => 'out', ), __( 'fadeOutLeft', 'js_composer' ) => array( 'value' => 'fadeOutLeft', 'type' => 'out', ), __( 'fadeOutLeftBig', 'js_composer' ) => array( 'value' => 'fadeOutLeftBig', 'type' => 'out', ), __( 'fadeOutRight', 'js_composer' ) => array( 'value' => 'fadeOutRight', 'type' => 'out', ), __( 'fadeOutRightBig', 'js_composer' ) => array( 'value' => 'fadeOutRightBig', 'type' => 'out', ), __( 'fadeOutUp', 'js_composer' ) => array( 'value' => 'fadeOutUp', 'type' => 'out', ), __( 'fadeOutUpBig', 'js_composer' ) => array( 'value' => 'fadeOutUpBig', 'type' => 'out', ), ), ), array( 'label' => __( 'Flippers', 'js_composer' ), 'values' => array( __( 'flip', 'js_composer' ) => array( 'value' => 'flip', 'type' => 'other', ), __( 'flipInX', 'js_composer' ) => array( 'value' => 'flipInX', 'type' => 'in', ), __( 'flipInY', 'js_composer' ) => array( 'value' => 'flipInY', 'type' => 'in', ), __( 'flipOutX', 'js_composer' ) => array( 'value' => 'flipOutX', 'type' => 'out', ), __( 'flipOutY', 'js_composer' ) => array( 'value' => 'flipOutY', 'type' => 'out', ), ), ), array( 'label' => __( 'Lightspeed', 'js_composer' ), 'values' => array( __( 'lightSpeedIn', 'js_composer' ) => array( 'value' => 'lightSpeedIn', 'type' => 'in', ), __( 'lightSpeedOut', 'js_composer' ) => array( 'value' => 'lightSpeedOut', 'type' => 'out', ), ), ), array( 'label' => __( 'Rotating Entrances', 'js_composer' ), 'values' => array( __( 'rotateIn', 'js_composer' ) => array( 'value' => 'rotateIn', 'type' => 'in', ), __( 'rotateInDownLeft', 'js_composer' ) => array( 'value' => 'rotateInDownLeft', 'type' => 'in', ), __( 'rotateInDownRight', 'js_composer' ) => array( 'value' => 'rotateInDownRight', 'type' => 'in', ), __( 'rotateInUpLeft', 'js_composer' ) => array( 'value' => 'rotateInUpLeft', 'type' => 'in', ), __( 'rotateInUpRight', 'js_composer' ) => array( 'value' => 'rotateInUpRight', 'type' => 'in', ), ), ), array( 'label' => __( 'Rotating Exits', 'js_composer' ), 'values' => array( __( 'rotateOut', 'js_composer' ) => array( 'value' => 'rotateOut', 'type' => 'out', ), __( 'rotateOutDownLeft', 'js_composer' ) => array( 'value' => 'rotateOutDownLeft', 'type' => 'out', ), __( 'rotateOutDownRight', 'js_composer' ) => array( 'value' => 'rotateOutDownRight', 'type' => 'out', ), __( 'rotateOutUpLeft', 'js_composer' ) => array( 'value' => 'rotateOutUpLeft', 'type' => 'out', ), __( 'rotateOutUpRight', 'js_composer' ) => array( 'value' => 'rotateOutUpRight', 'type' => 'out', ), ), ), array( 'label' => __( 'Specials', 'js_composer' ), 'values' => array( __( 'hinge', 'js_composer' ) => array( 'value' => 'hinge', 'type' => 'out', ), __( 'rollIn', 'js_composer' ) => array( 'value' => 'rollIn', 'type' => 'in', ), __( 'rollOut', 'js_composer' ) => array( 'value' => 'rollOut', 'type' => 'out', ), ), ), array( 'label' => __( 'Zoom Entrances', 'js_composer' ), 'values' => array( __( 'zoomIn', 'js_composer' ) => array( 'value' => 'zoomIn', 'type' => 'in', ), __( 'zoomInDown', 'js_composer' ) => array( 'value' => 'zoomInDown', 'type' => 'in', ), __( 'zoomInLeft', 'js_composer' ) => array( 'value' => 'zoomInLeft', 'type' => 'in', ), __( 'zoomInRight', 'js_composer' ) => array( 'value' => 'zoomInRight', 'type' => 'in', ), __( 'zoomInUp', 'js_composer' ) => array( 'value' => 'zoomInUp', 'type' => 'in', ), ), ), array( 'label' => __( 'Zoom Exits', 'js_composer' ), 'values' => array( __( 'zoomOut', 'js_composer' ) => array( 'value' => 'zoomOut', 'type' => 'out', ), __( 'zoomOutDown', 'js_composer' ) => array( 'value' => 'zoomOutDown', 'type' => 'out', ), __( 'zoomOutLeft', 'js_composer' ) => array( 'value' => 'zoomOutLeft', 'type' => 'out', ), __( 'zoomOutRight', 'js_composer' ) => array( 'value' => 'zoomOutRight', 'type' => 'out', ), __( 'zoomOutUp', 'js_composer' ) => array( 'value' => 'zoomOutUp', 'type' => 'out', ), ), ), array( 'label' => __( 'Slide Entrances', 'js_composer' ), 'values' => array( __( 'slideInDown', 'js_composer' ) => array( 'value' => 'slideInDown', 'type' => 'in', ), __( 'slideInLeft', 'js_composer' ) => array( 'value' => 'slideInLeft', 'type' => 'in', ), __( 'slideInRight', 'js_composer' ) => array( 'value' => 'slideInRight', 'type' => 'in', ), __( 'slideInUp', 'js_composer' ) => array( 'value' => 'slideInUp', 'type' => 'in', ), ), ), array( 'label' => __( 'Slide Exits', 'js_composer' ), 'values' => array( __( 'slideOutDown', 'js_composer' ) => array( 'value' => 'slideOutDown', 'type' => 'out', ), __( 'slideOutLeft', 'js_composer' ) => array( 'value' => 'slideOutLeft', 'type' => 'out', ), __( 'slideOutRight', 'js_composer' ) => array( 'value' => 'slideOutRight', 'type' => 'out', ), __( 'slideOutUp', 'js_composer' ) => array( 'value' => 'slideOutUp', 'type' => 'out', ), ), ), ); /** * Used to override animation style list * @since 4.4 */ return apply_filters( 'vc_param_animation_style_list', $styles ); } /** * @param array $styles - array of styles to group * @param string|array $type - what type to return * * @since 4.4 * @return array */ public function groupStyleByType( $styles, $type ) { $grouped = array(); foreach ( $styles as $group ) { $inner_group = array( 'values' => array() ); if ( isset( $group['label'] ) ) { $inner_group['label'] = $group['label']; } foreach ( $group['values'] as $key => $value ) { if ( ( is_array( $value ) && isset( $value['type'] ) && ( ( is_string( $type ) && $value['type'] == $type ) || is_array( $type ) && in_array( $value['type'], $type ) ) ) || ! is_array( $value ) || ! isset( $value['type'] ) ) { $inner_group['values'][ $key ] = $value; } } if ( ! empty( $inner_group['values'] ) ) { $grouped[] = $inner_group; } } return $grouped; } /** * Set variables and register animate-css asset * @since 4.4 * * @param $settings * @param $value */ public function __construct( $settings, $value ) { $this->settings = $settings; $this->value = $value; wp_register_style( 'animate-css', vc_asset_url( 'lib/bower/animate-css/animate.min.css' ), array(), WPB_VC_VERSION ); } /** * Render edit form output * @since 4.4 * @return string */ public function render() { $output = '
    '; wp_enqueue_style( 'animate-css' ); $styles = $this->animationStyles(); if ( isset( $this->settings['settings']['type'] ) ) { $styles = $this->groupStyleByType( $styles, $this->settings['settings']['type'] ); } if ( isset( $this->settings['settings']['custom'] ) && is_array( $this->settings['settings']['custom'] ) ) { $styles = array_merge( $styles, $this->settings['settings']['custom'] ); } if ( is_array( $styles ) && ! empty( $styles ) ) { $left_side = '
    '; $build_style_select = "\n" . '' . "\n"; $left_side .= $build_style_select; $left_side .= '
    '; // Close left_side div $output .= $left_side; $right_side = '
    '; $right_side .= '
    '; $right_side .= '
    '; // Close right_side div $output .= $right_side; } $output .= '
    '; // Close Row $output .= ''; return $output; } } /** * Function for rendering param in edit form (add element) * Parse settings from vc_map and entered 'values'. * * @param array $settings - parameter settings in vc_map * @param string $value - parameter value * @param string $tag - shortcode tag * * vc_filter: vc_animation_style_render_filter - filter to override editor form * field output * * @since 4.4 * @return mixed|void rendered template for params in edit form * */ function vc_animation_style_form_field( $settings, $value, $tag ) { $field = new Vc_ParamAnimation( $settings, $value, $tag ); /** * Filter used to override full output of edit form field animation style * @since 4.4 */ return apply_filters( 'vc_animation_style_render_filter', $field->render(), $settings, $value, $tag ); } PK<\+include/params/colorpicker/.colorpicker.phpnu[PK<\P 9*include/params/colorpicker/colorpicker.phpnu[' . '' . '
    '; } PK<\/include/params/column_offset/.column_offset.phpnu[PK<\].include/params/column_offset/column_offset.phpnu[ 'Large', 'md' => 'Medium', 'sm' => 'Small', 'xs' => 'Extra small', ); /** * @var array */ protected $column_width_list = array(); /** * @param $settings * @param $value */ public function __construct( $settings, $value ) { $this->settings = $settings; $this->value = $value; $this->column_width_list = array( __( '1 column - 1/12', 'js_composer' ) => '1', __( '2 columns - 1/6', 'js_composer' ) => '2', __( '3 columns - 1/4', 'js_composer' ) => '3', __( '4 columns - 1/3', 'js_composer' ) => '4', __( '5 columns - 5/12', 'js_composer' ) => '5', __( '6 columns - 1/2', 'js_composer' ) => '6', __( '7 columns - 7/12', 'js_composer' ) => '7', __( '8 columns - 2/3', 'js_composer' ) => '8', __( '9 columns - 3/4', 'js_composer' ) => '9', __( '10 columns - 5/6', 'js_composer' ) => '10', __( '11 columns - 11/12', 'js_composer' ) => '11', __( '12 columns - 1/1', 'js_composer' ) => '12', ); } /** * @return string */ public function render() { ob_start(); vc_include_template( 'params/column_offset/template.tpl.php', array( 'settings' => $this->settings, 'value' => $this->value, 'data' => $this->valueData(), 'sizes' => $this->size_types, 'param' => $this, ) ); return ob_get_clean(); } /** * @return array|mixed */ public function valueData() { if ( ! isset( $this->data ) ) { $this->data = preg_split( '/\s+/', $this->value ); } return $this->data; } /** * @param $size * * @return string */ public function sizeControl( $size ) { if ( 'sm' === $size ) { return '' . __( 'Default value from width attribute', 'js_composer' ) . ''; } $empty_label = 'xs' === $size ? '' : __( 'Inherit from smaller', 'js_composer' ); $output = ''; return $output; } /** * @param $size * * @return string */ public function offsetControl( $size ) { $prefix = 'vc_col-' . $size . '-offset-'; $empty_label = 'xs' === $size ? __( 'No offset', 'js_composer' ) : __( 'Inherit from smaller', 'js_composer' ); $output = ''; return $output; } } /** * @param $settings * @param $value * * @return string */ function vc_column_offset_form_field( $settings, $value ) { $column_offset = new Vc_Column_Offset( $settings, $value ); return $column_offset->render(); } /** * @param $column_offset * @param $width * * @return mixed|string */ function vc_column_offset_class_merge( $column_offset, $width ) { // Remove offset settings if if ( '1' === vc_settings()->get( 'not_responsive_css' ) ) { $column_offset = preg_replace( '/vc_col\-(lg|md|xs)[^\s]*/', '', $column_offset ); } if ( preg_match( '/vc_col\-sm\-\d+/', $column_offset ) ) { return $column_offset; } return $width . ( empty( $column_offset ) ? '' : ' ' . $column_offset ); } /** * */ function vc_load_column_offset_param() { vc_add_shortcode_param( 'column_offset', 'vc_column_offset_form_field' ); } add_action( 'vc_load_default_params', 'vc_load_column_offset_param' ); PK<\)include/params/iconpicker/.iconpicker.phpnu[PK<\NW(include/params/iconpicker/iconpicker.phpnu[ 'iconpicker', * 'heading' => __( 'Icon', 'js_composer' ), * 'param_name' => 'icon_fontawesome', * 'settings' => array( * 'emptyIcon' => false, // default true, display an "EMPTY" * icon? - if false it will display first icon from set as default. * 'iconsPerPage' => 200, // default 100, how many icons * per/page to display * ), * 'dependency' => array( * 'element' => 'type', * 'value' => 'fontawesome', * ), * ), * vc_filter: vc_iconpicker-type-{your_icon_font_name} - filter to add new icon * font type. see example for vc_iconpicker-type-fontawesome in bottom of * this file Also // SEE HOOKS FOLDER FOR FONTS REGISTERING/ENQUEUE IN BASE * @path "/include/autoload/hook-vc-iconpicker-param.php" */ class Vc_IconPicker { /** * @since 4.4 * @var array - save current param data array from vc_map */ protected $settings; /** * @since 4.4 * @var string - save a current field value */ protected $value; /** * @since 4.4 * @var array - optional, can be used as self source from self array., you * can pass it also with filter see Vc_IconPicker::setDefaults */ protected $source = array(); /** * @since 4.4 * * @param $settings - param field data array * @param $value - param field value */ public function __construct( $settings, $value ) { $this->settings = $settings; $this->setDefaults(); $this->value = $value; // param field value } /** * Set default function will extend current settings with defaults * It can be used in Vc_IconPicker::render, but also it is passed to input * field and was hooked in composer-atts.js file See vc.atts.iconpicker in * wp-content/plugins/js_composer/assets/js/params/composer-atts.js init * method * - it initializes javascript logic, you can provide ANY default param to * it with 'settings' key * @since 4.4 */ protected function setDefaults() { if ( ! isset( $this->settings['settings'], $this->settings['settings']['type'] ) ) { $this->settings['settings']['type'] = 'fontawesome'; // Default type for icons } // More about this you can read in http://codeb.it/fonticonpicker/ if ( ! isset( $this->settings['settings'], $this->settings['settings']['hasSearch'] ) ) { // Whether or not to show the search bar. $this->settings['settings']['hasSearch'] = true; } if ( ! isset( $this->settings['settings'], $this->settings['settings']['emptyIcon'] ) ) { // Whether or not empty icon should be shown on the icon picker $this->settings['settings']['emptyIcon'] = true; } if ( ! isset( $this->settings['settings'], $this->settings['settings']['allCategoryText'] ) ) { // If categorized then use this option $this->settings['settings']['allCategoryText'] = __( 'From all categories', 'js_composer' ); } if ( ! isset( $this->settings['settings'], $this->settings['settings']['unCategorizedText'] ) ) { // If categorized then use this option $this->settings['settings']['unCategorizedText'] = __( 'Uncategorized', 'js_composer' ); } /** * Source for icons, can be passed via "mapping" or with filter vc_iconpicker-type-{your_type} (default fontawesome) * vc_filter: vc_iconpicker-type-{your_type} (default fontawesome) */ if ( isset( $this->settings['settings'], $this->settings['settings']['source'] ) ) { $this->source = $this->settings['settings']['source']; unset( $this->settings['settings']['source'] ); // We don't need this on frontend.(js) } } /** * Render edit form field type 'iconpicker' with selected settings and * provided value. It uses javascript file vc-icon-picker * (vc_iconpicker_base_register_js, vc_iconpicker_editor_jscss), see * wp-content/plugins/js_composer/include/autoload/hook-vc-iconpicker-param.php * folder * @since 4.4 * @return string - rendered param field for editor panel */ public function render() { $output = '
    '; $output .= 'settings['settings'] ) && ! empty( $this->settings['settings'] ) ) ? ' data-settings="' . esc_attr( json_encode( $this->settings['settings'] ) ) . '" ' : '' ) . ' />'; return $output; } } /** * Function for rendering param in edit form (add element) * Parse settings from vc_map and entered values. * * @param $settings * @param $value * @param $tag * * @since 4.4 * @return string - rendered template for params in edit form * */ function vc_iconpicker_form_field( $settings, $value, $tag ) { $icon_picker = new Vc_IconPicker( $settings, $value, $tag ); return apply_filters( 'vc_iconpicker_render_filter', $icon_picker->render() ); } // SEE HOOKS FOLDER FOR FONTS REGISTERING/ENQUEUE IN BASE @path "/include/autoload/hook-vc-iconpicker-param.php" add_filter( 'vc_iconpicker-type-fontawesome', 'vc_iconpicker_type_fontawesome' ); /** * Fontawesome icons from FontAwesome :) * * @param $icons - taken from filter - vc_map param field settings['source'] * provided icons (default empty array). If array categorized it will * auto-enable category dropdown * * @since 4.4 * @return array - of icons for iconpicker, can be categorized, or not. */ function vc_iconpicker_type_fontawesome( $icons ) { // Categorized icons ( you can also output simple array ( key=> value ), where key = icon class, value = icon readable name ). /** * @version 4.7 */ $fontawesome_icons = array( 'New in 4.7' => array( array( 'fa fa-handshake-o' => 'Handshake Outlined' ), array( 'fa fa-envelope-open' => 'Envelope Open(email, e-mail, letter, support, mail, message, notification)' ), array( 'fa fa-envelope-open-o' => 'Envelope Open Outlined(email, e-mail, letter, support, mail, message, notification)' ), array( 'fa fa-linode' => 'Linode' ), array( 'fa fa-address-book' => 'Address Book' ), array( 'fa fa-address-book-o' => 'Address Book Outlined' ), array( 'fa fa-address-card' => 'Address Card(vcard)' ), array( 'fa fa-address-card-o' => 'Address Card Outlined(vcard-o)' ), array( 'fa fa-user-circle' => 'User Circle' ), array( 'fa fa-user-circle-o' => 'User Circle Outlined' ), array( 'fa fa-user-o' => 'User Outlined' ), array( 'fa fa-id-badge' => 'Identification Badge' ), array( 'fa fa-id-card' => 'Identification Card(drivers-license)' ), array( 'fa fa-id-card-o' => 'Identification Card Outlined(drivers-license-o)' ), array( 'fa fa-quora' => 'Quora' ), array( 'fa fa-free-code-camp' => 'Free Code Camp' ), array( 'fa fa-telegram' => 'Telegram' ), array( 'fa fa-thermometer-full' => 'Thermometer Full(thermometer-4, thermometer)' ), array( 'fa fa-thermometer-three-quarters' => 'Thermometer 3/4 Full(thermometer-3)' ), array( 'fa fa-thermometer-half' => 'Thermometer 1/2 Full(thermometer-2)' ), array( 'fa fa-thermometer-quarter' => 'Thermometer 1/4 Full(thermometer-1)' ), array( 'fa fa-thermometer-empty' => 'Thermometer Empty(thermometer-0)' ), array( 'fa fa-shower' => 'Shower' ), array( 'fa fa-bath' => 'Bath(bathtub, s15)' ), array( 'fa fa-podcast' => 'Podcast' ), array( 'fa fa-window-maximize' => 'Window Maximize' ), array( 'fa fa-window-minimize' => 'Window Minimize' ), array( 'fa fa-window-restore' => 'Window Restore' ), array( 'fa fa-window-close' => 'Window Close(times-rectangle)' ), array( 'fa fa-window-close-o' => 'Window Close Outline(times-rectangle-o)' ), array( 'fa fa-bandcamp' => 'Bandcamp' ), array( 'fa fa-grav' => 'Grav' ), array( 'fa fa-etsy' => 'Etsy' ), array( 'fa fa-imdb' => 'IMDB' ), array( 'fa fa-ravelry' => 'Ravelry' ), array( 'fa fa-eercast' => 'Eercast' ), array( 'fa fa-microchip' => 'Microchip' ), array( 'fa fa-snowflake-o' => 'Snowflake Outlined' ), array( 'fa fa-superpowers' => 'Superpowers' ), array( 'fa fa-wpexplorer' => 'WPExplorer' ), array( 'fa fa-meetup' => 'Meetup' ), ), 'Web Application Icons' => array( array( 'fa fa-glass' => 'Glass(martini, drink, bar, alcohol, liquor)' ), array( 'fa fa-music' => 'Music(note, sound)' ), array( 'fa fa-search' => 'Search(magnify, zoom, enlarge, bigger)' ), array( 'fa fa-envelope-o' => 'Envelope Outlined(email, e-mail, letter, support, mail, message, notification)' ), array( 'fa fa-heart' => 'Heart(love, like, favorite)' ), array( 'fa fa-star' => 'Star(award, achievement, night, rating, score, favorite)' ), array( 'fa fa-star-o' => 'Star Outlined(award, achievement, night, rating, score, favorite)' ), array( 'fa fa-user' => 'User(person, man, head, profile)' ), array( 'fa fa-film' => 'Film(movie)' ), array( 'fa fa-check' => 'Check(checkmark, done, todo, agree, accept, confirm, tick, ok)' ), array( 'fa fa-times' => 'Times(close, exit, x, cross)(remove, close)' ), array( 'fa fa-search-plus' => 'Search Plus(magnify, zoom, enlarge, bigger)' ), array( 'fa fa-search-minus' => 'Search Minus(magnify, minify, zoom, smaller)' ), array( 'fa fa-power-off' => 'Power Off(on)' ), array( 'fa fa-signal' => 'signal(graph, bars)' ), array( 'fa fa-cog' => 'cog(settings)(gear)' ), array( 'fa fa-trash-o' => 'Trash Outlined(garbage, delete, remove, trash, hide)' ), array( 'fa fa-home' => 'home(main, house)' ), array( 'fa fa-clock-o' => 'Clock Outlined(watch, timer, late, timestamp)' ), array( 'fa fa-road' => 'road(street)' ), array( 'fa fa-download' => 'Download(import)' ), array( 'fa fa-inbox' => 'inbox' ), array( 'fa fa-refresh' => 'refresh(reload, sync)' ), array( 'fa fa-lock' => 'lock(protect, admin, security)' ), array( 'fa fa-flag' => 'flag(report, notification, notify)' ), array( 'fa fa-headphones' => 'headphones(sound, listen, music, audio)' ), array( 'fa fa-volume-off' => 'volume-off(audio, mute, sound, music)' ), array( 'fa fa-volume-down' => 'volume-down(audio, lower, quieter, sound, music)' ), array( 'fa fa-volume-up' => 'volume-up(audio, higher, louder, sound, music)' ), array( 'fa fa-qrcode' => 'qrcode(scan)' ), array( 'fa fa-barcode' => 'barcode(scan)' ), array( 'fa fa-tag' => 'tag(label)' ), array( 'fa fa-tags' => 'tags(labels)' ), array( 'fa fa-book' => 'book(read, documentation)' ), array( 'fa fa-bookmark' => 'bookmark(save)' ), array( 'fa fa-print' => 'print' ), array( 'fa fa-camera' => 'camera(photo, picture, record)' ), array( 'fa fa-video-camera' => 'Video Camera(film, movie, record)' ), array( 'fa fa-picture-o' => 'Picture Outlined(photo, image)' ), array( 'fa fa-pencil' => 'pencil(write, edit, update)' ), array( 'fa fa-map-marker' => 'map-marker(map, pin, location, coordinates, localize, address, travel, where, place)' ), array( 'fa fa-adjust' => 'adjust(contrast)' ), array( 'fa fa-tint' => 'tint(raindrop, waterdrop, drop, droplet)' ), array( 'fa fa-pencil-square-o' => 'Pencil Square Outlined(write, edit, update)(edit)' ), array( 'fa fa-share-square-o' => 'Share Square Outlined(social, send, arrow)' ), array( 'fa fa-check-square-o' => 'Check Square Outlined(todo, done, agree, accept, confirm, ok)' ), array( 'fa fa-arrows' => 'Arrows(move, reorder, resize)' ), array( 'fa fa-plus-circle' => 'Plus Circle(add, new, create, expand)' ), array( 'fa fa-minus-circle' => 'Minus Circle(delete, remove, trash, hide)' ), array( 'fa fa-times-circle' => 'Times Circle(close, exit, x)' ), array( 'fa fa-check-circle' => 'Check Circle(todo, done, agree, accept, confirm, ok)' ), array( 'fa fa-question-circle' => 'Question Circle(help, information, unknown, support)' ), array( 'fa fa-info-circle' => 'Info Circle(help, information, more, details)' ), array( 'fa fa-crosshairs' => 'Crosshairs(picker)' ), array( 'fa fa-times-circle-o' => 'Times Circle Outlined(close, exit, x)' ), array( 'fa fa-check-circle-o' => 'Check Circle Outlined(todo, done, agree, accept, confirm, ok)' ), array( 'fa fa-ban' => 'ban(delete, remove, trash, hide, block, stop, abort, cancel)' ), array( 'fa fa-share' => 'Share(mail-forward)' ), array( 'fa fa-plus' => 'plus(add, new, create, expand)' ), array( 'fa fa-minus' => 'minus(hide, minify, delete, remove, trash, hide, collapse)' ), array( 'fa fa-asterisk' => 'asterisk(details)' ), array( 'fa fa-exclamation-circle' => 'Exclamation Circle(warning, error, problem, notification, alert)' ), array( 'fa fa-gift' => 'gift(present)' ), array( 'fa fa-leaf' => 'leaf(eco, nature, plant)' ), array( 'fa fa-fire' => 'fire(flame, hot, popular)' ), array( 'fa fa-eye' => 'Eye(show, visible, views)' ), array( 'fa fa-eye-slash' => 'Eye Slash(toggle, show, hide, visible, visiblity, views)' ), array( 'fa fa-exclamation-triangle' => 'Exclamation Triangle(warning, error, problem, notification, alert)(warning)' ), array( 'fa fa-plane' => 'plane(travel, trip, location, destination, airplane, fly, mode)' ), array( 'fa fa-calendar' => 'calendar(date, time, when, event)' ), array( 'fa fa-random' => 'random(sort, shuffle)' ), array( 'fa fa-comment' => 'comment(speech, notification, note, chat, bubble, feedback, message, texting, sms, conversation)' ), array( 'fa fa-magnet' => 'magnet' ), array( 'fa fa-retweet' => 'retweet(refresh, reload, share)' ), array( 'fa fa-shopping-cart' => 'shopping-cart(checkout, buy, purchase, payment)' ), array( 'fa fa-folder' => 'Folder' ), array( 'fa fa-folder-open' => 'Folder Open' ), array( 'fa fa-arrows-v' => 'Arrows Vertical(resize)' ), array( 'fa fa-arrows-h' => 'Arrows Horizontal(resize)' ), array( 'fa fa-bar-chart' => 'Bar Chart(graph, analytics, statistics)(bar-chart-o)' ), array( 'fa fa-camera-retro' => 'camera-retro(photo, picture, record)' ), array( 'fa fa-key' => 'key(unlock, password)' ), array( 'fa fa-cogs' => 'cogs(settings)(gears)' ), array( 'fa fa-comments' => 'comments(speech, notification, note, chat, bubble, feedback, message, texting, sms, conversation)' ), array( 'fa fa-thumbs-o-up' => 'Thumbs Up Outlined(like, approve, favorite, agree, hand)' ), array( 'fa fa-thumbs-o-down' => 'Thumbs Down Outlined(dislike, disapprove, disagree, hand)' ), array( 'fa fa-star-half' => 'star-half(award, achievement, rating, score)' ), array( 'fa fa-heart-o' => 'Heart Outlined(love, like, favorite)' ), array( 'fa fa-sign-out' => 'Sign Out(log out, logout, leave, exit, arrow)' ), array( 'fa fa-thumb-tack' => 'Thumb Tack(marker, pin, location, coordinates)' ), array( 'fa fa-external-link' => 'External Link(open, new)' ), array( 'fa fa-sign-in' => 'Sign In(enter, join, log in, login, sign up, sign in, signin, signup, arrow)' ), array( 'fa fa-trophy' => 'trophy(award, achievement, cup, winner, game)' ), array( 'fa fa-upload' => 'Upload(import)' ), array( 'fa fa-lemon-o' => 'Lemon Outlined(food)' ), array( 'fa fa-phone' => 'Phone(call, voice, number, support, earphone, telephone)' ), array( 'fa fa-square-o' => 'Square Outlined(block, square, box)' ), array( 'fa fa-bookmark-o' => 'Bookmark Outlined(save)' ), array( 'fa fa-phone-square' => 'Phone Square(call, voice, number, support, telephone)' ), array( 'fa fa-unlock' => 'unlock(protect, admin, password, lock)' ), array( 'fa fa-credit-card' => 'credit-card(money, buy, debit, checkout, purchase, payment)' ), array( 'fa fa-rss' => 'rss(blog)(feed)' ), array( 'fa fa-hdd-o' => 'HDD(harddrive, hard drive, storage, save)' ), array( 'fa fa-bullhorn' => 'bullhorn(announcement, share, broadcast, louder, megaphone)' ), array( 'fa fa-bell' => 'bell(alert, reminder, notification)' ), array( 'fa fa-certificate' => 'certificate(badge, star)' ), array( 'fa fa-globe' => 'Globe(world, planet, map, place, travel, earth, global, translate, all, language, localize, location, coordinates, country)' ), array( 'fa fa-wrench' => 'Wrench(settings, fix, update, spanner)' ), array( 'fa fa-tasks' => 'Tasks(progress, loading, downloading, downloads, settings)' ), array( 'fa fa-filter' => 'Filter(funnel, options)' ), array( 'fa fa-briefcase' => 'Briefcase(work, business, office, luggage, bag)' ), array( 'fa fa-users' => 'Users(people, profiles, persons)(group)' ), array( 'fa fa-cloud' => 'Cloud(save)' ), array( 'fa fa-flask' => 'Flask(science, beaker, experimental, labs)' ), array( 'fa fa-square' => 'Square(block, box)' ), array( 'fa fa-bars' => 'Bars(menu, drag, reorder, settings, list, ul, ol, checklist, todo, list, hamburger)(navicon, reorder)' ), array( 'fa fa-magic' => 'magic(wizard, automatic, autocomplete)' ), array( 'fa fa-truck' => 'truck(shipping)' ), array( 'fa fa-money' => 'Money(cash, money, buy, checkout, purchase, payment)' ), array( 'fa fa-sort' => 'Sort(order)(unsorted)' ), array( 'fa fa-sort-desc' => 'Sort Descending(dropdown, more, menu, arrow)(sort-down)' ), array( 'fa fa-sort-asc' => 'Sort Ascending(arrow)(sort-up)' ), array( 'fa fa-envelope' => 'Envelope(email, e-mail, letter, support, mail, message, notification)' ), array( 'fa fa-gavel' => 'Gavel(judge, lawyer, opinion)(legal)' ), array( 'fa fa-tachometer' => 'Tachometer(speedometer, fast)(dashboard)' ), array( 'fa fa-comment-o' => 'comment-o(speech, notification, note, chat, bubble, feedback, message, texting, sms, conversation)' ), array( 'fa fa-comments-o' => 'comments-o(speech, notification, note, chat, bubble, feedback, message, texting, sms, conversation)' ), array( 'fa fa-bolt' => 'Lightning Bolt(lightning, weather)(flash)' ), array( 'fa fa-sitemap' => 'Sitemap(directory, hierarchy, organization)' ), array( 'fa fa-umbrella' => 'Umbrella' ), array( 'fa fa-lightbulb-o' => 'Lightbulb Outlined(idea, inspiration)' ), array( 'fa fa-exchange' => 'Exchange(transfer, arrows, arrow)' ), array( 'fa fa-cloud-download' => 'Cloud Download(import)' ), array( 'fa fa-cloud-upload' => 'Cloud Upload(import)' ), array( 'fa fa-suitcase' => 'Suitcase(trip, luggage, travel, move, baggage)' ), array( 'fa fa-bell-o' => 'Bell Outlined(alert, reminder, notification)' ), array( 'fa fa-coffee' => 'Coffee(morning, mug, breakfast, tea, drink, cafe)' ), array( 'fa fa-cutlery' => 'Cutlery(food, restaurant, spoon, knife, dinner, eat)' ), array( 'fa fa-building-o' => 'Building Outlined(work, business, apartment, office, company)' ), array( 'fa fa-fighter-jet' => 'fighter-jet(fly, plane, airplane, quick, fast, travel)' ), array( 'fa fa-beer' => 'beer(alcohol, stein, drink, mug, bar, liquor)' ), array( 'fa fa-plus-square' => 'Plus Square(add, new, create, expand)' ), array( 'fa fa-desktop' => 'Desktop(monitor, screen, desktop, computer, demo, device)' ), array( 'fa fa-laptop' => 'Laptop(demo, computer, device)' ), array( 'fa fa-tablet' => 'tablet(ipad, device)' ), array( 'fa fa-mobile' => 'Mobile Phone(cell phone, cellphone, text, call, iphone, number, telephone)(mobile-phone)' ), array( 'fa fa-circle-o' => 'Circle Outlined' ), array( 'fa fa-quote-left' => 'quote-left' ), array( 'fa fa-quote-right' => 'quote-right' ), array( 'fa fa-spinner' => 'Spinner(loading, progress)' ), array( 'fa fa-circle' => 'Circle(dot, notification)' ), array( 'fa fa-reply' => 'Reply(mail-reply)' ), array( 'fa fa-folder-o' => 'Folder Outlined' ), array( 'fa fa-folder-open-o' => 'Folder Open Outlined' ), array( 'fa fa-smile-o' => 'Smile Outlined(face, emoticon, happy, approve, satisfied, rating)' ), array( 'fa fa-frown-o' => 'Frown Outlined(face, emoticon, sad, disapprove, rating)' ), array( 'fa fa-meh-o' => 'Meh Outlined(face, emoticon, rating, neutral)' ), array( 'fa fa-gamepad' => 'Gamepad(controller)' ), array( 'fa fa-keyboard-o' => 'Keyboard Outlined(type, input)' ), array( 'fa fa-flag-o' => 'Flag Outlined(report, notification)' ), array( 'fa fa-flag-checkered' => 'flag-checkered(report, notification, notify)' ), array( 'fa fa-terminal' => 'Terminal(command, prompt, code)' ), array( 'fa fa-code' => 'Code(html, brackets)' ), array( 'fa fa-reply-all' => 'reply-all(mail-reply-all)' ), array( 'fa fa-star-half-o' => 'Star Half Outlined(award, achievement, rating, score)(star-half-empty, star-half-full)' ), array( 'fa fa-location-arrow' => 'location-arrow(map, coordinates, location, address, place, where)' ), array( 'fa fa-crop' => 'crop' ), array( 'fa fa-code-fork' => 'code-fork(git, fork, vcs, svn, github, rebase, version, merge)' ), array( 'fa fa-question' => 'Question(help, information, unknown, support)' ), array( 'fa fa-info' => 'Info(help, information, more, details)' ), array( 'fa fa-exclamation' => 'exclamation(warning, error, problem, notification, notify, alert)' ), array( 'fa fa-eraser' => 'eraser(remove, delete)' ), array( 'fa fa-puzzle-piece' => 'Puzzle Piece(addon, add-on, section)' ), array( 'fa fa-microphone' => 'microphone(record, voice, sound)' ), array( 'fa fa-microphone-slash' => 'Microphone Slash(record, voice, sound, mute)' ), array( 'fa fa-shield' => 'shield(award, achievement, security, winner)' ), array( 'fa fa-calendar-o' => 'calendar-o(date, time, when, event)' ), array( 'fa fa-fire-extinguisher' => 'fire-extinguisher' ), array( 'fa fa-rocket' => 'rocket(app)' ), array( 'fa fa-anchor' => 'Anchor(link)' ), array( 'fa fa-unlock-alt' => 'Unlock Alt(protect, admin, password, lock)' ), array( 'fa fa-bullseye' => 'Bullseye(target)' ), array( 'fa fa-ellipsis-h' => 'Ellipsis Horizontal(dots)' ), array( 'fa fa-ellipsis-v' => 'Ellipsis Vertical(dots)' ), array( 'fa fa-rss-square' => 'RSS Square(feed, blog)' ), array( 'fa fa-ticket' => 'Ticket(movie, pass, support)' ), array( 'fa fa-minus-square' => 'Minus Square(hide, minify, delete, remove, trash, hide, collapse)' ), array( 'fa fa-minus-square-o' => 'Minus Square Outlined(hide, minify, delete, remove, trash, hide, collapse)' ), array( 'fa fa-level-up' => 'Level Up(arrow)' ), array( 'fa fa-level-down' => 'Level Down(arrow)' ), array( 'fa fa-check-square' => 'Check Square(checkmark, done, todo, agree, accept, confirm, ok)' ), array( 'fa fa-pencil-square' => 'Pencil Square(write, edit, update)' ), array( 'fa fa-external-link-square' => 'External Link Square(open, new)' ), array( 'fa fa-share-square' => 'Share Square(social, send)' ), array( 'fa fa-compass' => 'Compass(safari, directory, menu, location)' ), array( 'fa fa-caret-square-o-down' => 'Caret Square Outlined Down(more, dropdown, menu)(toggle-down)' ), array( 'fa fa-caret-square-o-up' => 'Caret Square Outlined Up(toggle-up)' ), array( 'fa fa-caret-square-o-right' => 'Caret Square Outlined Right(next, forward)(toggle-right)' ), array( 'fa fa-sort-alpha-asc' => 'Sort Alpha Ascending' ), array( 'fa fa-sort-alpha-desc' => 'Sort Alpha Descending' ), array( 'fa fa-sort-amount-asc' => 'Sort Amount Ascending' ), array( 'fa fa-sort-amount-desc' => 'Sort Amount Descending' ), array( 'fa fa-sort-numeric-asc' => 'Sort Numeric Ascending(numbers)' ), array( 'fa fa-sort-numeric-desc' => 'Sort Numeric Descending(numbers)' ), array( 'fa fa-thumbs-up' => 'thumbs-up(like, favorite, approve, agree, hand)' ), array( 'fa fa-thumbs-down' => 'thumbs-down(dislike, disapprove, disagree, hand)' ), array( 'fa fa-female' => 'Female(woman, user, person, profile)' ), array( 'fa fa-male' => 'Male(man, user, person, profile)' ), array( 'fa fa-sun-o' => 'Sun Outlined(weather, contrast, lighter, brighten, day)' ), array( 'fa fa-moon-o' => 'Moon Outlined(night, darker, contrast)' ), array( 'fa fa-archive' => 'Archive(box, storage)' ), array( 'fa fa-bug' => 'Bug(report, insect)' ), array( 'fa fa-caret-square-o-left' => 'Caret Square Outlined Left(previous, back)(toggle-left)' ), array( 'fa fa-dot-circle-o' => 'Dot Circle Outlined(target, bullseye, notification)' ), array( 'fa fa-wheelchair' => 'Wheelchair(handicap, person)' ), array( 'fa fa-plus-square-o' => 'Plus Square Outlined(add, new, create, expand)' ), array( 'fa fa-space-shuttle' => 'Space Shuttle' ), array( 'fa fa-envelope-square' => 'Envelope Square(email, e-mail, letter, support, mail, message, notification)' ), array( 'fa fa-university' => 'University(institution, bank)' ), array( 'fa fa-graduation-cap' => 'Graduation Cap(learning, school, student)(mortar-board)' ), array( 'fa fa-language' => 'Language(translate)' ), array( 'fa fa-fax' => 'Fax' ), array( 'fa fa-building' => 'Building(work, business, apartment, office, company)' ), array( 'fa fa-child' => 'Child' ), array( 'fa fa-paw' => 'Paw(pet)' ), array( 'fa fa-spoon' => 'spoon' ), array( 'fa fa-cube' => 'Cube' ), array( 'fa fa-cubes' => 'Cubes' ), array( 'fa fa-recycle' => 'Recycle' ), array( 'fa fa-car' => 'Car(vehicle)(automobile)' ), array( 'fa fa-taxi' => 'Taxi(vehicle)(cab)' ), array( 'fa fa-tree' => 'Tree' ), array( 'fa fa-database' => 'Database' ), array( 'fa fa-file-pdf-o' => 'PDF File Outlined' ), array( 'fa fa-file-word-o' => 'Word File Outlined' ), array( 'fa fa-file-excel-o' => 'Excel File Outlined' ), array( 'fa fa-file-powerpoint-o' => 'Powerpoint File Outlined' ), array( 'fa fa-file-image-o' => 'Image File Outlined(file-photo-o, file-picture-o)' ), array( 'fa fa-file-archive-o' => 'Archive File Outlined(file-zip-o)' ), array( 'fa fa-file-audio-o' => 'Audio File Outlined(file-sound-o)' ), array( 'fa fa-file-video-o' => 'Video File Outlined(file-movie-o)' ), array( 'fa fa-file-code-o' => 'Code File Outlined' ), array( 'fa fa-life-ring' => 'Life Ring(life-bouy, life-buoy, life-saver, support)' ), array( 'fa fa-circle-o-notch' => 'Circle Outlined Notched' ), array( 'fa fa-paper-plane' => 'Paper Plane(send)' ), array( 'fa fa-paper-plane-o' => 'Paper Plane Outlined(send-o)' ), array( 'fa fa-history' => 'History' ), array( 'fa fa-circle-thin' => 'Circle Outlined Thin' ), array( 'fa fa-sliders' => 'Sliders(settings)' ), array( 'fa fa-share-alt' => 'Share Alt' ), array( 'fa fa-share-alt-square' => 'Share Alt Square' ), array( 'fa fa-bomb' => 'Bomb' ), array( 'fa fa-futbol-o' => 'Futbol Outlined(soccer-ball-o)' ), array( 'fa fa-tty' => 'TTY' ), array( 'fa fa-binoculars' => 'Binoculars' ), array( 'fa fa-plug' => 'Plug(power, connect)' ), array( 'fa fa-newspaper-o' => 'Newspaper Outlined(press)' ), array( 'fa fa-wifi' => 'WiFi' ), array( 'fa fa-calculator' => 'Calculator' ), array( 'fa fa-bell-slash' => 'Bell Slash' ), array( 'fa fa-bell-slash-o' => 'Bell Slash Outlined' ), array( 'fa fa-trash' => 'Trash(garbage, delete, remove, hide)' ), array( 'fa fa-copyright' => 'Copyright' ), array( 'fa fa-at' => 'At(email, e-mail)' ), array( 'fa fa-eyedropper' => 'Eyedropper' ), array( 'fa fa-paint-brush' => 'Paint Brush' ), array( 'fa fa-birthday-cake' => 'Birthday Cake' ), array( 'fa fa-area-chart' => 'Area Chart(graph, analytics, statistics)' ), array( 'fa fa-pie-chart' => 'Pie Chart(graph, analytics, statistics)' ), array( 'fa fa-line-chart' => 'Line Chart(graph, analytics, statistics)' ), array( 'fa fa-toggle-off' => 'Toggle Off' ), array( 'fa fa-toggle-on' => 'Toggle On' ), array( 'fa fa-bicycle' => 'Bicycle(vehicle, bike)' ), array( 'fa fa-bus' => 'Bus(vehicle)' ), array( 'fa fa-cc' => 'Closed Captions' ), array( 'fa fa-cart-plus' => 'Add to Shopping Cart(add, shopping)' ), array( 'fa fa-cart-arrow-down' => 'Shopping Cart Arrow Down(shopping)' ), array( 'fa fa-diamond' => 'Diamond(gem, gemstone)' ), array( 'fa fa-ship' => 'Ship(boat, sea)' ), array( 'fa fa-user-secret' => 'User Secret(whisper, spy, incognito, privacy)' ), array( 'fa fa-motorcycle' => 'Motorcycle(vehicle, bike)' ), array( 'fa fa-street-view' => 'Street View(map)' ), array( 'fa fa-heartbeat' => 'Heartbeat(ekg)' ), array( 'fa fa-server' => 'Server' ), array( 'fa fa-user-plus' => 'Add User(sign up, signup)' ), array( 'fa fa-user-times' => 'Remove User' ), array( 'fa fa-bed' => 'Bed(travel)(hotel)' ), array( 'fa fa-battery-full' => 'Battery Full(power)(battery-4, battery)' ), array( 'fa fa-battery-three-quarters' => 'Battery 3/4 Full(power)(battery-3)' ), array( 'fa fa-battery-half' => 'Battery 1/2 Full(power)(battery-2)' ), array( 'fa fa-battery-quarter' => 'Battery 1/4 Full(power)(battery-1)' ), array( 'fa fa-battery-empty' => 'Battery Empty(power)(battery-0)' ), array( 'fa fa-mouse-pointer' => 'Mouse Pointer' ), array( 'fa fa-i-cursor' => 'I Beam Cursor' ), array( 'fa fa-object-group' => 'Object Group' ), array( 'fa fa-object-ungroup' => 'Object Ungroup' ), array( 'fa fa-sticky-note' => 'Sticky Note' ), array( 'fa fa-sticky-note-o' => 'Sticky Note Outlined' ), array( 'fa fa-clone' => 'Clone(copy)' ), array( 'fa fa-balance-scale' => 'Balance Scale' ), array( 'fa fa-hourglass-o' => 'Hourglass Outlined' ), array( 'fa fa-hourglass-start' => 'Hourglass Start(hourglass-1)' ), array( 'fa fa-hourglass-half' => 'Hourglass Half(hourglass-2)' ), array( 'fa fa-hourglass-end' => 'Hourglass End(hourglass-3)' ), array( 'fa fa-hourglass' => 'Hourglass' ), array( 'fa fa-hand-rock-o' => 'Rock (Hand)(hand-grab-o)' ), array( 'fa fa-hand-paper-o' => 'Paper (Hand)(stop)(hand-stop-o)' ), array( 'fa fa-hand-scissors-o' => 'Scissors (Hand)' ), array( 'fa fa-hand-lizard-o' => 'Lizard (Hand)' ), array( 'fa fa-hand-spock-o' => 'Spock (Hand)' ), array( 'fa fa-hand-pointer-o' => 'Hand Pointer' ), array( 'fa fa-hand-peace-o' => 'Hand Peace' ), array( 'fa fa-trademark' => 'Trademark' ), array( 'fa fa-registered' => 'Registered Trademark' ), array( 'fa fa-creative-commons' => 'Creative Commons' ), array( 'fa fa-television' => 'Television(display, computer, monitor)(tv)' ), array( 'fa fa-calendar-plus-o' => 'Calendar Plus Outlined' ), array( 'fa fa-calendar-minus-o' => 'Calendar Minus Outlined' ), array( 'fa fa-calendar-times-o' => 'Calendar Times Outlined' ), array( 'fa fa-calendar-check-o' => 'Calendar Check Outlined(ok)' ), array( 'fa fa-industry' => 'Industry(factory)' ), array( 'fa fa-map-pin' => 'Map Pin' ), array( 'fa fa-map-signs' => 'Map Signs' ), array( 'fa fa-map-o' => 'Map Outlined' ), array( 'fa fa-map' => 'Map' ), array( 'fa fa-commenting' => 'Commenting(speech, notification, note, chat, bubble, feedback, message, texting, sms, conversation)' ), array( 'fa fa-commenting-o' => 'Commenting Outlined(speech, notification, note, chat, bubble, feedback, message, texting, sms, conversation)' ), array( 'fa fa-credit-card-alt' => 'Credit Card(money, buy, debit, checkout, purchase, payment, credit card)' ), array( 'fa fa-shopping-bag' => 'Shopping Bag' ), array( 'fa fa-shopping-basket' => 'Shopping Basket' ), array( 'fa fa-hashtag' => 'Hashtag' ), array( 'fa fa-bluetooth' => 'Bluetooth' ), array( 'fa fa-bluetooth-b' => 'Bluetooth' ), array( 'fa fa-percent' => 'Percent' ), array( 'fa fa-universal-access' => 'Universal Access' ), array( 'fa fa-wheelchair-alt' => 'Wheelchair Alt(handicap, person)' ), array( 'fa fa-question-circle-o' => 'Question Circle Outlined' ), array( 'fa fa-blind' => 'Blind' ), array( 'fa fa-audio-description' => 'Audio Description' ), array( 'fa fa-volume-control-phone' => 'Volume Control Phone(telephone)' ), array( 'fa fa-braille' => 'Braille' ), array( 'fa fa-assistive-listening-systems' => 'Assistive Listening Systems' ), array( 'fa fa-american-sign-language-interpreting' => 'American Sign Language Interpreting(asl-interpreting)' ), array( 'fa fa-deaf' => 'Deaf(deafness, hard-of-hearing)' ), array( 'fa fa-sign-language' => 'Sign Language(signing)' ), array( 'fa fa-low-vision' => 'Low Vision' ), array( 'fa fa-handshake-o' => 'Handshake Outlined' ), array( 'fa fa-envelope-open' => 'Envelope Open(email, e-mail, letter, support, mail, message, notification)' ), array( 'fa fa-envelope-open-o' => 'Envelope Open Outlined(email, e-mail, letter, support, mail, message, notification)' ), array( 'fa fa-address-book' => 'Address Book' ), array( 'fa fa-address-book-o' => 'Address Book Outlined' ), array( 'fa fa-address-card' => 'Address Card(vcard)' ), array( 'fa fa-address-card-o' => 'Address Card Outlined(vcard-o)' ), array( 'fa fa-user-circle' => 'User Circle' ), array( 'fa fa-user-circle-o' => 'User Circle Outlined' ), array( 'fa fa-user-o' => 'User Outlined' ), array( 'fa fa-id-badge' => 'Identification Badge' ), array( 'fa fa-id-card' => 'Identification Card(drivers-license)' ), array( 'fa fa-id-card-o' => 'Identification Card Outlined(drivers-license-o)' ), array( 'fa fa-thermometer-full' => 'Thermometer Full(thermometer-4, thermometer)' ), array( 'fa fa-thermometer-three-quarters' => 'Thermometer 3/4 Full(thermometer-3)' ), array( 'fa fa-thermometer-half' => 'Thermometer 1/2 Full(thermometer-2)' ), array( 'fa fa-thermometer-quarter' => 'Thermometer 1/4 Full(thermometer-1)' ), array( 'fa fa-thermometer-empty' => 'Thermometer Empty(thermometer-0)' ), array( 'fa fa-shower' => 'Shower' ), array( 'fa fa-bath' => 'Bath(bathtub, s15)' ), array( 'fa fa-podcast' => 'Podcast' ), array( 'fa fa-window-maximize' => 'Window Maximize' ), array( 'fa fa-window-minimize' => 'Window Minimize' ), array( 'fa fa-window-restore' => 'Window Restore' ), array( 'fa fa-window-close' => 'Window Close(times-rectangle)' ), array( 'fa fa-window-close-o' => 'Window Close Outline(times-rectangle-o)' ), array( 'fa fa-microchip' => 'Microchip' ), array( 'fa fa-snowflake-o' => 'Snowflake Outlined' ), ), 'Medical Icons' => array( array( 'fa fa-heart' => 'Heart(love, like, favorite)' ), array( 'fa fa-heart-o' => 'Heart Outlined(love, like, favorite)' ), array( 'fa fa-user-md' => 'user-md(doctor, profile, medical, nurse)' ), array( 'fa fa-stethoscope' => 'Stethoscope' ), array( 'fa fa-hospital-o' => 'hospital Outlined(building)' ), array( 'fa fa-ambulance' => 'ambulance(vehicle, support, help)' ), array( 'fa fa-medkit' => 'medkit(first aid, firstaid, help, support, health)' ), array( 'fa fa-h-square' => 'H Square(hospital, hotel)' ), array( 'fa fa-plus-square' => 'Plus Square(add, new, create, expand)' ), array( 'fa fa-wheelchair' => 'Wheelchair(handicap, person)' ), array( 'fa fa-heartbeat' => 'Heartbeat(ekg)' ), array( 'fa fa-wheelchair-alt' => 'Wheelchair Alt(handicap, person)' ), ), 'Text Editor Icons' => array( array( 'fa fa-th-large' => 'th-large(blocks, squares, boxes, grid)' ), array( 'fa fa-th' => 'th(blocks, squares, boxes, grid)' ), array( 'fa fa-th-list' => 'th-list(ul, ol, checklist, finished, completed, done, todo)' ), array( 'fa fa-file-o' => 'File Outlined(new, page, pdf, document)' ), array( 'fa fa-repeat' => 'Repeat(redo, forward)(rotate-right)' ), array( 'fa fa-list-alt' => 'list-alt(ul, ol, checklist, finished, completed, done, todo)' ), array( 'fa fa-font' => 'font(text)' ), array( 'fa fa-bold' => 'bold' ), array( 'fa fa-italic' => 'italic(italics)' ), array( 'fa fa-text-height' => 'text-height' ), array( 'fa fa-text-width' => 'text-width' ), array( 'fa fa-align-left' => 'align-left(text)' ), array( 'fa fa-align-center' => 'align-center(middle, text)' ), array( 'fa fa-align-right' => 'align-right(text)' ), array( 'fa fa-align-justify' => 'align-justify(text)' ), array( 'fa fa-list' => 'list(ul, ol, checklist, finished, completed, done, todo)' ), array( 'fa fa-outdent' => 'Outdent(dedent)' ), array( 'fa fa-indent' => 'Indent' ), array( 'fa fa-link' => 'Link(chain)(chain)' ), array( 'fa fa-scissors' => 'Scissors(cut)' ), array( 'fa fa-files-o' => 'Files Outlined(duplicate, clone, copy)(copy)' ), array( 'fa fa-paperclip' => 'Paperclip(attachment)' ), array( 'fa fa-floppy-o' => 'Floppy Outlined(save)' ), array( 'fa fa-list-ul' => 'list-ul(ul, ol, checklist, todo, list)' ), array( 'fa fa-list-ol' => 'list-ol(ul, ol, checklist, list, todo, list, numbers)' ), array( 'fa fa-strikethrough' => 'Strikethrough' ), array( 'fa fa-underline' => 'Underline' ), array( 'fa fa-table' => 'table(data, excel, spreadsheet)' ), array( 'fa fa-columns' => 'Columns(split, panes)' ), array( 'fa fa-undo' => 'Undo(back)(rotate-left)' ), array( 'fa fa-clipboard' => 'Clipboard(copy)(paste)' ), array( 'fa fa-file-text-o' => 'File Text Outlined(new, page, pdf, document)' ), array( 'fa fa-chain-broken' => 'Chain Broken(remove)(unlink)' ), array( 'fa fa-superscript' => 'superscript(exponential)' ), array( 'fa fa-subscript' => 'subscript' ), array( 'fa fa-eraser' => 'eraser(remove, delete)' ), array( 'fa fa-file' => 'File(new, page, pdf, document)' ), array( 'fa fa-file-text' => 'File Text(new, page, pdf, document)' ), array( 'fa fa-header' => 'header(heading)' ), array( 'fa fa-paragraph' => 'paragraph' ), ), 'Spinner Icons' => array( array( 'fa fa-cog' => 'cog(settings)(gear)' ), array( 'fa fa-refresh' => 'refresh(reload, sync)' ), array( 'fa fa-spinner' => 'Spinner(loading, progress)' ), array( 'fa fa-circle-o-notch' => 'Circle Outlined Notched' ), ), 'File Type Icons' => array( array( 'fa fa-file-o' => 'File Outlined(new, page, pdf, document)' ), array( 'fa fa-file-text-o' => 'File Text Outlined(new, page, pdf, document)' ), array( 'fa fa-file' => 'File(new, page, pdf, document)' ), array( 'fa fa-file-text' => 'File Text(new, page, pdf, document)' ), array( 'fa fa-file-pdf-o' => 'PDF File Outlined' ), array( 'fa fa-file-word-o' => 'Word File Outlined' ), array( 'fa fa-file-excel-o' => 'Excel File Outlined' ), array( 'fa fa-file-powerpoint-o' => 'Powerpoint File Outlined' ), array( 'fa fa-file-image-o' => 'Image File Outlined(file-photo-o, file-picture-o)' ), array( 'fa fa-file-archive-o' => 'Archive File Outlined(file-zip-o)' ), array( 'fa fa-file-audio-o' => 'Audio File Outlined(file-sound-o)' ), array( 'fa fa-file-video-o' => 'Video File Outlined(file-movie-o)' ), array( 'fa fa-file-code-o' => 'Code File Outlined' ), ), 'Directional Icons' => array( array( 'fa fa-arrow-circle-o-down' => 'Arrow Circle Outlined Down(download)' ), array( 'fa fa-arrow-circle-o-up' => 'Arrow Circle Outlined Up' ), array( 'fa fa-arrows' => 'Arrows(move, reorder, resize)' ), array( 'fa fa-chevron-left' => 'chevron-left(bracket, previous, back)' ), array( 'fa fa-chevron-right' => 'chevron-right(bracket, next, forward)' ), array( 'fa fa-arrow-left' => 'arrow-left(previous, back)' ), array( 'fa fa-arrow-right' => 'arrow-right(next, forward)' ), array( 'fa fa-arrow-up' => 'arrow-up' ), array( 'fa fa-arrow-down' => 'arrow-down(download)' ), array( 'fa fa-chevron-up' => 'chevron-up' ), array( 'fa fa-chevron-down' => 'chevron-down' ), array( 'fa fa-arrows-v' => 'Arrows Vertical(resize)' ), array( 'fa fa-arrows-h' => 'Arrows Horizontal(resize)' ), array( 'fa fa-hand-o-right' => 'Hand Outlined Right(point, right, next, forward, finger)' ), array( 'fa fa-hand-o-left' => 'Hand Outlined Left(point, left, previous, back, finger)' ), array( 'fa fa-hand-o-up' => 'Hand Outlined Up(point, finger)' ), array( 'fa fa-hand-o-down' => 'Hand Outlined Down(point, finger)' ), array( 'fa fa-arrow-circle-left' => 'Arrow Circle Left(previous, back)' ), array( 'fa fa-arrow-circle-right' => 'Arrow Circle Right(next, forward)' ), array( 'fa fa-arrow-circle-up' => 'Arrow Circle Up' ), array( 'fa fa-arrow-circle-down' => 'Arrow Circle Down(download)' ), array( 'fa fa-arrows-alt' => 'Arrows Alt(expand, enlarge, fullscreen, bigger, move, reorder, resize, arrow)' ), array( 'fa fa-caret-down' => 'Caret Down(more, dropdown, menu, triangle down, arrow)' ), array( 'fa fa-caret-up' => 'Caret Up(triangle up, arrow)' ), array( 'fa fa-caret-left' => 'Caret Left(previous, back, triangle left, arrow)' ), array( 'fa fa-caret-right' => 'Caret Right(next, forward, triangle right, arrow)' ), array( 'fa fa-exchange' => 'Exchange(transfer, arrows, arrow)' ), array( 'fa fa-angle-double-left' => 'Angle Double Left(laquo, quote, previous, back, arrows)' ), array( 'fa fa-angle-double-right' => 'Angle Double Right(raquo, quote, next, forward, arrows)' ), array( 'fa fa-angle-double-up' => 'Angle Double Up(arrows)' ), array( 'fa fa-angle-double-down' => 'Angle Double Down(arrows)' ), array( 'fa fa-angle-left' => 'angle-left(previous, back, arrow)' ), array( 'fa fa-angle-right' => 'angle-right(next, forward, arrow)' ), array( 'fa fa-angle-up' => 'angle-up(arrow)' ), array( 'fa fa-angle-down' => 'angle-down(arrow)' ), array( 'fa fa-chevron-circle-left' => 'Chevron Circle Left(previous, back, arrow)' ), array( 'fa fa-chevron-circle-right' => 'Chevron Circle Right(next, forward, arrow)' ), array( 'fa fa-chevron-circle-up' => 'Chevron Circle Up(arrow)' ), array( 'fa fa-chevron-circle-down' => 'Chevron Circle Down(more, dropdown, menu, arrow)' ), array( 'fa fa-caret-square-o-down' => 'Caret Square Outlined Down(more, dropdown, menu)(toggle-down)' ), array( 'fa fa-caret-square-o-up' => 'Caret Square Outlined Up(toggle-up)' ), array( 'fa fa-caret-square-o-right' => 'Caret Square Outlined Right(next, forward)(toggle-right)' ), array( 'fa fa-long-arrow-down' => 'Long Arrow Down' ), array( 'fa fa-long-arrow-up' => 'Long Arrow Up' ), array( 'fa fa-long-arrow-left' => 'Long Arrow Left(previous, back)' ), array( 'fa fa-long-arrow-right' => 'Long Arrow Right' ), array( 'fa fa-arrow-circle-o-right' => 'Arrow Circle Outlined Right(next, forward)' ), array( 'fa fa-arrow-circle-o-left' => 'Arrow Circle Outlined Left(previous, back)' ), array( 'fa fa-caret-square-o-left' => 'Caret Square Outlined Left(previous, back)(toggle-left)' ), ), 'Video Player Icons' => array( array( 'fa fa-play-circle-o' => 'Play Circle Outlined' ), array( 'fa fa-step-backward' => 'step-backward(rewind, previous, beginning, start, first)' ), array( 'fa fa-fast-backward' => 'fast-backward(rewind, previous, beginning, start, first)' ), array( 'fa fa-backward' => 'backward(rewind, previous)' ), array( 'fa fa-play' => 'play(start, playing, music, sound)' ), array( 'fa fa-pause' => 'pause(wait)' ), array( 'fa fa-stop' => 'stop(block, box, square)' ), array( 'fa fa-forward' => 'forward(forward, next)' ), array( 'fa fa-fast-forward' => 'fast-forward(next, end, last)' ), array( 'fa fa-step-forward' => 'step-forward(next, end, last)' ), array( 'fa fa-eject' => 'eject' ), array( 'fa fa-expand' => 'Expand(enlarge, bigger, resize)' ), array( 'fa fa-compress' => 'Compress(collapse, combine, contract, merge, smaller)' ), array( 'fa fa-random' => 'random(sort, shuffle)' ), array( 'fa fa-arrows-alt' => 'Arrows Alt(expand, enlarge, fullscreen, bigger, move, reorder, resize, arrow)' ), array( 'fa fa-play-circle' => 'Play Circle(start, playing)' ), array( 'fa fa-youtube-play' => 'YouTube Play(start, playing)' ), array( 'fa fa-pause-circle' => 'Pause Circle' ), array( 'fa fa-pause-circle-o' => 'Pause Circle Outlined' ), array( 'fa fa-stop-circle' => 'Stop Circle' ), array( 'fa fa-stop-circle-o' => 'Stop Circle Outlined' ), ), 'Form Control Icons' => array( array( 'fa fa-check-square-o' => 'Check Square Outlined(todo, done, agree, accept, confirm, ok)' ), array( 'fa fa-square-o' => 'Square Outlined(block, square, box)' ), array( 'fa fa-square' => 'Square(block, box)' ), array( 'fa fa-plus-square' => 'Plus Square(add, new, create, expand)' ), array( 'fa fa-circle-o' => 'Circle Outlined' ), array( 'fa fa-circle' => 'Circle(dot, notification)' ), array( 'fa fa-minus-square' => 'Minus Square(hide, minify, delete, remove, trash, hide, collapse)' ), array( 'fa fa-minus-square-o' => 'Minus Square Outlined(hide, minify, delete, remove, trash, hide, collapse)' ), array( 'fa fa-check-square' => 'Check Square(checkmark, done, todo, agree, accept, confirm, ok)' ), array( 'fa fa-dot-circle-o' => 'Dot Circle Outlined(target, bullseye, notification)' ), array( 'fa fa-plus-square-o' => 'Plus Square Outlined(add, new, create, expand)' ), ), 'Transportation Icons' => array( array( 'fa fa-plane' => 'plane(travel, trip, location, destination, airplane, fly, mode)' ), array( 'fa fa-truck' => 'truck(shipping)' ), array( 'fa fa-ambulance' => 'ambulance(vehicle, support, help)' ), array( 'fa fa-fighter-jet' => 'fighter-jet(fly, plane, airplane, quick, fast, travel)' ), array( 'fa fa-rocket' => 'rocket(app)' ), array( 'fa fa-wheelchair' => 'Wheelchair(handicap, person)' ), array( 'fa fa-space-shuttle' => 'Space Shuttle' ), array( 'fa fa-car' => 'Car(vehicle)(automobile)' ), array( 'fa fa-taxi' => 'Taxi(vehicle)(cab)' ), array( 'fa fa-bicycle' => 'Bicycle(vehicle, bike)' ), array( 'fa fa-bus' => 'Bus(vehicle)' ), array( 'fa fa-ship' => 'Ship(boat, sea)' ), array( 'fa fa-motorcycle' => 'Motorcycle(vehicle, bike)' ), array( 'fa fa-train' => 'Train' ), array( 'fa fa-subway' => 'Subway' ), array( 'fa fa-wheelchair-alt' => 'Wheelchair Alt(handicap, person)' ), ), 'Chart Icons' => array( array( 'fa fa-bar-chart' => 'Bar Chart(graph, analytics, statistics)(bar-chart-o)' ), array( 'fa fa-area-chart' => 'Area Chart(graph, analytics, statistics)' ), array( 'fa fa-pie-chart' => 'Pie Chart(graph, analytics, statistics)' ), array( 'fa fa-line-chart' => 'Line Chart(graph, analytics, statistics)' ), ), 'Brand Icons' => array( array( 'fa fa-twitter-square' => 'Twitter Square(tweet, social network)' ), array( 'fa fa-facebook-square' => 'Facebook Square(social network)' ), array( 'fa fa-linkedin-square' => 'LinkedIn Square' ), array( 'fa fa-github-square' => 'GitHub Square(octocat)' ), array( 'fa fa-twitter' => 'Twitter(tweet, social network)' ), array( 'fa fa-facebook' => 'Facebook(social network)(facebook-f)' ), array( 'fa fa-github' => 'GitHub(octocat)' ), array( 'fa fa-pinterest' => 'Pinterest' ), array( 'fa fa-pinterest-square' => 'Pinterest Square' ), array( 'fa fa-google-plus-square' => 'Google Plus Square(social network)' ), array( 'fa fa-google-plus' => 'Google Plus(social network)' ), array( 'fa fa-linkedin' => 'LinkedIn' ), array( 'fa fa-github-alt' => 'GitHub Alt(octocat)' ), array( 'fa fa-maxcdn' => 'MaxCDN' ), array( 'fa fa-html5' => 'HTML 5 Logo' ), array( 'fa fa-css3' => 'CSS 3 Logo(code)' ), array( 'fa fa-btc' => 'Bitcoin (BTC)(bitcoin)' ), array( 'fa fa-youtube-square' => 'YouTube Square(video, film)' ), array( 'fa fa-youtube' => 'YouTube(video, film)' ), array( 'fa fa-xing' => 'Xing' ), array( 'fa fa-xing-square' => 'Xing Square' ), array( 'fa fa-youtube-play' => 'YouTube Play(start, playing)' ), array( 'fa fa-dropbox' => 'Dropbox' ), array( 'fa fa-stack-overflow' => 'Stack Overflow' ), array( 'fa fa-instagram' => 'Instagram' ), array( 'fa fa-flickr' => 'Flickr' ), array( 'fa fa-adn' => 'App.net' ), array( 'fa fa-bitbucket' => 'Bitbucket(git)' ), array( 'fa fa-bitbucket-square' => 'Bitbucket Square(git)' ), array( 'fa fa-tumblr' => 'Tumblr' ), array( 'fa fa-tumblr-square' => 'Tumblr Square' ), array( 'fa fa-apple' => 'Apple(osx, food)' ), array( 'fa fa-windows' => 'Windows(microsoft)' ), array( 'fa fa-android' => 'Android(robot)' ), array( 'fa fa-linux' => 'Linux(tux)' ), array( 'fa fa-dribbble' => 'Dribbble' ), array( 'fa fa-skype' => 'Skype' ), array( 'fa fa-foursquare' => 'Foursquare' ), array( 'fa fa-trello' => 'Trello' ), array( 'fa fa-gratipay' => 'Gratipay (Gittip)(heart, like, favorite, love)(gittip)' ), array( 'fa fa-vk' => 'VK' ), array( 'fa fa-weibo' => 'Weibo' ), array( 'fa fa-renren' => 'Renren' ), array( 'fa fa-pagelines' => 'Pagelines(leaf, leaves, tree, plant, eco, nature)' ), array( 'fa fa-stack-exchange' => 'Stack Exchange' ), array( 'fa fa-vimeo-square' => 'Vimeo Square' ), array( 'fa fa-slack' => 'Slack Logo(hashtag, anchor, hash)' ), array( 'fa fa-wordpress' => 'WordPress Logo' ), array( 'fa fa-openid' => 'OpenID' ), array( 'fa fa-yahoo' => 'Yahoo Logo' ), array( 'fa fa-google' => 'Google Logo' ), array( 'fa fa-reddit' => 'reddit Logo' ), array( 'fa fa-reddit-square' => 'reddit Square' ), array( 'fa fa-stumbleupon-circle' => 'StumbleUpon Circle' ), array( 'fa fa-stumbleupon' => 'StumbleUpon Logo' ), array( 'fa fa-delicious' => 'Delicious Logo' ), array( 'fa fa-digg' => 'Digg Logo' ), array( 'fa fa-pied-piper-pp' => 'Pied Piper PP Logo (Old)' ), array( 'fa fa-pied-piper-alt' => 'Pied Piper Alternate Logo' ), array( 'fa fa-drupal' => 'Drupal Logo' ), array( 'fa fa-joomla' => 'Joomla Logo' ), array( 'fa fa-behance' => 'Behance' ), array( 'fa fa-behance-square' => 'Behance Square' ), array( 'fa fa-steam' => 'Steam' ), array( 'fa fa-steam-square' => 'Steam Square' ), array( 'fa fa-spotify' => 'Spotify' ), array( 'fa fa-deviantart' => 'deviantART' ), array( 'fa fa-soundcloud' => 'SoundCloud' ), array( 'fa fa-vine' => 'Vine' ), array( 'fa fa-codepen' => 'Codepen' ), array( 'fa fa-jsfiddle' => 'jsFiddle' ), array( 'fa fa-rebel' => 'Rebel Alliance(ra, resistance)' ), array( 'fa fa-empire' => 'Galactic Empire(ge)' ), array( 'fa fa-git-square' => 'Git Square' ), array( 'fa fa-git' => 'Git' ), array( 'fa fa-hacker-news' => 'Hacker News(y-combinator-square, yc-square)' ), array( 'fa fa-tencent-weibo' => 'Tencent Weibo' ), array( 'fa fa-qq' => 'QQ' ), array( 'fa fa-weixin' => 'Weixin (WeChat)(wechat)' ), array( 'fa fa-share-alt' => 'Share Alt' ), array( 'fa fa-share-alt-square' => 'Share Alt Square' ), array( 'fa fa-slideshare' => 'Slideshare' ), array( 'fa fa-twitch' => 'Twitch' ), array( 'fa fa-yelp' => 'Yelp' ), array( 'fa fa-paypal' => 'Paypal' ), array( 'fa fa-google-wallet' => 'Google Wallet' ), array( 'fa fa-cc-visa' => 'Visa Credit Card' ), array( 'fa fa-cc-mastercard' => 'MasterCard Credit Card' ), array( 'fa fa-cc-discover' => 'Discover Credit Card' ), array( 'fa fa-cc-amex' => 'American Express Credit Card(amex)' ), array( 'fa fa-cc-paypal' => 'Paypal Credit Card' ), array( 'fa fa-cc-stripe' => 'Stripe Credit Card' ), array( 'fa fa-lastfm' => 'last.fm' ), array( 'fa fa-lastfm-square' => 'last.fm Square' ), array( 'fa fa-ioxhost' => 'ioxhost' ), array( 'fa fa-angellist' => 'AngelList' ), array( 'fa fa-meanpath' => 'meanpath' ), array( 'fa fa-buysellads' => 'BuySellAds' ), array( 'fa fa-connectdevelop' => 'Connect Develop' ), array( 'fa fa-dashcube' => 'DashCube' ), array( 'fa fa-forumbee' => 'Forumbee' ), array( 'fa fa-leanpub' => 'Leanpub' ), array( 'fa fa-sellsy' => 'Sellsy' ), array( 'fa fa-shirtsinbulk' => 'Shirts in Bulk' ), array( 'fa fa-simplybuilt' => 'SimplyBuilt' ), array( 'fa fa-skyatlas' => 'skyatlas' ), array( 'fa fa-facebook-official' => 'Facebook Official' ), array( 'fa fa-pinterest-p' => 'Pinterest P' ), array( 'fa fa-whatsapp' => 'What\'s App' ), array( 'fa fa-viacoin' => 'Viacoin' ), array( 'fa fa-medium' => 'Medium' ), array( 'fa fa-y-combinator' => 'Y Combinator(yc)' ), array( 'fa fa-optin-monster' => 'Optin Monster' ), array( 'fa fa-opencart' => 'OpenCart' ), array( 'fa fa-expeditedssl' => 'ExpeditedSSL' ), array( 'fa fa-cc-jcb' => 'JCB Credit Card' ), array( 'fa fa-cc-diners-club' => 'Diner\'s Club Credit Card' ), array( 'fa fa-gg' => 'GG Currency' ), array( 'fa fa-gg-circle' => 'GG Currency Circle' ), array( 'fa fa-tripadvisor' => 'TripAdvisor' ), array( 'fa fa-odnoklassniki' => 'Odnoklassniki' ), array( 'fa fa-odnoklassniki-square' => 'Odnoklassniki Square' ), array( 'fa fa-get-pocket' => 'Get Pocket' ), array( 'fa fa-wikipedia-w' => 'Wikipedia W' ), array( 'fa fa-safari' => 'Safari(browser)' ), array( 'fa fa-chrome' => 'Chrome(browser)' ), array( 'fa fa-firefox' => 'Firefox(browser)' ), array( 'fa fa-opera' => 'Opera' ), array( 'fa fa-internet-explorer' => 'Internet-explorer(browser, ie)' ), array( 'fa fa-contao' => 'Contao' ), array( 'fa fa-500px' => '500px' ), array( 'fa fa-amazon' => 'Amazon' ), array( 'fa fa-houzz' => 'Houzz' ), array( 'fa fa-vimeo' => 'Vimeo' ), array( 'fa fa-black-tie' => 'Font Awesome Black Tie' ), array( 'fa fa-fonticons' => 'Fonticons' ), array( 'fa fa-reddit-alien' => 'reddit Alien' ), array( 'fa fa-edge' => 'Edge Browser(browser, ie)' ), array( 'fa fa-codiepie' => 'Codie Pie' ), array( 'fa fa-modx' => 'MODX' ), array( 'fa fa-fort-awesome' => 'Fort Awesome' ), array( 'fa fa-usb' => 'USB' ), array( 'fa fa-product-hunt' => 'Product Hunt' ), array( 'fa fa-mixcloud' => 'Mixcloud' ), array( 'fa fa-scribd' => 'Scribd' ), array( 'fa fa-bluetooth' => 'Bluetooth' ), array( 'fa fa-bluetooth-b' => 'Bluetooth' ), array( 'fa fa-gitlab' => 'GitLab' ), array( 'fa fa-wpbeginner' => 'WPBeginner' ), array( 'fa fa-wpforms' => 'WPForms' ), array( 'fa fa-envira' => 'Envira Gallery(leaf)' ), array( 'fa fa-glide' => 'Glide' ), array( 'fa fa-glide-g' => 'Glide G' ), array( 'fa fa-viadeo' => 'Viadeo' ), array( 'fa fa-viadeo-square' => 'Viadeo Square' ), array( 'fa fa-snapchat' => 'Snapchat' ), array( 'fa fa-snapchat-ghost' => 'Snapchat Ghost' ), array( 'fa fa-snapchat-square' => 'Snapchat Square' ), array( 'fa fa-pied-piper' => 'Pied Piper Logo' ), array( 'fa fa-first-order' => 'First Order' ), array( 'fa fa-yoast' => 'Yoast' ), array( 'fa fa-themeisle' => 'ThemeIsle' ), array( 'fa fa-google-plus-official' => 'Google Plus Official(google-plus-circle)' ), array( 'fa fa-font-awesome' => 'Font Awesome(fa)' ), array( 'fa fa-linode' => 'Linode' ), array( 'fa fa-quora' => 'Quora' ), array( 'fa fa-free-code-camp' => 'Free Code Camp' ), array( 'fa fa-telegram' => 'Telegram' ), array( 'fa fa-bandcamp' => 'Bandcamp' ), array( 'fa fa-grav' => 'Grav' ), array( 'fa fa-etsy' => 'Etsy' ), array( 'fa fa-imdb' => 'IMDB' ), array( 'fa fa-ravelry' => 'Ravelry' ), array( 'fa fa-eercast' => 'Eercast' ), array( 'fa fa-superpowers' => 'Superpowers' ), array( 'fa fa-wpexplorer' => 'WPExplorer' ), array( 'fa fa-meetup' => 'Meetup' ), ), 'Hand Icons' => array( array( 'fa fa-thumbs-o-up' => 'Thumbs Up Outlined(like, approve, favorite, agree, hand)' ), array( 'fa fa-thumbs-o-down' => 'Thumbs Down Outlined(dislike, disapprove, disagree, hand)' ), array( 'fa fa-hand-o-right' => 'Hand Outlined Right(point, right, next, forward, finger)' ), array( 'fa fa-hand-o-left' => 'Hand Outlined Left(point, left, previous, back, finger)' ), array( 'fa fa-hand-o-up' => 'Hand Outlined Up(point, finger)' ), array( 'fa fa-hand-o-down' => 'Hand Outlined Down(point, finger)' ), array( 'fa fa-thumbs-up' => 'thumbs-up(like, favorite, approve, agree, hand)' ), array( 'fa fa-thumbs-down' => 'thumbs-down(dislike, disapprove, disagree, hand)' ), array( 'fa fa-hand-rock-o' => 'Rock (Hand)(hand-grab-o)' ), array( 'fa fa-hand-paper-o' => 'Paper (Hand)(stop)(hand-stop-o)' ), array( 'fa fa-hand-scissors-o' => 'Scissors (Hand)' ), array( 'fa fa-hand-lizard-o' => 'Lizard (Hand)' ), array( 'fa fa-hand-spock-o' => 'Spock (Hand)' ), array( 'fa fa-hand-pointer-o' => 'Hand Pointer' ), array( 'fa fa-hand-peace-o' => 'Hand Peace' ), ), 'Payment Icons' => array( array( 'fa fa-credit-card' => 'credit-card(money, buy, debit, checkout, purchase, payment)' ), array( 'fa fa-paypal' => 'Paypal' ), array( 'fa fa-google-wallet' => 'Google Wallet' ), array( 'fa fa-cc-visa' => 'Visa Credit Card' ), array( 'fa fa-cc-mastercard' => 'MasterCard Credit Card' ), array( 'fa fa-cc-discover' => 'Discover Credit Card' ), array( 'fa fa-cc-amex' => 'American Express Credit Card(amex)' ), array( 'fa fa-cc-paypal' => 'Paypal Credit Card' ), array( 'fa fa-cc-stripe' => 'Stripe Credit Card' ), array( 'fa fa-cc-jcb' => 'JCB Credit Card' ), array( 'fa fa-cc-diners-club' => 'Diner\'s Club Credit Card' ), array( 'fa fa-credit-card-alt' => 'Credit Card(money, buy, debit, checkout, purchase, payment, credit card)' ), ), 'Currency Icons' => array( array( 'fa fa-money' => 'Money(cash, money, buy, checkout, purchase, payment)' ), array( 'fa fa-eur' => 'Euro (EUR)(euro)' ), array( 'fa fa-gbp' => 'GBP' ), array( 'fa fa-usd' => 'US Dollar(dollar)' ), array( 'fa fa-inr' => 'Indian Rupee (INR)(rupee)' ), array( 'fa fa-jpy' => 'Japanese Yen (JPY)(cny, rmb, yen)' ), array( 'fa fa-rub' => 'Russian Ruble (RUB)(ruble, rouble)' ), array( 'fa fa-krw' => 'Korean Won (KRW)(won)' ), array( 'fa fa-btc' => 'Bitcoin (BTC)(bitcoin)' ), array( 'fa fa-try' => 'Turkish Lira (TRY)(turkish-lira)' ), array( 'fa fa-ils' => 'Shekel (ILS)(shekel, sheqel)' ), array( 'fa fa-gg' => 'GG Currency' ), array( 'fa fa-gg-circle' => 'GG Currency Circle' ), ), 'Accessibility Icons' => array( array( 'fa fa-wheelchair' => 'Wheelchair(handicap, person)' ), array( 'fa fa-tty' => 'TTY' ), array( 'fa fa-cc' => 'Closed Captions' ), array( 'fa fa-universal-access' => 'Universal Access' ), array( 'fa fa-wheelchair-alt' => 'Wheelchair Alt(handicap, person)' ), array( 'fa fa-question-circle-o' => 'Question Circle Outlined' ), array( 'fa fa-blind' => 'Blind' ), array( 'fa fa-audio-description' => 'Audio Description' ), array( 'fa fa-volume-control-phone' => 'Volume Control Phone(telephone)' ), array( 'fa fa-braille' => 'Braille' ), array( 'fa fa-assistive-listening-systems' => 'Assistive Listening Systems' ), array( 'fa fa-american-sign-language-interpreting' => 'American Sign Language Interpreting(asl-interpreting)' ), array( 'fa fa-deaf' => 'Deaf(deafness, hard-of-hearing)' ), array( 'fa fa-sign-language' => 'Sign Language(signing)' ), array( 'fa fa-low-vision' => 'Low Vision' ), ), 'Gender Icons' => array( array( 'fa fa-venus' => 'Venus(female)' ), array( 'fa fa-mars' => 'Mars(male)' ), array( 'fa fa-mercury' => 'Mercury(transgender)' ), array( 'fa fa-transgender' => 'Transgender(intersex)' ), array( 'fa fa-transgender-alt' => 'Transgender Alt' ), array( 'fa fa-venus-double' => 'Venus Double' ), array( 'fa fa-mars-double' => 'Mars Double' ), array( 'fa fa-venus-mars' => 'Venus Mars' ), array( 'fa fa-mars-stroke' => 'Mars Stroke' ), array( 'fa fa-mars-stroke-v' => 'Mars Stroke Vertical' ), array( 'fa fa-mars-stroke-h' => 'Mars Stroke Horizontal' ), array( 'fa fa-neuter' => 'Neuter' ), array( 'fa fa-genderless' => 'Genderless' ), ), ); return array_merge( $icons, $fontawesome_icons ); } add_filter( 'vc_iconpicker-type-openiconic', 'vc_iconpicker_type_openiconic' ); /** * Openicons icons from fontello.com * * @param $icons - taken from filter - vc_map param field settings['source'] * provided icons (default empty array). If array categorized it will * auto-enable category dropdown * * @since 4.4 * @return array - of icons for iconpicker, can be categorized, or not. */ function vc_iconpicker_type_openiconic( $icons ) { $openiconic_icons = array( array( 'vc-oi vc-oi-dial' => 'Dial' ), array( 'vc-oi vc-oi-pilcrow' => 'Pilcrow' ), array( 'vc-oi vc-oi-at' => 'At' ), array( 'vc-oi vc-oi-hash' => 'Hash' ), array( 'vc-oi vc-oi-key-inv' => 'Key-inv' ), array( 'vc-oi vc-oi-key' => 'Key' ), array( 'vc-oi vc-oi-chart-pie-alt' => 'Chart-pie-alt' ), array( 'vc-oi vc-oi-chart-pie' => 'Chart-pie' ), array( 'vc-oi vc-oi-chart-bar' => 'Chart-bar' ), array( 'vc-oi vc-oi-umbrella' => 'Umbrella' ), array( 'vc-oi vc-oi-moon-inv' => 'Moon-inv' ), array( 'vc-oi vc-oi-mobile' => 'Mobile' ), array( 'vc-oi vc-oi-cd' => 'Cd' ), array( 'vc-oi vc-oi-split' => 'Split' ), array( 'vc-oi vc-oi-exchange' => 'Exchange' ), array( 'vc-oi vc-oi-block' => 'Block' ), array( 'vc-oi vc-oi-resize-full' => 'Resize-full' ), array( 'vc-oi vc-oi-article-alt' => 'Article-alt' ), array( 'vc-oi vc-oi-article' => 'Article' ), array( 'vc-oi vc-oi-pencil-alt' => 'Pencil-alt' ), array( 'vc-oi vc-oi-undo' => 'Undo' ), array( 'vc-oi vc-oi-attach' => 'Attach' ), array( 'vc-oi vc-oi-link' => 'Link' ), array( 'vc-oi vc-oi-search' => 'Search' ), array( 'vc-oi vc-oi-mail' => 'Mail' ), array( 'vc-oi vc-oi-heart' => 'Heart' ), array( 'vc-oi vc-oi-comment' => 'Comment' ), array( 'vc-oi vc-oi-resize-full-alt' => 'Resize-full-alt' ), array( 'vc-oi vc-oi-lock' => 'Lock' ), array( 'vc-oi vc-oi-book-open' => 'Book-open' ), array( 'vc-oi vc-oi-arrow-curved' => 'Arrow-curved' ), array( 'vc-oi vc-oi-equalizer' => 'Equalizer' ), array( 'vc-oi vc-oi-heart-empty' => 'Heart-empty' ), array( 'vc-oi vc-oi-lock-empty' => 'Lock-empty' ), array( 'vc-oi vc-oi-comment-inv' => 'Comment-inv' ), array( 'vc-oi vc-oi-folder' => 'Folder' ), array( 'vc-oi vc-oi-resize-small' => 'Resize-small' ), array( 'vc-oi vc-oi-play' => 'Play' ), array( 'vc-oi vc-oi-cursor' => 'Cursor' ), array( 'vc-oi vc-oi-aperture' => 'Aperture' ), array( 'vc-oi vc-oi-play-circle2' => 'Play-circle2' ), array( 'vc-oi vc-oi-resize-small-alt' => 'Resize-small-alt' ), array( 'vc-oi vc-oi-folder-empty' => 'Folder-empty' ), array( 'vc-oi vc-oi-comment-alt' => 'Comment-alt' ), array( 'vc-oi vc-oi-lock-open' => 'Lock-open' ), array( 'vc-oi vc-oi-star' => 'Star' ), array( 'vc-oi vc-oi-user' => 'User' ), array( 'vc-oi vc-oi-lock-open-empty' => 'Lock-open-empty' ), array( 'vc-oi vc-oi-box' => 'Box' ), array( 'vc-oi vc-oi-resize-vertical' => 'Resize-vertical' ), array( 'vc-oi vc-oi-stop' => 'Stop' ), array( 'vc-oi vc-oi-aperture-alt' => 'Aperture-alt' ), array( 'vc-oi vc-oi-book' => 'Book' ), array( 'vc-oi vc-oi-steering-wheel' => 'Steering-wheel' ), array( 'vc-oi vc-oi-pause' => 'Pause' ), array( 'vc-oi vc-oi-to-start' => 'To-start' ), array( 'vc-oi vc-oi-move' => 'Move' ), array( 'vc-oi vc-oi-resize-horizontal' => 'Resize-horizontal' ), array( 'vc-oi vc-oi-rss-alt' => 'Rss-alt' ), array( 'vc-oi vc-oi-comment-alt2' => 'Comment-alt2' ), array( 'vc-oi vc-oi-rss' => 'Rss' ), array( 'vc-oi vc-oi-comment-inv-alt' => 'Comment-inv-alt' ), array( 'vc-oi vc-oi-comment-inv-alt2' => 'Comment-inv-alt2' ), array( 'vc-oi vc-oi-eye' => 'Eye' ), array( 'vc-oi vc-oi-pin' => 'Pin' ), array( 'vc-oi vc-oi-video' => 'Video' ), array( 'vc-oi vc-oi-picture' => 'Picture' ), array( 'vc-oi vc-oi-camera' => 'Camera' ), array( 'vc-oi vc-oi-tag' => 'Tag' ), array( 'vc-oi vc-oi-chat' => 'Chat' ), array( 'vc-oi vc-oi-cog' => 'Cog' ), array( 'vc-oi vc-oi-popup' => 'Popup' ), array( 'vc-oi vc-oi-to-end' => 'To-end' ), array( 'vc-oi vc-oi-book-alt' => 'Book-alt' ), array( 'vc-oi vc-oi-brush' => 'Brush' ), array( 'vc-oi vc-oi-eject' => 'Eject' ), array( 'vc-oi vc-oi-down' => 'Down' ), array( 'vc-oi vc-oi-wrench' => 'Wrench' ), array( 'vc-oi vc-oi-chat-inv' => 'Chat-inv' ), array( 'vc-oi vc-oi-tag-empty' => 'Tag-empty' ), array( 'vc-oi vc-oi-ok' => 'Ok' ), array( 'vc-oi vc-oi-ok-circle' => 'Ok-circle' ), array( 'vc-oi vc-oi-download' => 'Download' ), array( 'vc-oi vc-oi-location' => 'Location' ), array( 'vc-oi vc-oi-share' => 'Share' ), array( 'vc-oi vc-oi-left' => 'Left' ), array( 'vc-oi vc-oi-target' => 'Target' ), array( 'vc-oi vc-oi-brush-alt' => 'Brush-alt' ), array( 'vc-oi vc-oi-cancel' => 'Cancel' ), array( 'vc-oi vc-oi-upload' => 'Upload' ), array( 'vc-oi vc-oi-location-inv' => 'Location-inv' ), array( 'vc-oi vc-oi-calendar' => 'Calendar' ), array( 'vc-oi vc-oi-right' => 'Right' ), array( 'vc-oi vc-oi-signal' => 'Signal' ), array( 'vc-oi vc-oi-eyedropper' => 'Eyedropper' ), array( 'vc-oi vc-oi-layers' => 'Layers' ), array( 'vc-oi vc-oi-award' => 'Award' ), array( 'vc-oi vc-oi-up' => 'Up' ), array( 'vc-oi vc-oi-calendar-inv' => 'Calendar-inv' ), array( 'vc-oi vc-oi-location-alt' => 'Location-alt' ), array( 'vc-oi vc-oi-download-cloud' => 'Download-cloud' ), array( 'vc-oi vc-oi-cancel-circle' => 'Cancel-circle' ), array( 'vc-oi vc-oi-plus' => 'Plus' ), array( 'vc-oi vc-oi-upload-cloud' => 'Upload-cloud' ), array( 'vc-oi vc-oi-compass' => 'Compass' ), array( 'vc-oi vc-oi-calendar-alt' => 'Calendar-alt' ), array( 'vc-oi vc-oi-down-circle' => 'Down-circle' ), array( 'vc-oi vc-oi-award-empty' => 'Award-empty' ), array( 'vc-oi vc-oi-layers-alt' => 'Layers-alt' ), array( 'vc-oi vc-oi-sun' => 'Sun' ), array( 'vc-oi vc-oi-list' => 'List' ), array( 'vc-oi vc-oi-left-circle' => 'Left-circle' ), array( 'vc-oi vc-oi-mic' => 'Mic' ), array( 'vc-oi vc-oi-trash' => 'Trash' ), array( 'vc-oi vc-oi-quote-left' => 'Quote-left' ), array( 'vc-oi vc-oi-plus-circle' => 'Plus-circle' ), array( 'vc-oi vc-oi-minus' => 'Minus' ), array( 'vc-oi vc-oi-quote-right' => 'Quote-right' ), array( 'vc-oi vc-oi-trash-empty' => 'Trash-empty' ), array( 'vc-oi vc-oi-volume-off' => 'Volume-off' ), array( 'vc-oi vc-oi-right-circle' => 'Right-circle' ), array( 'vc-oi vc-oi-list-nested' => 'List-nested' ), array( 'vc-oi vc-oi-sun-inv' => 'Sun-inv' ), array( 'vc-oi vc-oi-bat-empty' => 'Bat-empty' ), array( 'vc-oi vc-oi-up-circle' => 'Up-circle' ), array( 'vc-oi vc-oi-volume-up' => 'Volume-up' ), array( 'vc-oi vc-oi-doc' => 'Doc' ), array( 'vc-oi vc-oi-quote-left-alt' => 'Quote-left-alt' ), array( 'vc-oi vc-oi-minus-circle' => 'Minus-circle' ), array( 'vc-oi vc-oi-cloud' => 'Cloud' ), array( 'vc-oi vc-oi-rain' => 'Rain' ), array( 'vc-oi vc-oi-bat-half' => 'Bat-half' ), array( 'vc-oi vc-oi-cw' => 'Cw' ), array( 'vc-oi vc-oi-headphones' => 'Headphones' ), array( 'vc-oi vc-oi-doc-inv' => 'Doc-inv' ), array( 'vc-oi vc-oi-quote-right-alt' => 'Quote-right-alt' ), array( 'vc-oi vc-oi-help' => 'Help' ), array( 'vc-oi vc-oi-info' => 'Info' ), array( 'vc-oi vc-oi-pencil' => 'Pencil' ), array( 'vc-oi vc-oi-doc-alt' => 'Doc-alt' ), array( 'vc-oi vc-oi-clock' => 'Clock' ), array( 'vc-oi vc-oi-loop' => 'Loop' ), array( 'vc-oi vc-oi-bat-full' => 'Bat-full' ), array( 'vc-oi vc-oi-flash' => 'Flash' ), array( 'vc-oi vc-oi-moon' => 'Moon' ), array( 'vc-oi vc-oi-bat-charge' => 'Bat-charge' ), array( 'vc-oi vc-oi-loop-alt' => 'Loop-alt' ), array( 'vc-oi vc-oi-lamp' => 'Lamp' ), array( 'vc-oi vc-oi-doc-inv-alt' => 'Doc-inv-alt' ), array( 'vc-oi vc-oi-pencil-neg' => 'Pencil-neg' ), array( 'vc-oi vc-oi-home' => 'Home' ), ); return array_merge( $icons, $openiconic_icons ); } add_filter( 'vc_iconpicker-type-typicons', 'vc_iconpicker_type_typicons' ); /** * Typicons icons from github.com/stephenhutchings/typicons.font * * @param $icons - taken from filter - vc_map param field settings['source'] * provided icons (default empty array). If array categorized it will * auto-enable category dropdown * * @since 4.4 * @return array - of icons for iconpicker, can be categorized, or not. */ function vc_iconpicker_type_typicons( $icons ) { $typicons_icons = array( array( 'typcn typcn-adjust-brightness' => 'Adjust Brightness' ), array( 'typcn typcn-adjust-contrast' => 'Adjust Contrast' ), array( 'typcn typcn-anchor-outline' => 'Anchor Outline' ), array( 'typcn typcn-anchor' => 'Anchor' ), array( 'typcn typcn-archive' => 'Archive' ), array( 'typcn typcn-arrow-back-outline' => 'Arrow Back Outline' ), array( 'typcn typcn-arrow-back' => 'Arrow Back' ), array( 'typcn typcn-arrow-down-outline' => 'Arrow Down Outline' ), array( 'typcn typcn-arrow-down-thick' => 'Arrow Down Thick' ), array( 'typcn typcn-arrow-down' => 'Arrow Down' ), array( 'typcn typcn-arrow-forward-outline' => 'Arrow Forward Outline' ), array( 'typcn typcn-arrow-forward' => 'Arrow Forward' ), array( 'typcn typcn-arrow-left-outline' => 'Arrow Left Outline' ), array( 'typcn typcn-arrow-left-thick' => 'Arrow Left Thick' ), array( 'typcn typcn-arrow-left' => 'Arrow Left' ), array( 'typcn typcn-arrow-loop-outline' => 'Arrow Loop Outline' ), array( 'typcn typcn-arrow-loop' => 'Arrow Loop' ), array( 'typcn typcn-arrow-maximise-outline' => 'Arrow Maximise Outline' ), array( 'typcn typcn-arrow-maximise' => 'Arrow Maximise' ), array( 'typcn typcn-arrow-minimise-outline' => 'Arrow Minimise Outline' ), array( 'typcn typcn-arrow-minimise' => 'Arrow Minimise' ), array( 'typcn typcn-arrow-move-outline' => 'Arrow Move Outline' ), array( 'typcn typcn-arrow-move' => 'Arrow Move' ), array( 'typcn typcn-arrow-repeat-outline' => 'Arrow Repeat Outline' ), array( 'typcn typcn-arrow-repeat' => 'Arrow Repeat' ), array( 'typcn typcn-arrow-right-outline' => 'Arrow Right Outline' ), array( 'typcn typcn-arrow-right-thick' => 'Arrow Right Thick' ), array( 'typcn typcn-arrow-right' => 'Arrow Right' ), array( 'typcn typcn-arrow-shuffle' => 'Arrow Shuffle' ), array( 'typcn typcn-arrow-sorted-down' => 'Arrow Sorted Down' ), array( 'typcn typcn-arrow-sorted-up' => 'Arrow Sorted Up' ), array( 'typcn typcn-arrow-sync-outline' => 'Arrow Sync Outline' ), array( 'typcn typcn-arrow-sync' => 'Arrow Sync' ), array( 'typcn typcn-arrow-unsorted' => 'Arrow Unsorted' ), array( 'typcn typcn-arrow-up-outline' => 'Arrow Up Outline' ), array( 'typcn typcn-arrow-up-thick' => 'Arrow Up Thick' ), array( 'typcn typcn-arrow-up' => 'Arrow Up' ), array( 'typcn typcn-at' => 'At' ), array( 'typcn typcn-attachment-outline' => 'Attachment Outline' ), array( 'typcn typcn-attachment' => 'Attachment' ), array( 'typcn typcn-backspace-outline' => 'Backspace Outline' ), array( 'typcn typcn-backspace' => 'Backspace' ), array( 'typcn typcn-battery-charge' => 'Battery Charge' ), array( 'typcn typcn-battery-full' => 'Battery Full' ), array( 'typcn typcn-battery-high' => 'Battery High' ), array( 'typcn typcn-battery-low' => 'Battery Low' ), array( 'typcn typcn-battery-mid' => 'Battery Mid' ), array( 'typcn typcn-beaker' => 'Beaker' ), array( 'typcn typcn-beer' => 'Beer' ), array( 'typcn typcn-bell' => 'Bell' ), array( 'typcn typcn-book' => 'Book' ), array( 'typcn typcn-bookmark' => 'Bookmark' ), array( 'typcn typcn-briefcase' => 'Briefcase' ), array( 'typcn typcn-brush' => 'Brush' ), array( 'typcn typcn-business-card' => 'Business Card' ), array( 'typcn typcn-calculator' => 'Calculator' ), array( 'typcn typcn-calendar-outline' => 'Calendar Outline' ), array( 'typcn typcn-calendar' => 'Calendar' ), array( 'typcn typcn-camera-outline' => 'Camera Outline' ), array( 'typcn typcn-camera' => 'Camera' ), array( 'typcn typcn-cancel-outline' => 'Cancel Outline' ), array( 'typcn typcn-cancel' => 'Cancel' ), array( 'typcn typcn-chart-area-outline' => 'Chart Area Outline' ), array( 'typcn typcn-chart-area' => 'Chart Area' ), array( 'typcn typcn-chart-bar-outline' => 'Chart Bar Outline' ), array( 'typcn typcn-chart-bar' => 'Chart Bar' ), array( 'typcn typcn-chart-line-outline' => 'Chart Line Outline' ), array( 'typcn typcn-chart-line' => 'Chart Line' ), array( 'typcn typcn-chart-pie-outline' => 'Chart Pie Outline' ), array( 'typcn typcn-chart-pie' => 'Chart Pie' ), array( 'typcn typcn-chevron-left-outline' => 'Chevron Left Outline' ), array( 'typcn typcn-chevron-left' => 'Chevron Left' ), array( 'typcn typcn-chevron-right-outline' => 'Chevron Right Outline' ), array( 'typcn typcn-chevron-right' => 'Chevron Right' ), array( 'typcn typcn-clipboard' => 'Clipboard' ), array( 'typcn typcn-cloud-storage' => 'Cloud Storage' ), array( 'typcn typcn-cloud-storage-outline' => 'Cloud Storage Outline' ), array( 'typcn typcn-code-outline' => 'Code Outline' ), array( 'typcn typcn-code' => 'Code' ), array( 'typcn typcn-coffee' => 'Coffee' ), array( 'typcn typcn-cog-outline' => 'Cog Outline' ), array( 'typcn typcn-cog' => 'Cog' ), array( 'typcn typcn-compass' => 'Compass' ), array( 'typcn typcn-contacts' => 'Contacts' ), array( 'typcn typcn-credit-card' => 'Credit Card' ), array( 'typcn typcn-css3' => 'Css3' ), array( 'typcn typcn-database' => 'Database' ), array( 'typcn typcn-delete-outline' => 'Delete Outline' ), array( 'typcn typcn-delete' => 'Delete' ), array( 'typcn typcn-device-desktop' => 'Device Desktop' ), array( 'typcn typcn-device-laptop' => 'Device Laptop' ), array( 'typcn typcn-device-phone' => 'Device Phone' ), array( 'typcn typcn-device-tablet' => 'Device Tablet' ), array( 'typcn typcn-directions' => 'Directions' ), array( 'typcn typcn-divide-outline' => 'Divide Outline' ), array( 'typcn typcn-divide' => 'Divide' ), array( 'typcn typcn-document-add' => 'Document Add' ), array( 'typcn typcn-document-delete' => 'Document Delete' ), array( 'typcn typcn-document-text' => 'Document Text' ), array( 'typcn typcn-document' => 'Document' ), array( 'typcn typcn-download-outline' => 'Download Outline' ), array( 'typcn typcn-download' => 'Download' ), array( 'typcn typcn-dropbox' => 'Dropbox' ), array( 'typcn typcn-edit' => 'Edit' ), array( 'typcn typcn-eject-outline' => 'Eject Outline' ), array( 'typcn typcn-eject' => 'Eject' ), array( 'typcn typcn-equals-outline' => 'Equals Outline' ), array( 'typcn typcn-equals' => 'Equals' ), array( 'typcn typcn-export-outline' => 'Export Outline' ), array( 'typcn typcn-export' => 'Export' ), array( 'typcn typcn-eye-outline' => 'Eye Outline' ), array( 'typcn typcn-eye' => 'Eye' ), array( 'typcn typcn-feather' => 'Feather' ), array( 'typcn typcn-film' => 'Film' ), array( 'typcn typcn-filter' => 'Filter' ), array( 'typcn typcn-flag-outline' => 'Flag Outline' ), array( 'typcn typcn-flag' => 'Flag' ), array( 'typcn typcn-flash-outline' => 'Flash Outline' ), array( 'typcn typcn-flash' => 'Flash' ), array( 'typcn typcn-flow-children' => 'Flow Children' ), array( 'typcn typcn-flow-merge' => 'Flow Merge' ), array( 'typcn typcn-flow-parallel' => 'Flow Parallel' ), array( 'typcn typcn-flow-switch' => 'Flow Switch' ), array( 'typcn typcn-folder-add' => 'Folder Add' ), array( 'typcn typcn-folder-delete' => 'Folder Delete' ), array( 'typcn typcn-folder-open' => 'Folder Open' ), array( 'typcn typcn-folder' => 'Folder' ), array( 'typcn typcn-gift' => 'Gift' ), array( 'typcn typcn-globe-outline' => 'Globe Outline' ), array( 'typcn typcn-globe' => 'Globe' ), array( 'typcn typcn-group-outline' => 'Group Outline' ), array( 'typcn typcn-group' => 'Group' ), array( 'typcn typcn-headphones' => 'Headphones' ), array( 'typcn typcn-heart-full-outline' => 'Heart Full Outline' ), array( 'typcn typcn-heart-half-outline' => 'Heart Half Outline' ), array( 'typcn typcn-heart-outline' => 'Heart Outline' ), array( 'typcn typcn-heart' => 'Heart' ), array( 'typcn typcn-home-outline' => 'Home Outline' ), array( 'typcn typcn-home' => 'Home' ), array( 'typcn typcn-html5' => 'Html5' ), array( 'typcn typcn-image-outline' => 'Image Outline' ), array( 'typcn typcn-image' => 'Image' ), array( 'typcn typcn-infinity-outline' => 'Infinity Outline' ), array( 'typcn typcn-infinity' => 'Infinity' ), array( 'typcn typcn-info-large-outline' => 'Info Large Outline' ), array( 'typcn typcn-info-large' => 'Info Large' ), array( 'typcn typcn-info-outline' => 'Info Outline' ), array( 'typcn typcn-info' => 'Info' ), array( 'typcn typcn-input-checked-outline' => 'Input Checked Outline' ), array( 'typcn typcn-input-checked' => 'Input Checked' ), array( 'typcn typcn-key-outline' => 'Key Outline' ), array( 'typcn typcn-key' => 'Key' ), array( 'typcn typcn-keyboard' => 'Keyboard' ), array( 'typcn typcn-leaf' => 'Leaf' ), array( 'typcn typcn-lightbulb' => 'Lightbulb' ), array( 'typcn typcn-link-outline' => 'Link Outline' ), array( 'typcn typcn-link' => 'Link' ), array( 'typcn typcn-location-arrow-outline' => 'Location Arrow Outline' ), array( 'typcn typcn-location-arrow' => 'Location Arrow' ), array( 'typcn typcn-location-outline' => 'Location Outline' ), array( 'typcn typcn-location' => 'Location' ), array( 'typcn typcn-lock-closed-outline' => 'Lock Closed Outline' ), array( 'typcn typcn-lock-closed' => 'Lock Closed' ), array( 'typcn typcn-lock-open-outline' => 'Lock Open Outline' ), array( 'typcn typcn-lock-open' => 'Lock Open' ), array( 'typcn typcn-mail' => 'Mail' ), array( 'typcn typcn-map' => 'Map' ), array( 'typcn typcn-media-eject-outline' => 'Media Eject Outline' ), array( 'typcn typcn-media-eject' => 'Media Eject' ), array( 'typcn typcn-media-fast-forward-outline' => 'Media Fast Forward Outline' ), array( 'typcn typcn-media-fast-forward' => 'Media Fast Forward' ), array( 'typcn typcn-media-pause-outline' => 'Media Pause Outline' ), array( 'typcn typcn-media-pause' => 'Media Pause' ), array( 'typcn typcn-media-play-outline' => 'Media Play Outline' ), array( 'typcn typcn-media-play-reverse-outline' => 'Media Play Reverse Outline' ), array( 'typcn typcn-media-play-reverse' => 'Media Play Reverse' ), array( 'typcn typcn-media-play' => 'Media Play' ), array( 'typcn typcn-media-record-outline' => 'Media Record Outline' ), array( 'typcn typcn-media-record' => 'Media Record' ), array( 'typcn typcn-media-rewind-outline' => 'Media Rewind Outline' ), array( 'typcn typcn-media-rewind' => 'Media Rewind' ), array( 'typcn typcn-media-stop-outline' => 'Media Stop Outline' ), array( 'typcn typcn-media-stop' => 'Media Stop' ), array( 'typcn typcn-message-typing' => 'Message Typing' ), array( 'typcn typcn-message' => 'Message' ), array( 'typcn typcn-messages' => 'Messages' ), array( 'typcn typcn-microphone-outline' => 'Microphone Outline' ), array( 'typcn typcn-microphone' => 'Microphone' ), array( 'typcn typcn-minus-outline' => 'Minus Outline' ), array( 'typcn typcn-minus' => 'Minus' ), array( 'typcn typcn-mortar-board' => 'Mortar Board' ), array( 'typcn typcn-news' => 'News' ), array( 'typcn typcn-notes-outline' => 'Notes Outline' ), array( 'typcn typcn-notes' => 'Notes' ), array( 'typcn typcn-pen' => 'Pen' ), array( 'typcn typcn-pencil' => 'Pencil' ), array( 'typcn typcn-phone-outline' => 'Phone Outline' ), array( 'typcn typcn-phone' => 'Phone' ), array( 'typcn typcn-pi-outline' => 'Pi Outline' ), array( 'typcn typcn-pi' => 'Pi' ), array( 'typcn typcn-pin-outline' => 'Pin Outline' ), array( 'typcn typcn-pin' => 'Pin' ), array( 'typcn typcn-pipette' => 'Pipette' ), array( 'typcn typcn-plane-outline' => 'Plane Outline' ), array( 'typcn typcn-plane' => 'Plane' ), array( 'typcn typcn-plug' => 'Plug' ), array( 'typcn typcn-plus-outline' => 'Plus Outline' ), array( 'typcn typcn-plus' => 'Plus' ), array( 'typcn typcn-point-of-interest-outline' => 'Point Of Interest Outline' ), array( 'typcn typcn-point-of-interest' => 'Point Of Interest' ), array( 'typcn typcn-power-outline' => 'Power Outline' ), array( 'typcn typcn-power' => 'Power' ), array( 'typcn typcn-printer' => 'Printer' ), array( 'typcn typcn-puzzle-outline' => 'Puzzle Outline' ), array( 'typcn typcn-puzzle' => 'Puzzle' ), array( 'typcn typcn-radar-outline' => 'Radar Outline' ), array( 'typcn typcn-radar' => 'Radar' ), array( 'typcn typcn-refresh-outline' => 'Refresh Outline' ), array( 'typcn typcn-refresh' => 'Refresh' ), array( 'typcn typcn-rss-outline' => 'Rss Outline' ), array( 'typcn typcn-rss' => 'Rss' ), array( 'typcn typcn-scissors-outline' => 'Scissors Outline' ), array( 'typcn typcn-scissors' => 'Scissors' ), array( 'typcn typcn-shopping-bag' => 'Shopping Bag' ), array( 'typcn typcn-shopping-cart' => 'Shopping Cart' ), array( 'typcn typcn-social-at-circular' => 'Social At Circular' ), array( 'typcn typcn-social-dribbble-circular' => 'Social Dribbble Circular' ), array( 'typcn typcn-social-dribbble' => 'Social Dribbble' ), array( 'typcn typcn-social-facebook-circular' => 'Social Facebook Circular' ), array( 'typcn typcn-social-facebook' => 'Social Facebook' ), array( 'typcn typcn-social-flickr-circular' => 'Social Flickr Circular' ), array( 'typcn typcn-social-flickr' => 'Social Flickr' ), array( 'typcn typcn-social-github-circular' => 'Social Github Circular' ), array( 'typcn typcn-social-github' => 'Social Github' ), array( 'typcn typcn-social-google-plus-circular' => 'Social Google Plus Circular' ), array( 'typcn typcn-social-google-plus' => 'Social Google Plus' ), array( 'typcn typcn-social-instagram-circular' => 'Social Instagram Circular' ), array( 'typcn typcn-social-instagram' => 'Social Instagram' ), array( 'typcn typcn-social-last-fm-circular' => 'Social Last Fm Circular' ), array( 'typcn typcn-social-last-fm' => 'Social Last Fm' ), array( 'typcn typcn-social-linkedin-circular' => 'Social Linkedin Circular' ), array( 'typcn typcn-social-linkedin' => 'Social Linkedin' ), array( 'typcn typcn-social-pinterest-circular' => 'Social Pinterest Circular' ), array( 'typcn typcn-social-pinterest' => 'Social Pinterest' ), array( 'typcn typcn-social-skype-outline' => 'Social Skype Outline' ), array( 'typcn typcn-social-skype' => 'Social Skype' ), array( 'typcn typcn-social-tumbler-circular' => 'Social Tumbler Circular' ), array( 'typcn typcn-social-tumbler' => 'Social Tumbler' ), array( 'typcn typcn-social-twitter-circular' => 'Social Twitter Circular' ), array( 'typcn typcn-social-twitter' => 'Social Twitter' ), array( 'typcn typcn-social-vimeo-circular' => 'Social Vimeo Circular' ), array( 'typcn typcn-social-vimeo' => 'Social Vimeo' ), array( 'typcn typcn-social-youtube-circular' => 'Social Youtube Circular' ), array( 'typcn typcn-social-youtube' => 'Social Youtube' ), array( 'typcn typcn-sort-alphabetically-outline' => 'Sort Alphabetically Outline' ), array( 'typcn typcn-sort-alphabetically' => 'Sort Alphabetically' ), array( 'typcn typcn-sort-numerically-outline' => 'Sort Numerically Outline' ), array( 'typcn typcn-sort-numerically' => 'Sort Numerically' ), array( 'typcn typcn-spanner-outline' => 'Spanner Outline' ), array( 'typcn typcn-spanner' => 'Spanner' ), array( 'typcn typcn-spiral' => 'Spiral' ), array( 'typcn typcn-star-full-outline' => 'Star Full Outline' ), array( 'typcn typcn-star-half-outline' => 'Star Half Outline' ), array( 'typcn typcn-star-half' => 'Star Half' ), array( 'typcn typcn-star-outline' => 'Star Outline' ), array( 'typcn typcn-star' => 'Star' ), array( 'typcn typcn-starburst-outline' => 'Starburst Outline' ), array( 'typcn typcn-starburst' => 'Starburst' ), array( 'typcn typcn-stopwatch' => 'Stopwatch' ), array( 'typcn typcn-support' => 'Support' ), array( 'typcn typcn-tabs-outline' => 'Tabs Outline' ), array( 'typcn typcn-tag' => 'Tag' ), array( 'typcn typcn-tags' => 'Tags' ), array( 'typcn typcn-th-large-outline' => 'Th Large Outline' ), array( 'typcn typcn-th-large' => 'Th Large' ), array( 'typcn typcn-th-list-outline' => 'Th List Outline' ), array( 'typcn typcn-th-list' => 'Th List' ), array( 'typcn typcn-th-menu-outline' => 'Th Menu Outline' ), array( 'typcn typcn-th-menu' => 'Th Menu' ), array( 'typcn typcn-th-small-outline' => 'Th Small Outline' ), array( 'typcn typcn-th-small' => 'Th Small' ), array( 'typcn typcn-thermometer' => 'Thermometer' ), array( 'typcn typcn-thumbs-down' => 'Thumbs Down' ), array( 'typcn typcn-thumbs-ok' => 'Thumbs Ok' ), array( 'typcn typcn-thumbs-up' => 'Thumbs Up' ), array( 'typcn typcn-tick-outline' => 'Tick Outline' ), array( 'typcn typcn-tick' => 'Tick' ), array( 'typcn typcn-ticket' => 'Ticket' ), array( 'typcn typcn-time' => 'Time' ), array( 'typcn typcn-times-outline' => 'Times Outline' ), array( 'typcn typcn-times' => 'Times' ), array( 'typcn typcn-trash' => 'Trash' ), array( 'typcn typcn-tree' => 'Tree' ), array( 'typcn typcn-upload-outline' => 'Upload Outline' ), array( 'typcn typcn-upload' => 'Upload' ), array( 'typcn typcn-user-add-outline' => 'User Add Outline' ), array( 'typcn typcn-user-add' => 'User Add' ), array( 'typcn typcn-user-delete-outline' => 'User Delete Outline' ), array( 'typcn typcn-user-delete' => 'User Delete' ), array( 'typcn typcn-user-outline' => 'User Outline' ), array( 'typcn typcn-user' => 'User' ), array( 'typcn typcn-vendor-android' => 'Vendor Android' ), array( 'typcn typcn-vendor-apple' => 'Vendor Apple' ), array( 'typcn typcn-vendor-microsoft' => 'Vendor Microsoft' ), array( 'typcn typcn-video-outline' => 'Video Outline' ), array( 'typcn typcn-video' => 'Video' ), array( 'typcn typcn-volume-down' => 'Volume Down' ), array( 'typcn typcn-volume-mute' => 'Volume Mute' ), array( 'typcn typcn-volume-up' => 'Volume Up' ), array( 'typcn typcn-volume' => 'Volume' ), array( 'typcn typcn-warning-outline' => 'Warning Outline' ), array( 'typcn typcn-warning' => 'Warning' ), array( 'typcn typcn-watch' => 'Watch' ), array( 'typcn typcn-waves-outline' => 'Waves Outline' ), array( 'typcn typcn-waves' => 'Waves' ), array( 'typcn typcn-weather-cloudy' => 'Weather Cloudy' ), array( 'typcn typcn-weather-downpour' => 'Weather Downpour' ), array( 'typcn typcn-weather-night' => 'Weather Night' ), array( 'typcn typcn-weather-partly-sunny' => 'Weather Partly Sunny' ), array( 'typcn typcn-weather-shower' => 'Weather Shower' ), array( 'typcn typcn-weather-snow' => 'Weather Snow' ), array( 'typcn typcn-weather-stormy' => 'Weather Stormy' ), array( 'typcn typcn-weather-sunny' => 'Weather Sunny' ), array( 'typcn typcn-weather-windy-cloudy' => 'Weather Windy Cloudy' ), array( 'typcn typcn-weather-windy' => 'Weather Windy' ), array( 'typcn typcn-wi-fi-outline' => 'Wi Fi Outline' ), array( 'typcn typcn-wi-fi' => 'Wi Fi' ), array( 'typcn typcn-wine' => 'Wine' ), array( 'typcn typcn-world-outline' => 'World Outline' ), array( 'typcn typcn-world' => 'World' ), array( 'typcn typcn-zoom-in-outline' => 'Zoom In Outline' ), array( 'typcn typcn-zoom-in' => 'Zoom In' ), array( 'typcn typcn-zoom-out-outline' => 'Zoom Out Outline' ), array( 'typcn typcn-zoom-out' => 'Zoom Out' ), array( 'typcn typcn-zoom-outline' => 'Zoom Outline' ), array( 'typcn typcn-zoom' => 'Zoom' ), ); return array_merge( $icons, $typicons_icons ); } add_filter( 'vc_iconpicker-type-entypo', 'vc_iconpicker_type_entypo' ); /** * Entypo icons from github.com/danielbruce/entypo * * @param $icons - taken from filter - vc_map param field settings['source'] * provided icons (default empty array). If array categorized it will * auto-enable category dropdown * * @since 4.4 * @return array - of icons for iconpicker, can be categorized, or not. */ function vc_iconpicker_type_entypo( $icons ) { $entypo_icons = array( array( 'entypo-icon entypo-icon-note' => 'Note' ), array( 'entypo-icon entypo-icon-note-beamed' => 'Note Beamed' ), array( 'entypo-icon entypo-icon-music' => 'Music' ), array( 'entypo-icon entypo-icon-search' => 'Search' ), array( 'entypo-icon entypo-icon-flashlight' => 'Flashlight' ), array( 'entypo-icon entypo-icon-mail' => 'Mail' ), array( 'entypo-icon entypo-icon-heart' => 'Heart' ), array( 'entypo-icon entypo-icon-heart-empty' => 'Heart Empty' ), array( 'entypo-icon entypo-icon-star' => 'Star' ), array( 'entypo-icon entypo-icon-star-empty' => 'Star Empty' ), array( 'entypo-icon entypo-icon-user' => 'User' ), array( 'entypo-icon entypo-icon-users' => 'Users' ), array( 'entypo-icon entypo-icon-user-add' => 'User Add' ), array( 'entypo-icon entypo-icon-video' => 'Video' ), array( 'entypo-icon entypo-icon-picture' => 'Picture' ), array( 'entypo-icon entypo-icon-camera' => 'Camera' ), array( 'entypo-icon entypo-icon-layout' => 'Layout' ), array( 'entypo-icon entypo-icon-menu' => 'Menu' ), array( 'entypo-icon entypo-icon-check' => 'Check' ), array( 'entypo-icon entypo-icon-cancel' => 'Cancel' ), array( 'entypo-icon entypo-icon-cancel-circled' => 'Cancel Circled' ), array( 'entypo-icon entypo-icon-cancel-squared' => 'Cancel Squared' ), array( 'entypo-icon entypo-icon-plus' => 'Plus' ), array( 'entypo-icon entypo-icon-plus-circled' => 'Plus Circled' ), array( 'entypo-icon entypo-icon-plus-squared' => 'Plus Squared' ), array( 'entypo-icon entypo-icon-minus' => 'Minus' ), array( 'entypo-icon entypo-icon-minus-circled' => 'Minus Circled' ), array( 'entypo-icon entypo-icon-minus-squared' => 'Minus Squared' ), array( 'entypo-icon entypo-icon-help' => 'Help' ), array( 'entypo-icon entypo-icon-help-circled' => 'Help Circled' ), array( 'entypo-icon entypo-icon-info' => 'Info' ), array( 'entypo-icon entypo-icon-info-circled' => 'Info Circled' ), array( 'entypo-icon entypo-icon-back' => 'Back' ), array( 'entypo-icon entypo-icon-home' => 'Home' ), array( 'entypo-icon entypo-icon-link' => 'Link' ), array( 'entypo-icon entypo-icon-attach' => 'Attach' ), array( 'entypo-icon entypo-icon-lock' => 'Lock' ), array( 'entypo-icon entypo-icon-lock-open' => 'Lock Open' ), array( 'entypo-icon entypo-icon-eye' => 'Eye' ), array( 'entypo-icon entypo-icon-tag' => 'Tag' ), array( 'entypo-icon entypo-icon-bookmark' => 'Bookmark' ), array( 'entypo-icon entypo-icon-bookmarks' => 'Bookmarks' ), array( 'entypo-icon entypo-icon-flag' => 'Flag' ), array( 'entypo-icon entypo-icon-thumbs-up' => 'Thumbs Up' ), array( 'entypo-icon entypo-icon-thumbs-down' => 'Thumbs Down' ), array( 'entypo-icon entypo-icon-download' => 'Download' ), array( 'entypo-icon entypo-icon-upload' => 'Upload' ), array( 'entypo-icon entypo-icon-upload-cloud' => 'Upload Cloud' ), array( 'entypo-icon entypo-icon-reply' => 'Reply' ), array( 'entypo-icon entypo-icon-reply-all' => 'Reply All' ), array( 'entypo-icon entypo-icon-forward' => 'Forward' ), array( 'entypo-icon entypo-icon-quote' => 'Quote' ), array( 'entypo-icon entypo-icon-code' => 'Code' ), array( 'entypo-icon entypo-icon-export' => 'Export' ), array( 'entypo-icon entypo-icon-pencil' => 'Pencil' ), array( 'entypo-icon entypo-icon-feather' => 'Feather' ), array( 'entypo-icon entypo-icon-print' => 'Print' ), array( 'entypo-icon entypo-icon-retweet' => 'Retweet' ), array( 'entypo-icon entypo-icon-keyboard' => 'Keyboard' ), array( 'entypo-icon entypo-icon-comment' => 'Comment' ), array( 'entypo-icon entypo-icon-chat' => 'Chat' ), array( 'entypo-icon entypo-icon-bell' => 'Bell' ), array( 'entypo-icon entypo-icon-attention' => 'Attention' ), array( 'entypo-icon entypo-icon-alert' => 'Alert' ), array( 'entypo-icon entypo-icon-vcard' => 'Vcard' ), array( 'entypo-icon entypo-icon-address' => 'Address' ), array( 'entypo-icon entypo-icon-location' => 'Location' ), array( 'entypo-icon entypo-icon-map' => 'Map' ), array( 'entypo-icon entypo-icon-direction' => 'Direction' ), array( 'entypo-icon entypo-icon-compass' => 'Compass' ), array( 'entypo-icon entypo-icon-cup' => 'Cup' ), array( 'entypo-icon entypo-icon-trash' => 'Trash' ), array( 'entypo-icon entypo-icon-doc' => 'Doc' ), array( 'entypo-icon entypo-icon-docs' => 'Docs' ), array( 'entypo-icon entypo-icon-doc-landscape' => 'Doc Landscape' ), array( 'entypo-icon entypo-icon-doc-text' => 'Doc Text' ), array( 'entypo-icon entypo-icon-doc-text-inv' => 'Doc Text Inv' ), array( 'entypo-icon entypo-icon-newspaper' => 'Newspaper' ), array( 'entypo-icon entypo-icon-book-open' => 'Book Open' ), array( 'entypo-icon entypo-icon-book' => 'Book' ), array( 'entypo-icon entypo-icon-folder' => 'Folder' ), array( 'entypo-icon entypo-icon-archive' => 'Archive' ), array( 'entypo-icon entypo-icon-box' => 'Box' ), array( 'entypo-icon entypo-icon-rss' => 'Rss' ), array( 'entypo-icon entypo-icon-phone' => 'Phone' ), array( 'entypo-icon entypo-icon-cog' => 'Cog' ), array( 'entypo-icon entypo-icon-tools' => 'Tools' ), array( 'entypo-icon entypo-icon-share' => 'Share' ), array( 'entypo-icon entypo-icon-shareable' => 'Shareable' ), array( 'entypo-icon entypo-icon-basket' => 'Basket' ), array( 'entypo-icon entypo-icon-bag' => 'Bag' ), array( 'entypo-icon entypo-icon-calendar' => 'Calendar' ), array( 'entypo-icon entypo-icon-login' => 'Login' ), array( 'entypo-icon entypo-icon-logout' => 'Logout' ), array( 'entypo-icon entypo-icon-mic' => 'Mic' ), array( 'entypo-icon entypo-icon-mute' => 'Mute' ), array( 'entypo-icon entypo-icon-sound' => 'Sound' ), array( 'entypo-icon entypo-icon-volume' => 'Volume' ), array( 'entypo-icon entypo-icon-clock' => 'Clock' ), array( 'entypo-icon entypo-icon-hourglass' => 'Hourglass' ), array( 'entypo-icon entypo-icon-lamp' => 'Lamp' ), array( 'entypo-icon entypo-icon-light-down' => 'Light Down' ), array( 'entypo-icon entypo-icon-light-up' => 'Light Up' ), array( 'entypo-icon entypo-icon-adjust' => 'Adjust' ), array( 'entypo-icon entypo-icon-block' => 'Block' ), array( 'entypo-icon entypo-icon-resize-full' => 'Resize Full' ), array( 'entypo-icon entypo-icon-resize-small' => 'Resize Small' ), array( 'entypo-icon entypo-icon-popup' => 'Popup' ), array( 'entypo-icon entypo-icon-publish' => 'Publish' ), array( 'entypo-icon entypo-icon-window' => 'Window' ), array( 'entypo-icon entypo-icon-arrow-combo' => 'Arrow Combo' ), array( 'entypo-icon entypo-icon-down-circled' => 'Down Circled' ), array( 'entypo-icon entypo-icon-left-circled' => 'Left Circled' ), array( 'entypo-icon entypo-icon-right-circled' => 'Right Circled' ), array( 'entypo-icon entypo-icon-up-circled' => 'Up Circled' ), array( 'entypo-icon entypo-icon-down-open' => 'Down Open' ), array( 'entypo-icon entypo-icon-left-open' => 'Left Open' ), array( 'entypo-icon entypo-icon-right-open' => 'Right Open' ), array( 'entypo-icon entypo-icon-up-open' => 'Up Open' ), array( 'entypo-icon entypo-icon-down-open-mini' => 'Down Open Mini' ), array( 'entypo-icon entypo-icon-left-open-mini' => 'Left Open Mini' ), array( 'entypo-icon entypo-icon-right-open-mini' => 'Right Open Mini' ), array( 'entypo-icon entypo-icon-up-open-mini' => 'Up Open Mini' ), array( 'entypo-icon entypo-icon-down-open-big' => 'Down Open Big' ), array( 'entypo-icon entypo-icon-left-open-big' => 'Left Open Big' ), array( 'entypo-icon entypo-icon-right-open-big' => 'Right Open Big' ), array( 'entypo-icon entypo-icon-up-open-big' => 'Up Open Big' ), array( 'entypo-icon entypo-icon-down' => 'Down' ), array( 'entypo-icon entypo-icon-left' => 'Left' ), array( 'entypo-icon entypo-icon-right' => 'Right' ), array( 'entypo-icon entypo-icon-up' => 'Up' ), array( 'entypo-icon entypo-icon-down-dir' => 'Down Dir' ), array( 'entypo-icon entypo-icon-left-dir' => 'Left Dir' ), array( 'entypo-icon entypo-icon-right-dir' => 'Right Dir' ), array( 'entypo-icon entypo-icon-up-dir' => 'Up Dir' ), array( 'entypo-icon entypo-icon-down-bold' => 'Down Bold' ), array( 'entypo-icon entypo-icon-left-bold' => 'Left Bold' ), array( 'entypo-icon entypo-icon-right-bold' => 'Right Bold' ), array( 'entypo-icon entypo-icon-up-bold' => 'Up Bold' ), array( 'entypo-icon entypo-icon-down-thin' => 'Down Thin' ), array( 'entypo-icon entypo-icon-left-thin' => 'Left Thin' ), array( 'entypo-icon entypo-icon-right-thin' => 'Right Thin' ), array( 'entypo-icon entypo-icon-up-thin' => 'Up Thin' ), array( 'entypo-icon entypo-icon-ccw' => 'Ccw' ), array( 'entypo-icon entypo-icon-cw' => 'Cw' ), array( 'entypo-icon entypo-icon-arrows-ccw' => 'Arrows Ccw' ), array( 'entypo-icon entypo-icon-level-down' => 'Level Down' ), array( 'entypo-icon entypo-icon-level-up' => 'Level Up' ), array( 'entypo-icon entypo-icon-shuffle' => 'Shuffle' ), array( 'entypo-icon entypo-icon-loop' => 'Loop' ), array( 'entypo-icon entypo-icon-switch' => 'Switch' ), array( 'entypo-icon entypo-icon-play' => 'Play' ), array( 'entypo-icon entypo-icon-stop' => 'Stop' ), array( 'entypo-icon entypo-icon-pause' => 'Pause' ), array( 'entypo-icon entypo-icon-record' => 'Record' ), array( 'entypo-icon entypo-icon-to-end' => 'To End' ), array( 'entypo-icon entypo-icon-to-start' => 'To Start' ), array( 'entypo-icon entypo-icon-fast-forward' => 'Fast Forward' ), array( 'entypo-icon entypo-icon-fast-backward' => 'Fast Backward' ), array( 'entypo-icon entypo-icon-progress-0' => 'Progress 0' ), array( 'entypo-icon entypo-icon-progress-1' => 'Progress 1' ), array( 'entypo-icon entypo-icon-progress-2' => 'Progress 2' ), array( 'entypo-icon entypo-icon-progress-3' => 'Progress 3' ), array( 'entypo-icon entypo-icon-target' => 'Target' ), array( 'entypo-icon entypo-icon-palette' => 'Palette' ), array( 'entypo-icon entypo-icon-list' => 'List' ), array( 'entypo-icon entypo-icon-list-add' => 'List Add' ), array( 'entypo-icon entypo-icon-signal' => 'Signal' ), array( 'entypo-icon entypo-icon-trophy' => 'Trophy' ), array( 'entypo-icon entypo-icon-battery' => 'Battery' ), array( 'entypo-icon entypo-icon-back-in-time' => 'Back In Time' ), array( 'entypo-icon entypo-icon-monitor' => 'Monitor' ), array( 'entypo-icon entypo-icon-mobile' => 'Mobile' ), array( 'entypo-icon entypo-icon-network' => 'Network' ), array( 'entypo-icon entypo-icon-cd' => 'Cd' ), array( 'entypo-icon entypo-icon-inbox' => 'Inbox' ), array( 'entypo-icon entypo-icon-install' => 'Install' ), array( 'entypo-icon entypo-icon-globe' => 'Globe' ), array( 'entypo-icon entypo-icon-cloud' => 'Cloud' ), array( 'entypo-icon entypo-icon-cloud-thunder' => 'Cloud Thunder' ), array( 'entypo-icon entypo-icon-flash' => 'Flash' ), array( 'entypo-icon entypo-icon-moon' => 'Moon' ), array( 'entypo-icon entypo-icon-flight' => 'Flight' ), array( 'entypo-icon entypo-icon-paper-plane' => 'Paper Plane' ), array( 'entypo-icon entypo-icon-leaf' => 'Leaf' ), array( 'entypo-icon entypo-icon-lifebuoy' => 'Lifebuoy' ), array( 'entypo-icon entypo-icon-mouse' => 'Mouse' ), array( 'entypo-icon entypo-icon-briefcase' => 'Briefcase' ), array( 'entypo-icon entypo-icon-suitcase' => 'Suitcase' ), array( 'entypo-icon entypo-icon-dot' => 'Dot' ), array( 'entypo-icon entypo-icon-dot-2' => 'Dot 2' ), array( 'entypo-icon entypo-icon-dot-3' => 'Dot 3' ), array( 'entypo-icon entypo-icon-brush' => 'Brush' ), array( 'entypo-icon entypo-icon-magnet' => 'Magnet' ), array( 'entypo-icon entypo-icon-infinity' => 'Infinity' ), array( 'entypo-icon entypo-icon-erase' => 'Erase' ), array( 'entypo-icon entypo-icon-chart-pie' => 'Chart Pie' ), array( 'entypo-icon entypo-icon-chart-line' => 'Chart Line' ), array( 'entypo-icon entypo-icon-chart-bar' => 'Chart Bar' ), array( 'entypo-icon entypo-icon-chart-area' => 'Chart Area' ), array( 'entypo-icon entypo-icon-tape' => 'Tape' ), array( 'entypo-icon entypo-icon-graduation-cap' => 'Graduation Cap' ), array( 'entypo-icon entypo-icon-language' => 'Language' ), array( 'entypo-icon entypo-icon-ticket' => 'Ticket' ), array( 'entypo-icon entypo-icon-water' => 'Water' ), array( 'entypo-icon entypo-icon-droplet' => 'Droplet' ), array( 'entypo-icon entypo-icon-air' => 'Air' ), array( 'entypo-icon entypo-icon-credit-card' => 'Credit Card' ), array( 'entypo-icon entypo-icon-floppy' => 'Floppy' ), array( 'entypo-icon entypo-icon-clipboard' => 'Clipboard' ), array( 'entypo-icon entypo-icon-megaphone' => 'Megaphone' ), array( 'entypo-icon entypo-icon-database' => 'Database' ), array( 'entypo-icon entypo-icon-drive' => 'Drive' ), array( 'entypo-icon entypo-icon-bucket' => 'Bucket' ), array( 'entypo-icon entypo-icon-thermometer' => 'Thermometer' ), array( 'entypo-icon entypo-icon-key' => 'Key' ), array( 'entypo-icon entypo-icon-flow-cascade' => 'Flow Cascade' ), array( 'entypo-icon entypo-icon-flow-branch' => 'Flow Branch' ), array( 'entypo-icon entypo-icon-flow-tree' => 'Flow Tree' ), array( 'entypo-icon entypo-icon-flow-line' => 'Flow Line' ), array( 'entypo-icon entypo-icon-flow-parallel' => 'Flow Parallel' ), array( 'entypo-icon entypo-icon-rocket' => 'Rocket' ), array( 'entypo-icon entypo-icon-gauge' => 'Gauge' ), array( 'entypo-icon entypo-icon-traffic-cone' => 'Traffic Cone' ), array( 'entypo-icon entypo-icon-cc' => 'Cc' ), array( 'entypo-icon entypo-icon-cc-by' => 'Cc By' ), array( 'entypo-icon entypo-icon-cc-nc' => 'Cc Nc' ), array( 'entypo-icon entypo-icon-cc-nc-eu' => 'Cc Nc Eu' ), array( 'entypo-icon entypo-icon-cc-nc-jp' => 'Cc Nc Jp' ), array( 'entypo-icon entypo-icon-cc-sa' => 'Cc Sa' ), array( 'entypo-icon entypo-icon-cc-nd' => 'Cc Nd' ), array( 'entypo-icon entypo-icon-cc-pd' => 'Cc Pd' ), array( 'entypo-icon entypo-icon-cc-zero' => 'Cc Zero' ), array( 'entypo-icon entypo-icon-cc-share' => 'Cc Share' ), array( 'entypo-icon entypo-icon-cc-remix' => 'Cc Remix' ), array( 'entypo-icon entypo-icon-github' => 'Github' ), array( 'entypo-icon entypo-icon-github-circled' => 'Github Circled' ), array( 'entypo-icon entypo-icon-flickr' => 'Flickr' ), array( 'entypo-icon entypo-icon-flickr-circled' => 'Flickr Circled' ), array( 'entypo-icon entypo-icon-vimeo' => 'Vimeo' ), array( 'entypo-icon entypo-icon-vimeo-circled' => 'Vimeo Circled' ), array( 'entypo-icon entypo-icon-twitter' => 'Twitter' ), array( 'entypo-icon entypo-icon-twitter-circled' => 'Twitter Circled' ), array( 'entypo-icon entypo-icon-facebook' => 'Facebook' ), array( 'entypo-icon entypo-icon-facebook-circled' => 'Facebook Circled' ), array( 'entypo-icon entypo-icon-facebook-squared' => 'Facebook Squared' ), array( 'entypo-icon entypo-icon-gplus' => 'Gplus' ), array( 'entypo-icon entypo-icon-gplus-circled' => 'Gplus Circled' ), array( 'entypo-icon entypo-icon-pinterest' => 'Pinterest' ), array( 'entypo-icon entypo-icon-pinterest-circled' => 'Pinterest Circled' ), array( 'entypo-icon entypo-icon-tumblr' => 'Tumblr' ), array( 'entypo-icon entypo-icon-tumblr-circled' => 'Tumblr Circled' ), array( 'entypo-icon entypo-icon-linkedin' => 'Linkedin' ), array( 'entypo-icon entypo-icon-linkedin-circled' => 'Linkedin Circled' ), array( 'entypo-icon entypo-icon-dribbble' => 'Dribbble' ), array( 'entypo-icon entypo-icon-dribbble-circled' => 'Dribbble Circled' ), array( 'entypo-icon entypo-icon-stumbleupon' => 'Stumbleupon' ), array( 'entypo-icon entypo-icon-stumbleupon-circled' => 'Stumbleupon Circled' ), array( 'entypo-icon entypo-icon-lastfm' => 'Lastfm' ), array( 'entypo-icon entypo-icon-lastfm-circled' => 'Lastfm Circled' ), array( 'entypo-icon entypo-icon-rdio' => 'Rdio' ), array( 'entypo-icon entypo-icon-rdio-circled' => 'Rdio Circled' ), array( 'entypo-icon entypo-icon-spotify' => 'Spotify' ), array( 'entypo-icon entypo-icon-spotify-circled' => 'Spotify Circled' ), array( 'entypo-icon entypo-icon-qq' => 'Qq' ), array( 'entypo-icon entypo-icon-instagrem' => 'Instagrem' ), array( 'entypo-icon entypo-icon-dropbox' => 'Dropbox' ), array( 'entypo-icon entypo-icon-evernote' => 'Evernote' ), array( 'entypo-icon entypo-icon-flattr' => 'Flattr' ), array( 'entypo-icon entypo-icon-skype' => 'Skype' ), array( 'entypo-icon entypo-icon-skype-circled' => 'Skype Circled' ), array( 'entypo-icon entypo-icon-renren' => 'Renren' ), array( 'entypo-icon entypo-icon-sina-weibo' => 'Sina Weibo' ), array( 'entypo-icon entypo-icon-paypal' => 'Paypal' ), array( 'entypo-icon entypo-icon-picasa' => 'Picasa' ), array( 'entypo-icon entypo-icon-soundcloud' => 'Soundcloud' ), array( 'entypo-icon entypo-icon-mixi' => 'Mixi' ), array( 'entypo-icon entypo-icon-behance' => 'Behance' ), array( 'entypo-icon entypo-icon-google-circles' => 'Google Circles' ), array( 'entypo-icon entypo-icon-vkontakte' => 'Vkontakte' ), array( 'entypo-icon entypo-icon-smashing' => 'Smashing' ), array( 'entypo-icon entypo-icon-sweden' => 'Sweden' ), array( 'entypo-icon entypo-icon-db-shape' => 'Db Shape' ), array( 'entypo-icon entypo-icon-logo-db' => 'Logo Db' ), ); return array_merge( $icons, $entypo_icons ); } add_filter( 'vc_iconpicker-type-linecons', 'vc_iconpicker_type_linecons' ); /** * Linecons icons from fontello.com * * @param $icons - taken from filter - vc_map param field settings['source'] * provided icons (default empty array). If array categorized it will * auto-enable category dropdown * * @since 4.4 * @return array - of icons for iconpicker, can be categorized, or not. */ function vc_iconpicker_type_linecons( $icons ) { $linecons_icons = array( array( 'vc_li vc_li-heart' => 'Heart' ), array( 'vc_li vc_li-cloud' => 'Cloud' ), array( 'vc_li vc_li-star' => 'Star' ), array( 'vc_li vc_li-tv' => 'Tv' ), array( 'vc_li vc_li-sound' => 'Sound' ), array( 'vc_li vc_li-video' => 'Video' ), array( 'vc_li vc_li-trash' => 'Trash' ), array( 'vc_li vc_li-user' => 'User' ), array( 'vc_li vc_li-key' => 'Key' ), array( 'vc_li vc_li-search' => 'Search' ), array( 'vc_li vc_li-settings' => 'Settings' ), array( 'vc_li vc_li-camera' => 'Camera' ), array( 'vc_li vc_li-tag' => 'Tag' ), array( 'vc_li vc_li-lock' => 'Lock' ), array( 'vc_li vc_li-bulb' => 'Bulb' ), array( 'vc_li vc_li-pen' => 'Pen' ), array( 'vc_li vc_li-diamond' => 'Diamond' ), array( 'vc_li vc_li-display' => 'Display' ), array( 'vc_li vc_li-location' => 'Location' ), array( 'vc_li vc_li-eye' => 'Eye' ), array( 'vc_li vc_li-bubble' => 'Bubble' ), array( 'vc_li vc_li-stack' => 'Stack' ), array( 'vc_li vc_li-cup' => 'Cup' ), array( 'vc_li vc_li-phone' => 'Phone' ), array( 'vc_li vc_li-news' => 'News' ), array( 'vc_li vc_li-mail' => 'Mail' ), array( 'vc_li vc_li-like' => 'Like' ), array( 'vc_li vc_li-photo' => 'Photo' ), array( 'vc_li vc_li-note' => 'Note' ), array( 'vc_li vc_li-clock' => 'Clock' ), array( 'vc_li vc_li-paperplane' => 'Paperplane' ), array( 'vc_li vc_li-params' => 'Params' ), array( 'vc_li vc_li-banknote' => 'Banknote' ), array( 'vc_li vc_li-data' => 'Data' ), array( 'vc_li vc_li-music' => 'Music' ), array( 'vc_li vc_li-megaphone' => 'Megaphone' ), array( 'vc_li vc_li-study' => 'Study' ), array( 'vc_li vc_li-lab' => 'Lab' ), array( 'vc_li vc_li-food' => 'Food' ), array( 'vc_li vc_li-t-shirt' => 'T Shirt' ), array( 'vc_li vc_li-fire' => 'Fire' ), array( 'vc_li vc_li-clip' => 'Clip' ), array( 'vc_li vc_li-shop' => 'Shop' ), array( 'vc_li vc_li-calendar' => 'Calendar' ), array( 'vc_li vc_li-vallet' => 'Vallet' ), array( 'vc_li vc_li-vynil' => 'Vynil' ), array( 'vc_li vc_li-truck' => 'Truck' ), array( 'vc_li vc_li-world' => 'World' ), ); return array_merge( $icons, $linecons_icons ); } add_filter( 'vc_iconpicker-type-monosocial', 'vc_iconpicker_type_monosocial' ); /** * monosocial icons from drinchev.github.io/monosocialiconsfont * * @param $icons - taken from filter - vc_map param field settings['source'] * provided icons (default empty array). If array categorized it will * auto-enable category dropdown * * @since 4.4 * @return array - of icons for iconpicker, can be categorized, or not. */ function vc_iconpicker_type_monosocial( $icons ) { $monosocial = array( array( 'vc-mono vc-mono-fivehundredpx' => 'Five Hundred px' ), array( 'vc-mono vc-mono-aboutme' => 'About me' ), array( 'vc-mono vc-mono-addme' => 'Add me' ), array( 'vc-mono vc-mono-amazon' => 'Amazon' ), array( 'vc-mono vc-mono-aol' => 'Aol' ), array( 'vc-mono vc-mono-appstorealt' => 'App-store-alt' ), array( 'vc-mono vc-mono-appstore' => 'Appstore' ), array( 'vc-mono vc-mono-apple' => 'Apple' ), array( 'vc-mono vc-mono-bebo' => 'Bebo' ), array( 'vc-mono vc-mono-behance' => 'Behance' ), array( 'vc-mono vc-mono-bing' => 'Bing' ), array( 'vc-mono vc-mono-blip' => 'Blip' ), array( 'vc-mono vc-mono-blogger' => 'Blogger' ), array( 'vc-mono vc-mono-coroflot' => 'Coroflot' ), array( 'vc-mono vc-mono-daytum' => 'Daytum' ), array( 'vc-mono vc-mono-delicious' => 'Delicious' ), array( 'vc-mono vc-mono-designbump' => 'Design bump' ), array( 'vc-mono vc-mono-designfloat' => 'Design float' ), array( 'vc-mono vc-mono-deviantart' => 'Deviant-art' ), array( 'vc-mono vc-mono-diggalt' => 'Digg-alt' ), array( 'vc-mono vc-mono-digg' => 'Digg' ), array( 'vc-mono vc-mono-dribble' => 'Dribble' ), array( 'vc-mono vc-mono-drupal' => 'Drupal' ), array( 'vc-mono vc-mono-ebay' => 'Ebay' ), array( 'vc-mono vc-mono-email' => 'Email' ), array( 'vc-mono vc-mono-emberapp' => 'Ember app' ), array( 'vc-mono vc-mono-etsy' => 'Etsy' ), array( 'vc-mono vc-mono-facebook' => 'Facebook' ), array( 'vc-mono vc-mono-feedburner' => 'Feed burner' ), array( 'vc-mono vc-mono-flickr' => 'Flickr' ), array( 'vc-mono vc-mono-foodspotting' => 'Food spotting' ), array( 'vc-mono vc-mono-forrst' => 'Forrst' ), array( 'vc-mono vc-mono-foursquare' => 'Fours quare' ), array( 'vc-mono vc-mono-friendsfeed' => 'Friends feed' ), array( 'vc-mono vc-mono-friendstar' => 'Friend star' ), array( 'vc-mono vc-mono-gdgt' => 'Gdgt' ), array( 'vc-mono vc-mono-github' => 'Github' ), array( 'vc-mono vc-mono-githubalt' => 'Github-alt' ), array( 'vc-mono vc-mono-googlebuzz' => 'Google buzz' ), array( 'vc-mono vc-mono-googleplus' => 'Google plus' ), array( 'vc-mono vc-mono-googletalk' => 'Google talk' ), array( 'vc-mono vc-mono-gowallapin' => 'Gowallapin' ), array( 'vc-mono vc-mono-gowalla' => 'Gowalla' ), array( 'vc-mono vc-mono-grooveshark' => 'Groove shark' ), array( 'vc-mono vc-mono-heart' => 'Heart' ), array( 'vc-mono vc-mono-hyves' => 'Hyves' ), array( 'vc-mono vc-mono-icondock' => 'Icondock' ), array( 'vc-mono vc-mono-icq' => 'Icq' ), array( 'vc-mono vc-mono-identica' => 'Identica' ), array( 'vc-mono vc-mono-imessage' => 'I message' ), array( 'vc-mono vc-mono-itunes' => 'I-tunes' ), array( 'vc-mono vc-mono-lastfm' => 'Lastfm' ), array( 'vc-mono vc-mono-linkedin' => 'Linkedin' ), array( 'vc-mono vc-mono-meetup' => 'Meetup' ), array( 'vc-mono vc-mono-metacafe' => 'Metacafe' ), array( 'vc-mono vc-mono-mixx' => 'Mixx' ), array( 'vc-mono vc-mono-mobileme' => 'Mobile me' ), array( 'vc-mono vc-mono-mrwong' => 'Mrwong' ), array( 'vc-mono vc-mono-msn' => 'Msn' ), array( 'vc-mono vc-mono-myspace' => 'Myspace' ), array( 'vc-mono vc-mono-newsvine' => 'Newsvine' ), array( 'vc-mono vc-mono-paypal' => 'Paypal' ), array( 'vc-mono vc-mono-photobucket' => 'Photo bucket' ), array( 'vc-mono vc-mono-picasa' => 'Picasa' ), array( 'vc-mono vc-mono-pinterest' => 'Pinterest' ), array( 'vc-mono vc-mono-podcast' => 'Podcast' ), array( 'vc-mono vc-mono-posterous' => 'Posterous' ), array( 'vc-mono vc-mono-qik' => 'Qik' ), array( 'vc-mono vc-mono-quora' => 'Quora' ), array( 'vc-mono vc-mono-reddit' => 'Reddit' ), array( 'vc-mono vc-mono-retweet' => 'Retweet' ), array( 'vc-mono vc-mono-rss' => 'Rss' ), array( 'vc-mono vc-mono-scribd' => 'Scribd' ), array( 'vc-mono vc-mono-sharethis' => 'Sharethis' ), array( 'vc-mono vc-mono-skype' => 'Skype' ), array( 'vc-mono vc-mono-slashdot' => 'Slashdot' ), array( 'vc-mono vc-mono-slideshare' => 'Slideshare' ), array( 'vc-mono vc-mono-smugmug' => 'Smugmug' ), array( 'vc-mono vc-mono-soundcloud' => 'Soundcloud' ), array( 'vc-mono vc-mono-spotify' => 'Spotify' ), array( 'vc-mono vc-mono-squidoo' => 'Squidoo' ), array( 'vc-mono vc-mono-stackoverflow' => 'Stackoverflow' ), array( 'vc-mono vc-mono-star' => 'Star' ), array( 'vc-mono vc-mono-stumbleupon' => 'Stumble upon' ), array( 'vc-mono vc-mono-technorati' => 'Technorati' ), array( 'vc-mono vc-mono-tumblr' => 'Tumblr' ), array( 'vc-mono vc-mono-twitterbird' => 'Twitterbird' ), array( 'vc-mono vc-mono-twitter' => 'Twitter' ), array( 'vc-mono vc-mono-viddler' => 'Viddler' ), array( 'vc-mono vc-mono-vimeo' => 'Vimeo' ), array( 'vc-mono vc-mono-virb' => 'Virb' ), array( 'vc-mono vc-mono-www' => 'Www' ), array( 'vc-mono vc-mono-wikipedia' => 'Wikipedia' ), array( 'vc-mono vc-mono-windows' => 'Windows' ), array( 'vc-mono vc-mono-wordpress' => 'WordPress' ), array( 'vc-mono vc-mono-xing' => 'Xing' ), array( 'vc-mono vc-mono-yahoobuzz' => 'Yahoo buzz' ), array( 'vc-mono vc-mono-yahoo' => 'Yahoo' ), array( 'vc-mono vc-mono-yelp' => 'Yelp' ), array( 'vc-mono vc-mono-youtube' => 'Youtube' ), array( 'vc-mono vc-mono-instagram' => 'Instagram' ), ); return array_merge( $icons, $monosocial ); } add_filter( 'vc_iconpicker-type-material', 'vc_iconpicker_type_material' ); /** * Material icon set from Google * @since 5.0 * * @param $icons * * @return array */ function vc_iconpicker_type_material( $icons ) { $material = array( array( 'vc-material vc-material-3d_rotation' => '3d rotation' ), array( 'vc-material vc-material-ac_unit' => 'ac unit' ), array( 'vc-material vc-material-alarm' => 'alarm' ), array( 'vc-material vc-material-access_alarms' => 'access alarms' ), array( 'vc-material vc-material-schedule' => 'schedule' ), array( 'vc-material vc-material-accessibility' => 'accessibility' ), array( 'vc-material vc-material-accessible' => 'accessible' ), array( 'vc-material vc-material-account_balance' => 'account balance' ), array( 'vc-material vc-material-account_balance_wallet' => 'account balance wallet' ), array( 'vc-material vc-material-account_box' => 'account box' ), array( 'vc-material vc-material-account_circle' => 'account circle' ), array( 'vc-material vc-material-adb' => 'adb' ), array( 'vc-material vc-material-add' => 'add' ), array( 'vc-material vc-material-add_a_photo' => 'add a photo' ), array( 'vc-material vc-material-alarm_add' => 'alarm add' ), array( 'vc-material vc-material-add_alert' => 'add alert' ), array( 'vc-material vc-material-add_box' => 'add box' ), array( 'vc-material vc-material-add_circle' => 'add circle' ), array( 'vc-material vc-material-control_point' => 'control point' ), array( 'vc-material vc-material-add_location' => 'add location' ), array( 'vc-material vc-material-add_shopping_cart' => 'add shopping cart' ), array( 'vc-material vc-material-queue' => 'queue' ), array( 'vc-material vc-material-add_to_queue' => 'add to queue' ), array( 'vc-material vc-material-adjust' => 'adjust' ), array( 'vc-material vc-material-airline_seat_flat' => 'airline seat flat' ), array( 'vc-material vc-material-airline_seat_flat_angled' => 'airline seat flat angled' ), array( 'vc-material vc-material-airline_seat_individual_suite' => 'airline seat individual suite' ), array( 'vc-material vc-material-airline_seat_legroom_extra' => 'airline seat legroom extra' ), array( 'vc-material vc-material-airline_seat_legroom_normal' => 'airline seat legroom normal' ), array( 'vc-material vc-material-airline_seat_legroom_reduced' => 'airline seat legroom reduced' ), array( 'vc-material vc-material-airline_seat_recline_extra' => 'airline seat recline extra' ), array( 'vc-material vc-material-airline_seat_recline_normal' => 'airline seat recline normal' ), array( 'vc-material vc-material-flight' => 'flight' ), array( 'vc-material vc-material-airplanemode_inactive' => 'airplanemode inactive' ), array( 'vc-material vc-material-airplay' => 'airplay' ), array( 'vc-material vc-material-airport_shuttle' => 'airport shuttle' ), array( 'vc-material vc-material-alarm_off' => 'alarm off' ), array( 'vc-material vc-material-alarm_on' => 'alarm on' ), array( 'vc-material vc-material-album' => 'album' ), array( 'vc-material vc-material-all_inclusive' => 'all inclusive' ), array( 'vc-material vc-material-all_out' => 'all out' ), array( 'vc-material vc-material-android' => 'android' ), array( 'vc-material vc-material-announcement' => 'announcement' ), array( 'vc-material vc-material-apps' => 'apps' ), array( 'vc-material vc-material-archive' => 'archive' ), array( 'vc-material vc-material-arrow_back' => 'arrow back' ), array( 'vc-material vc-material-arrow_downward' => 'arrow downward' ), array( 'vc-material vc-material-arrow_drop_down' => 'arrow drop down' ), array( 'vc-material vc-material-arrow_drop_down_circle' => 'arrow drop down circle' ), array( 'vc-material vc-material-arrow_drop_up' => 'arrow drop up' ), array( 'vc-material vc-material-arrow_forward' => 'arrow forward' ), array( 'vc-material vc-material-arrow_upward' => 'arrow upward' ), array( 'vc-material vc-material-art_track' => 'art track' ), array( 'vc-material vc-material-aspect_ratio' => 'aspect ratio' ), array( 'vc-material vc-material-poll' => 'poll' ), array( 'vc-material vc-material-assignment' => 'assignment' ), array( 'vc-material vc-material-assignment_ind' => 'assignment ind' ), array( 'vc-material vc-material-assignment_late' => 'assignment late' ), array( 'vc-material vc-material-assignment_return' => 'assignment return' ), array( 'vc-material vc-material-assignment_returned' => 'assignment returned' ), array( 'vc-material vc-material-assignment_turned_in' => 'assignment turned in' ), array( 'vc-material vc-material-assistant' => 'assistant' ), array( 'vc-material vc-material-flag' => 'flag' ), array( 'vc-material vc-material-attach_file' => 'attach file' ), array( 'vc-material vc-material-attach_money' => 'attach money' ), array( 'vc-material vc-material-attachment' => 'attachment' ), array( 'vc-material vc-material-audiotrack' => 'audiotrack' ), array( 'vc-material vc-material-autorenew' => 'autorenew' ), array( 'vc-material vc-material-av_timer' => 'av timer' ), array( 'vc-material vc-material-backspace' => 'backspace' ), array( 'vc-material vc-material-cloud_upload' => 'cloud upload' ), array( 'vc-material vc-material-battery_alert' => 'battery alert' ), array( 'vc-material vc-material-battery_charging_full' => 'battery charging full' ), array( 'vc-material vc-material-battery_std' => 'battery std' ), array( 'vc-material vc-material-battery_unknown' => 'battery unknown' ), array( 'vc-material vc-material-beach_access' => 'beach access' ), array( 'vc-material vc-material-beenhere' => 'beenhere' ), array( 'vc-material vc-material-block' => 'block' ), array( 'vc-material vc-material-bluetooth' => 'bluetooth' ), array( 'vc-material vc-material-bluetooth_searching' => 'bluetooth searching' ), array( 'vc-material vc-material-bluetooth_connected' => 'bluetooth connected' ), array( 'vc-material vc-material-bluetooth_disabled' => 'bluetooth disabled' ), array( 'vc-material vc-material-blur_circular' => 'blur circular' ), array( 'vc-material vc-material-blur_linear' => 'blur linear' ), array( 'vc-material vc-material-blur_off' => 'blur off' ), array( 'vc-material vc-material-blur_on' => 'blur on' ), array( 'vc-material vc-material-class' => 'class' ), array( 'vc-material vc-material-turned_in' => 'turned in' ), array( 'vc-material vc-material-turned_in_not' => 'turned in not' ), array( 'vc-material vc-material-border_all' => 'border all' ), array( 'vc-material vc-material-border_bottom' => 'border bottom' ), array( 'vc-material vc-material-border_clear' => 'border clear' ), array( 'vc-material vc-material-border_color' => 'border color' ), array( 'vc-material vc-material-border_horizontal' => 'border horizontal' ), array( 'vc-material vc-material-border_inner' => 'border inner' ), array( 'vc-material vc-material-border_left' => 'border left' ), array( 'vc-material vc-material-border_outer' => 'border outer' ), array( 'vc-material vc-material-border_right' => 'border right' ), array( 'vc-material vc-material-border_style' => 'border style' ), array( 'vc-material vc-material-border_top' => 'border top' ), array( 'vc-material vc-material-border_vertical' => 'border vertical' ), array( 'vc-material vc-material-branding_watermark' => 'branding watermark' ), array( 'vc-material vc-material-brightness_1' => 'brightness 1' ), array( 'vc-material vc-material-brightness_2' => 'brightness 2' ), array( 'vc-material vc-material-brightness_3' => 'brightness 3' ), array( 'vc-material vc-material-brightness_4' => 'brightness 4' ), array( 'vc-material vc-material-brightness_low' => 'brightness low' ), array( 'vc-material vc-material-brightness_medium' => 'brightness medium' ), array( 'vc-material vc-material-brightness_high' => 'brightness high' ), array( 'vc-material vc-material-brightness_auto' => 'brightness auto' ), array( 'vc-material vc-material-broken_image' => 'broken image' ), array( 'vc-material vc-material-brush' => 'brush' ), array( 'vc-material vc-material-bubble_chart' => 'bubble chart' ), array( 'vc-material vc-material-bug_report' => 'bug report' ), array( 'vc-material vc-material-build' => 'build' ), array( 'vc-material vc-material-burst_mode' => 'burst mode' ), array( 'vc-material vc-material-domain' => 'domain' ), array( 'vc-material vc-material-business_center' => 'business center' ), array( 'vc-material vc-material-cached' => 'cached' ), array( 'vc-material vc-material-cake' => 'cake' ), array( 'vc-material vc-material-phone' => 'phone' ), array( 'vc-material vc-material-call_end' => 'call end' ), array( 'vc-material vc-material-call_made' => 'call made' ), array( 'vc-material vc-material-merge_type' => 'merge type' ), array( 'vc-material vc-material-call_missed' => 'call missed' ), array( 'vc-material vc-material-call_missed_outgoing' => 'call missed outgoing' ), array( 'vc-material vc-material-call_received' => 'call received' ), array( 'vc-material vc-material-call_split' => 'call split' ), array( 'vc-material vc-material-call_to_action' => 'call to action' ), array( 'vc-material vc-material-camera' => 'camera' ), array( 'vc-material vc-material-photo_camera' => 'photo camera' ), array( 'vc-material vc-material-camera_enhance' => 'camera enhance' ), array( 'vc-material vc-material-camera_front' => 'camera front' ), array( 'vc-material vc-material-camera_rear' => 'camera rear' ), array( 'vc-material vc-material-camera_roll' => 'camera roll' ), array( 'vc-material vc-material-cancel' => 'cancel' ), array( 'vc-material vc-material-redeem' => 'redeem' ), array( 'vc-material vc-material-card_membership' => 'card membership' ), array( 'vc-material vc-material-card_travel' => 'card travel' ), array( 'vc-material vc-material-casino' => 'casino' ), array( 'vc-material vc-material-cast' => 'cast' ), array( 'vc-material vc-material-cast_connected' => 'cast connected' ), array( 'vc-material vc-material-center_focus_strong' => 'center focus strong' ), array( 'vc-material vc-material-center_focus_weak' => 'center focus weak' ), array( 'vc-material vc-material-change_history' => 'change history' ), array( 'vc-material vc-material-chat' => 'chat' ), array( 'vc-material vc-material-chat_bubble' => 'chat bubble' ), array( 'vc-material vc-material-chat_bubble_outline' => 'chat bubble outline' ), array( 'vc-material vc-material-check' => 'check' ), array( 'vc-material vc-material-check_box' => 'check box' ), array( 'vc-material vc-material-check_box_outline_blank' => 'check box outline blank' ), array( 'vc-material vc-material-check_circle' => 'check circle' ), array( 'vc-material vc-material-navigate_before' => 'navigate before' ), array( 'vc-material vc-material-navigate_next' => 'navigate next' ), array( 'vc-material vc-material-child_care' => 'child care' ), array( 'vc-material vc-material-child_friendly' => 'child friendly' ), array( 'vc-material vc-material-chrome_reader_mode' => 'chrome reader mode' ), array( 'vc-material vc-material-close' => 'close' ), array( 'vc-material vc-material-clear_all' => 'clear all' ), array( 'vc-material vc-material-closed_caption' => 'closed caption' ), array( 'vc-material vc-material-wb_cloudy' => 'wb cloudy' ), array( 'vc-material vc-material-cloud_circle' => 'cloud circle' ), array( 'vc-material vc-material-cloud_done' => 'cloud done' ), array( 'vc-material vc-material-cloud_download' => 'cloud download' ), array( 'vc-material vc-material-cloud_off' => 'cloud off' ), array( 'vc-material vc-material-cloud_queue' => 'cloud queue' ), array( 'vc-material vc-material-code' => 'code' ), array( 'vc-material vc-material-photo_library' => 'photo library' ), array( 'vc-material vc-material-collections_bookmark' => 'collections bookmark' ), array( 'vc-material vc-material-palette' => 'palette' ), array( 'vc-material vc-material-colorize' => 'colorize' ), array( 'vc-material vc-material-comment' => 'comment' ), array( 'vc-material vc-material-compare' => 'compare' ), array( 'vc-material vc-material-compare_arrows' => 'compare arrows' ), array( 'vc-material vc-material-laptop' => 'laptop' ), array( 'vc-material vc-material-confirmation_number' => 'confirmation number' ), array( 'vc-material vc-material-contact_mail' => 'contact mail' ), array( 'vc-material vc-material-contact_phone' => 'contact phone' ), array( 'vc-material vc-material-contacts' => 'contacts' ), array( 'vc-material vc-material-content_copy' => 'content copy' ), array( 'vc-material vc-material-content_cut' => 'content cut' ), array( 'vc-material vc-material-content_paste' => 'content paste' ), array( 'vc-material vc-material-control_point_duplicate' => 'control point duplicate' ), array( 'vc-material vc-material-copyright' => 'copyright' ), array( 'vc-material vc-material-mode_edit' => 'mode edit' ), array( 'vc-material vc-material-create_new_folder' => 'create new folder' ), array( 'vc-material vc-material-payment' => 'payment' ), array( 'vc-material vc-material-crop' => 'crop' ), array( 'vc-material vc-material-crop_16_9' => 'crop 16 9' ), array( 'vc-material vc-material-crop_3_2' => 'crop 3 2' ), array( 'vc-material vc-material-crop_landscape' => 'crop landscape' ), array( 'vc-material vc-material-crop_7_5' => 'crop 7 5' ), array( 'vc-material vc-material-crop_din' => 'crop din' ), array( 'vc-material vc-material-crop_free' => 'crop free' ), array( 'vc-material vc-material-crop_original' => 'crop original' ), array( 'vc-material vc-material-crop_portrait' => 'crop portrait' ), array( 'vc-material vc-material-crop_rotate' => 'crop rotate' ), array( 'vc-material vc-material-crop_square' => 'crop square' ), array( 'vc-material vc-material-dashboard' => 'dashboard' ), array( 'vc-material vc-material-data_usage' => 'data usage' ), array( 'vc-material vc-material-date_range' => 'date range' ), array( 'vc-material vc-material-dehaze' => 'dehaze' ), array( 'vc-material vc-material-delete' => 'delete' ), array( 'vc-material vc-material-delete_forever' => 'delete forever' ), array( 'vc-material vc-material-delete_sweep' => 'delete sweep' ), array( 'vc-material vc-material-description' => 'description' ), array( 'vc-material vc-material-desktop_mac' => 'desktop mac' ), array( 'vc-material vc-material-desktop_windows' => 'desktop windows' ), array( 'vc-material vc-material-details' => 'details' ), array( 'vc-material vc-material-developer_board' => 'developer board' ), array( 'vc-material vc-material-developer_mode' => 'developer mode' ), array( 'vc-material vc-material-device_hub' => 'device hub' ), array( 'vc-material vc-material-phonelink' => 'phonelink' ), array( 'vc-material vc-material-devices_other' => 'devices other' ), array( 'vc-material vc-material-dialer_sip' => 'dialer sip' ), array( 'vc-material vc-material-dialpad' => 'dialpad' ), array( 'vc-material vc-material-directions' => 'directions' ), array( 'vc-material vc-material-directions_bike' => 'directions bike' ), array( 'vc-material vc-material-directions_boat' => 'directions boat' ), array( 'vc-material vc-material-directions_bus' => 'directions bus' ), array( 'vc-material vc-material-directions_car' => 'directions car' ), array( 'vc-material vc-material-directions_railway' => 'directions railway' ), array( 'vc-material vc-material-directions_run' => 'directions run' ), array( 'vc-material vc-material-directions_transit' => 'directions transit' ), array( 'vc-material vc-material-directions_walk' => 'directions walk' ), array( 'vc-material vc-material-disc_full' => 'disc full' ), array( 'vc-material vc-material-dns' => 'dns' ), array( 'vc-material vc-material-not_interested' => 'not interested' ), array( 'vc-material vc-material-do_not_disturb_alt' => 'do not disturb alt' ), array( 'vc-material vc-material-do_not_disturb_off' => 'do not disturb off' ), array( 'vc-material vc-material-remove_circle' => 'remove circle' ), array( 'vc-material vc-material-dock' => 'dock' ), array( 'vc-material vc-material-done' => 'done' ), array( 'vc-material vc-material-done_all' => 'done all' ), array( 'vc-material vc-material-donut_large' => 'donut large' ), array( 'vc-material vc-material-donut_small' => 'donut small' ), array( 'vc-material vc-material-drafts' => 'drafts' ), array( 'vc-material vc-material-drag_handle' => 'drag handle' ), array( 'vc-material vc-material-time_to_leave' => 'time to leave' ), array( 'vc-material vc-material-dvr' => 'dvr' ), array( 'vc-material vc-material-edit_location' => 'edit location' ), array( 'vc-material vc-material-eject' => 'eject' ), array( 'vc-material vc-material-markunread' => 'markunread' ), array( 'vc-material vc-material-enhanced_encryption' => 'enhanced encryption' ), array( 'vc-material vc-material-equalizer' => 'equalizer' ), array( 'vc-material vc-material-error' => 'error' ), array( 'vc-material vc-material-error_outline' => 'error outline' ), array( 'vc-material vc-material-euro_symbol' => 'euro symbol' ), array( 'vc-material vc-material-ev_station' => 'ev station' ), array( 'vc-material vc-material-insert_invitation' => 'insert invitation' ), array( 'vc-material vc-material-event_available' => 'event available' ), array( 'vc-material vc-material-event_busy' => 'event busy' ), array( 'vc-material vc-material-event_note' => 'event note' ), array( 'vc-material vc-material-event_seat' => 'event seat' ), array( 'vc-material vc-material-exit_to_app' => 'exit to app' ), array( 'vc-material vc-material-expand_less' => 'expand less' ), array( 'vc-material vc-material-expand_more' => 'expand more' ), array( 'vc-material vc-material-explicit' => 'explicit' ), array( 'vc-material vc-material-explore' => 'explore' ), array( 'vc-material vc-material-exposure' => 'exposure' ), array( 'vc-material vc-material-exposure_neg_1' => 'exposure neg 1' ), array( 'vc-material vc-material-exposure_neg_2' => 'exposure neg 2' ), array( 'vc-material vc-material-exposure_plus_1' => 'exposure plus 1' ), array( 'vc-material vc-material-exposure_plus_2' => 'exposure plus 2' ), array( 'vc-material vc-material-exposure_zero' => 'exposure zero' ), array( 'vc-material vc-material-extension' => 'extension' ), array( 'vc-material vc-material-face' => 'face' ), array( 'vc-material vc-material-fast_forward' => 'fast forward' ), array( 'vc-material vc-material-fast_rewind' => 'fast rewind' ), array( 'vc-material vc-material-favorite' => 'favorite' ), array( 'vc-material vc-material-favorite_border' => 'favorite border' ), array( 'vc-material vc-material-featured_play_list' => 'featured play list' ), array( 'vc-material vc-material-featured_video' => 'featured video' ), array( 'vc-material vc-material-sms_failed' => 'sms failed' ), array( 'vc-material vc-material-fiber_dvr' => 'fiber dvr' ), array( 'vc-material vc-material-fiber_manual_record' => 'fiber manual record' ), array( 'vc-material vc-material-fiber_new' => 'fiber new' ), array( 'vc-material vc-material-fiber_pin' => 'fiber pin' ), array( 'vc-material vc-material-fiber_smart_record' => 'fiber smart record' ), array( 'vc-material vc-material-get_app' => 'get app' ), array( 'vc-material vc-material-file_upload' => 'file upload' ), array( 'vc-material vc-material-filter' => 'filter' ), array( 'vc-material vc-material-filter_1' => 'filter 1' ), array( 'vc-material vc-material-filter_2' => 'filter 2' ), array( 'vc-material vc-material-filter_3' => 'filter 3' ), array( 'vc-material vc-material-filter_4' => 'filter 4' ), array( 'vc-material vc-material-filter_5' => 'filter 5' ), array( 'vc-material vc-material-filter_6' => 'filter 6' ), array( 'vc-material vc-material-filter_7' => 'filter 7' ), array( 'vc-material vc-material-filter_8' => 'filter 8' ), array( 'vc-material vc-material-filter_9' => 'filter 9' ), array( 'vc-material vc-material-filter_9_plus' => 'filter 9 plus' ), array( 'vc-material vc-material-filter_b_and_w' => 'filter b and w' ), array( 'vc-material vc-material-filter_center_focus' => 'filter center focus' ), array( 'vc-material vc-material-filter_drama' => 'filter drama' ), array( 'vc-material vc-material-filter_frames' => 'filter frames' ), array( 'vc-material vc-material-terrain' => 'terrain' ), array( 'vc-material vc-material-filter_list' => 'filter list' ), array( 'vc-material vc-material-filter_none' => 'filter none' ), array( 'vc-material vc-material-filter_tilt_shift' => 'filter tilt shift' ), array( 'vc-material vc-material-filter_vintage' => 'filter vintage' ), array( 'vc-material vc-material-find_in_page' => 'find in page' ), array( 'vc-material vc-material-find_replace' => 'find replace' ), array( 'vc-material vc-material-fingerprint' => 'fingerprint' ), array( 'vc-material vc-material-first_page' => 'first page' ), array( 'vc-material vc-material-fitness_center' => 'fitness center' ), array( 'vc-material vc-material-flare' => 'flare' ), array( 'vc-material vc-material-flash_auto' => 'flash auto' ), array( 'vc-material vc-material-flash_off' => 'flash off' ), array( 'vc-material vc-material-flash_on' => 'flash on' ), array( 'vc-material vc-material-flight_land' => 'flight land' ), array( 'vc-material vc-material-flight_takeoff' => 'flight takeoff' ), array( 'vc-material vc-material-flip' => 'flip' ), array( 'vc-material vc-material-flip_to_back' => 'flip to back' ), array( 'vc-material vc-material-flip_to_front' => 'flip to front' ), array( 'vc-material vc-material-folder' => 'folder' ), array( 'vc-material vc-material-folder_open' => 'folder open' ), array( 'vc-material vc-material-folder_shared' => 'folder shared' ), array( 'vc-material vc-material-folder_special' => 'folder special' ), array( 'vc-material vc-material-font_download' => 'font download' ), array( 'vc-material vc-material-format_align_center' => 'format align center' ), array( 'vc-material vc-material-format_align_justify' => 'format align justify' ), array( 'vc-material vc-material-format_align_left' => 'format align left' ), array( 'vc-material vc-material-format_align_right' => 'format align right' ), array( 'vc-material vc-material-format_bold' => 'format bold' ), array( 'vc-material vc-material-format_clear' => 'format clear' ), array( 'vc-material vc-material-format_color_fill' => 'format color fill' ), array( 'vc-material vc-material-format_color_reset' => 'format color reset' ), array( 'vc-material vc-material-format_color_text' => 'format color text' ), array( 'vc-material vc-material-format_indent_decrease' => 'format indent decrease' ), array( 'vc-material vc-material-format_indent_increase' => 'format indent increase' ), array( 'vc-material vc-material-format_italic' => 'format italic' ), array( 'vc-material vc-material-format_line_spacing' => 'format line spacing' ), array( 'vc-material vc-material-format_list_bulleted' => 'format list bulleted' ), array( 'vc-material vc-material-format_list_numbered' => 'format list numbered' ), array( 'vc-material vc-material-format_paint' => 'format paint' ), array( 'vc-material vc-material-format_quote' => 'format quote' ), array( 'vc-material vc-material-format_shapes' => 'format shapes' ), array( 'vc-material vc-material-format_size' => 'format size' ), array( 'vc-material vc-material-format_strikethrough' => 'format strikethrough' ), array( 'vc-material vc-material-format_textdirection_l_to_r' => 'format textdirection l to r' ), array( 'vc-material vc-material-format_textdirection_r_to_l' => 'format textdirection r to l' ), array( 'vc-material vc-material-format_underlined' => 'format underlined' ), array( 'vc-material vc-material-question_answer' => 'question answer' ), array( 'vc-material vc-material-forward' => 'forward' ), array( 'vc-material vc-material-forward_10' => 'forward 10' ), array( 'vc-material vc-material-forward_30' => 'forward 30' ), array( 'vc-material vc-material-forward_5' => 'forward 5' ), array( 'vc-material vc-material-free_breakfast' => 'free breakfast' ), array( 'vc-material vc-material-fullscreen' => 'fullscreen' ), array( 'vc-material vc-material-fullscreen_exit' => 'fullscreen exit' ), array( 'vc-material vc-material-functions' => 'functions' ), array( 'vc-material vc-material-g_translate' => 'g translate' ), array( 'vc-material vc-material-games' => 'games' ), array( 'vc-material vc-material-gavel' => 'gavel' ), array( 'vc-material vc-material-gesture' => 'gesture' ), array( 'vc-material vc-material-gif' => 'gif' ), array( 'vc-material vc-material-goat' => 'goat' ), array( 'vc-material vc-material-golf_course' => 'golf course' ), array( 'vc-material vc-material-my_location' => 'my location' ), array( 'vc-material vc-material-location_searching' => 'location searching' ), array( 'vc-material vc-material-location_disabled' => 'location disabled' ), array( 'vc-material vc-material-star' => 'star' ), array( 'vc-material vc-material-gradient' => 'gradient' ), array( 'vc-material vc-material-grain' => 'grain' ), array( 'vc-material vc-material-graphic_eq' => 'graphic eq' ), array( 'vc-material vc-material-grid_off' => 'grid off' ), array( 'vc-material vc-material-grid_on' => 'grid on' ), array( 'vc-material vc-material-people' => 'people' ), array( 'vc-material vc-material-group_add' => 'group add' ), array( 'vc-material vc-material-group_work' => 'group work' ), array( 'vc-material vc-material-hd' => 'hd' ), array( 'vc-material vc-material-hdr_off' => 'hdr off' ), array( 'vc-material vc-material-hdr_on' => 'hdr on' ), array( 'vc-material vc-material-hdr_strong' => 'hdr strong' ), array( 'vc-material vc-material-hdr_weak' => 'hdr weak' ), array( 'vc-material vc-material-headset' => 'headset' ), array( 'vc-material vc-material-headset_mic' => 'headset mic' ), array( 'vc-material vc-material-healing' => 'healing' ), array( 'vc-material vc-material-hearing' => 'hearing' ), array( 'vc-material vc-material-help' => 'help' ), array( 'vc-material vc-material-help_outline' => 'help outline' ), array( 'vc-material vc-material-high_quality' => 'high quality' ), array( 'vc-material vc-material-highlight' => 'highlight' ), array( 'vc-material vc-material-highlight_off' => 'highlight off' ), array( 'vc-material vc-material-restore' => 'restore' ), array( 'vc-material vc-material-home' => 'home' ), array( 'vc-material vc-material-hot_tub' => 'hot tub' ), array( 'vc-material vc-material-local_hotel' => 'local hotel' ), array( 'vc-material vc-material-hourglass_empty' => 'hourglass empty' ), array( 'vc-material vc-material-hourglass_full' => 'hourglass full' ), array( 'vc-material vc-material-http' => 'http' ), array( 'vc-material vc-material-lock' => 'lock' ), array( 'vc-material vc-material-photo' => 'photo' ), array( 'vc-material vc-material-image_aspect_ratio' => 'image aspect ratio' ), array( 'vc-material vc-material-import_contacts' => 'import contacts' ), array( 'vc-material vc-material-import_export' => 'import export' ), array( 'vc-material vc-material-important_devices' => 'important devices' ), array( 'vc-material vc-material-inbox' => 'inbox' ), array( 'vc-material vc-material-indeterminate_check_box' => 'indeterminate check box' ), array( 'vc-material vc-material-info' => 'info' ), array( 'vc-material vc-material-info_outline' => 'info outline' ), array( 'vc-material vc-material-input' => 'input' ), array( 'vc-material vc-material-insert_comment' => 'insert comment' ), array( 'vc-material vc-material-insert_drive_file' => 'insert drive file' ), array( 'vc-material vc-material-tag_faces' => 'tag faces' ), array( 'vc-material vc-material-link' => 'link' ), array( 'vc-material vc-material-invert_colors' => 'invert colors' ), array( 'vc-material vc-material-invert_colors_off' => 'invert colors off' ), array( 'vc-material vc-material-iso' => 'iso' ), array( 'vc-material vc-material-keyboard' => 'keyboard' ), array( 'vc-material vc-material-keyboard_arrow_down' => 'keyboard arrow down' ), array( 'vc-material vc-material-keyboard_arrow_left' => 'keyboard arrow left' ), array( 'vc-material vc-material-keyboard_arrow_right' => 'keyboard arrow right' ), array( 'vc-material vc-material-keyboard_arrow_up' => 'keyboard arrow up' ), array( 'vc-material vc-material-keyboard_backspace' => 'keyboard backspace' ), array( 'vc-material vc-material-keyboard_capslock' => 'keyboard capslock' ), array( 'vc-material vc-material-keyboard_hide' => 'keyboard hide' ), array( 'vc-material vc-material-keyboard_return' => 'keyboard return' ), array( 'vc-material vc-material-keyboard_tab' => 'keyboard tab' ), array( 'vc-material vc-material-keyboard_voice' => 'keyboard voice' ), array( 'vc-material vc-material-kitchen' => 'kitchen' ), array( 'vc-material vc-material-label' => 'label' ), array( 'vc-material vc-material-label_outline' => 'label outline' ), array( 'vc-material vc-material-language' => 'language' ), array( 'vc-material vc-material-laptop_chromebook' => 'laptop chromebook' ), array( 'vc-material vc-material-laptop_mac' => 'laptop mac' ), array( 'vc-material vc-material-laptop_windows' => 'laptop windows' ), array( 'vc-material vc-material-last_page' => 'last page' ), array( 'vc-material vc-material-open_in_new' => 'open in new' ), array( 'vc-material vc-material-layers' => 'layers' ), array( 'vc-material vc-material-layers_clear' => 'layers clear' ), array( 'vc-material vc-material-leak_add' => 'leak add' ), array( 'vc-material vc-material-leak_remove' => 'leak remove' ), array( 'vc-material vc-material-lens' => 'lens' ), array( 'vc-material vc-material-library_books' => 'library books' ), array( 'vc-material vc-material-library_music' => 'library music' ), array( 'vc-material vc-material-lightbulb_outline' => 'lightbulb outline' ), array( 'vc-material vc-material-line_style' => 'line style' ), array( 'vc-material vc-material-line_weight' => 'line weight' ), array( 'vc-material vc-material-linear_scale' => 'linear scale' ), array( 'vc-material vc-material-linked_camera' => 'linked camera' ), array( 'vc-material vc-material-list' => 'list' ), array( 'vc-material vc-material-live_help' => 'live help' ), array( 'vc-material vc-material-live_tv' => 'live tv' ), array( 'vc-material vc-material-local_play' => 'local play' ), array( 'vc-material vc-material-local_airport' => 'local airport' ), array( 'vc-material vc-material-local_atm' => 'local atm' ), array( 'vc-material vc-material-local_bar' => 'local bar' ), array( 'vc-material vc-material-local_cafe' => 'local cafe' ), array( 'vc-material vc-material-local_car_wash' => 'local car wash' ), array( 'vc-material vc-material-local_convenience_store' => 'local convenience store' ), array( 'vc-material vc-material-restaurant_menu' => 'restaurant menu' ), array( 'vc-material vc-material-local_drink' => 'local drink' ), array( 'vc-material vc-material-local_florist' => 'local florist' ), array( 'vc-material vc-material-local_gas_station' => 'local gas station' ), array( 'vc-material vc-material-shopping_cart' => 'shopping cart' ), array( 'vc-material vc-material-local_hospital' => 'local hospital' ), array( 'vc-material vc-material-local_laundry_service' => 'local laundry service' ), array( 'vc-material vc-material-local_library' => 'local library' ), array( 'vc-material vc-material-local_mall' => 'local mall' ), array( 'vc-material vc-material-theaters' => 'theaters' ), array( 'vc-material vc-material-local_offer' => 'local offer' ), array( 'vc-material vc-material-local_parking' => 'local parking' ), array( 'vc-material vc-material-local_pharmacy' => 'local pharmacy' ), array( 'vc-material vc-material-local_pizza' => 'local pizza' ), array( 'vc-material vc-material-print' => 'print' ), array( 'vc-material vc-material-local_shipping' => 'local shipping' ), array( 'vc-material vc-material-local_taxi' => 'local taxi' ), array( 'vc-material vc-material-location_city' => 'location city' ), array( 'vc-material vc-material-location_off' => 'location off' ), array( 'vc-material vc-material-room' => 'room' ), array( 'vc-material vc-material-lock_open' => 'lock open' ), array( 'vc-material vc-material-lock_outline' => 'lock outline' ), array( 'vc-material vc-material-looks' => 'looks' ), array( 'vc-material vc-material-looks_3' => 'looks 3' ), array( 'vc-material vc-material-looks_4' => 'looks 4' ), array( 'vc-material vc-material-looks_5' => 'looks 5' ), array( 'vc-material vc-material-looks_6' => 'looks 6' ), array( 'vc-material vc-material-looks_one' => 'looks one' ), array( 'vc-material vc-material-looks_two' => 'looks two' ), array( 'vc-material vc-material-sync' => 'sync' ), array( 'vc-material vc-material-loupe' => 'loupe' ), array( 'vc-material vc-material-low_priority' => 'low priority' ), array( 'vc-material vc-material-loyalty' => 'loyalty' ), array( 'vc-material vc-material-mail_outline' => 'mail outline' ), array( 'vc-material vc-material-map' => 'map' ), array( 'vc-material vc-material-markunread_mailbox' => 'markunread mailbox' ), array( 'vc-material vc-material-memory' => 'memory' ), array( 'vc-material vc-material-menu' => 'menu' ), array( 'vc-material vc-material-message' => 'message' ), array( 'vc-material vc-material-mic' => 'mic' ), array( 'vc-material vc-material-mic_none' => 'mic none' ), array( 'vc-material vc-material-mic_off' => 'mic off' ), array( 'vc-material vc-material-mms' => 'mms' ), array( 'vc-material vc-material-mode_comment' => 'mode comment' ), array( 'vc-material vc-material-monetization_on' => 'monetization on' ), array( 'vc-material vc-material-money_off' => 'money off' ), array( 'vc-material vc-material-monochrome_photos' => 'monochrome photos' ), array( 'vc-material vc-material-mood_bad' => 'mood bad' ), array( 'vc-material vc-material-more' => 'more' ), array( 'vc-material vc-material-more_horiz' => 'more horiz' ), array( 'vc-material vc-material-more_vert' => 'more vert' ), array( 'vc-material vc-material-motorcycle' => 'motorcycle' ), array( 'vc-material vc-material-mouse' => 'mouse' ), array( 'vc-material vc-material-move_to_inbox' => 'move to inbox' ), array( 'vc-material vc-material-movie_creation' => 'movie creation' ), array( 'vc-material vc-material-movie_filter' => 'movie filter' ), array( 'vc-material vc-material-multiline_chart' => 'multiline chart' ), array( 'vc-material vc-material-music_note' => 'music note' ), array( 'vc-material vc-material-music_video' => 'music video' ), array( 'vc-material vc-material-nature' => 'nature' ), array( 'vc-material vc-material-nature_people' => 'nature people' ), array( 'vc-material vc-material-navigation' => 'navigation' ), array( 'vc-material vc-material-near_me' => 'near me' ), array( 'vc-material vc-material-network_cell' => 'network cell' ), array( 'vc-material vc-material-network_check' => 'network check' ), array( 'vc-material vc-material-network_locked' => 'network locked' ), array( 'vc-material vc-material-network_wifi' => 'network wifi' ), array( 'vc-material vc-material-new_releases' => 'new releases' ), array( 'vc-material vc-material-next_week' => 'next week' ), array( 'vc-material vc-material-nfc' => 'nfc' ), array( 'vc-material vc-material-no_encryption' => 'no encryption' ), array( 'vc-material vc-material-signal_cellular_no_sim' => 'signal cellular no sim' ), array( 'vc-material vc-material-note' => 'note' ), array( 'vc-material vc-material-note_add' => 'note add' ), array( 'vc-material vc-material-notifications' => 'notifications' ), array( 'vc-material vc-material-notifications_active' => 'notifications active' ), array( 'vc-material vc-material-notifications_none' => 'notifications none' ), array( 'vc-material vc-material-notifications_off' => 'notifications off' ), array( 'vc-material vc-material-notifications_paused' => 'notifications paused' ), array( 'vc-material vc-material-offline_pin' => 'offline pin' ), array( 'vc-material vc-material-ondemand_video' => 'ondemand video' ), array( 'vc-material vc-material-opacity' => 'opacity' ), array( 'vc-material vc-material-open_in_browser' => 'open in browser' ), array( 'vc-material vc-material-open_with' => 'open with' ), array( 'vc-material vc-material-pages' => 'pages' ), array( 'vc-material vc-material-pageview' => 'pageview' ), array( 'vc-material vc-material-pan_tool' => 'pan tool' ), array( 'vc-material vc-material-panorama' => 'panorama' ), array( 'vc-material vc-material-radio_button_unchecked' => 'radio button unchecked' ), array( 'vc-material vc-material-panorama_horizontal' => 'panorama horizontal' ), array( 'vc-material vc-material-panorama_vertical' => 'panorama vertical' ), array( 'vc-material vc-material-panorama_wide_angle' => 'panorama wide angle' ), array( 'vc-material vc-material-party_mode' => 'party mode' ), array( 'vc-material vc-material-pause' => 'pause' ), array( 'vc-material vc-material-pause_circle_filled' => 'pause circle filled' ), array( 'vc-material vc-material-pause_circle_outline' => 'pause circle outline' ), array( 'vc-material vc-material-people_outline' => 'people outline' ), array( 'vc-material vc-material-perm_camera_mic' => 'perm camera mic' ), array( 'vc-material vc-material-perm_contact_calendar' => 'perm contact calendar' ), array( 'vc-material vc-material-perm_data_setting' => 'perm data setting' ), array( 'vc-material vc-material-perm_device_information' => 'perm device information' ), array( 'vc-material vc-material-person_outline' => 'person outline' ), array( 'vc-material vc-material-perm_media' => 'perm media' ), array( 'vc-material vc-material-perm_phone_msg' => 'perm phone msg' ), array( 'vc-material vc-material-perm_scan_wifi' => 'perm scan wifi' ), array( 'vc-material vc-material-person' => 'person' ), array( 'vc-material vc-material-person_add' => 'person add' ), array( 'vc-material vc-material-person_pin' => 'person pin' ), array( 'vc-material vc-material-person_pin_circle' => 'person pin circle' ), array( 'vc-material vc-material-personal_video' => 'personal video' ), array( 'vc-material vc-material-pets' => 'pets' ), array( 'vc-material vc-material-phone_android' => 'phone android' ), array( 'vc-material vc-material-phone_bluetooth_speaker' => 'phone bluetooth speaker' ), array( 'vc-material vc-material-phone_forwarded' => 'phone forwarded' ), array( 'vc-material vc-material-phone_in_talk' => 'phone in talk' ), array( 'vc-material vc-material-phone_iphone' => 'phone iphone' ), array( 'vc-material vc-material-phone_locked' => 'phone locked' ), array( 'vc-material vc-material-phone_missed' => 'phone missed' ), array( 'vc-material vc-material-phone_paused' => 'phone paused' ), array( 'vc-material vc-material-phonelink_erase' => 'phonelink erase' ), array( 'vc-material vc-material-phonelink_lock' => 'phonelink lock' ), array( 'vc-material vc-material-phonelink_off' => 'phonelink off' ), array( 'vc-material vc-material-phonelink_ring' => 'phonelink ring' ), array( 'vc-material vc-material-phonelink_setup' => 'phonelink setup' ), array( 'vc-material vc-material-photo_album' => 'photo album' ), array( 'vc-material vc-material-photo_filter' => 'photo filter' ), array( 'vc-material vc-material-photo_size_select_actual' => 'photo size select actual' ), array( 'vc-material vc-material-photo_size_select_large' => 'photo size select large' ), array( 'vc-material vc-material-photo_size_select_small' => 'photo size select small' ), array( 'vc-material vc-material-picture_as_pdf' => 'picture as pdf' ), array( 'vc-material vc-material-picture_in_picture' => 'picture in picture' ), array( 'vc-material vc-material-picture_in_picture_alt' => 'picture in picture alt' ), array( 'vc-material vc-material-pie_chart' => 'pie chart' ), array( 'vc-material vc-material-pie_chart_outlined' => 'pie chart outlined' ), array( 'vc-material vc-material-pin_drop' => 'pin drop' ), array( 'vc-material vc-material-play_arrow' => 'play arrow' ), array( 'vc-material vc-material-play_circle_filled' => 'play circle filled' ), array( 'vc-material vc-material-play_circle_outline' => 'play circle outline' ), array( 'vc-material vc-material-play_for_work' => 'play for work' ), array( 'vc-material vc-material-playlist_add' => 'playlist add' ), array( 'vc-material vc-material-playlist_add_check' => 'playlist add check' ), array( 'vc-material vc-material-playlist_play' => 'playlist play' ), array( 'vc-material vc-material-plus_one' => 'plus one' ), array( 'vc-material vc-material-polymer' => 'polymer' ), array( 'vc-material vc-material-pool' => 'pool' ), array( 'vc-material vc-material-portable_wifi_off' => 'portable wifi off' ), array( 'vc-material vc-material-portrait' => 'portrait' ), array( 'vc-material vc-material-power' => 'power' ), array( 'vc-material vc-material-power_input' => 'power input' ), array( 'vc-material vc-material-power_settings_new' => 'power settings new' ), array( 'vc-material vc-material-pregnant_woman' => 'pregnant woman' ), array( 'vc-material vc-material-present_to_all' => 'present to all' ), array( 'vc-material vc-material-priority_high' => 'priority high' ), array( 'vc-material vc-material-public' => 'public' ), array( 'vc-material vc-material-publish' => 'publish' ), array( 'vc-material vc-material-queue_music' => 'queue music' ), array( 'vc-material vc-material-queue_play_next' => 'queue play next' ), array( 'vc-material vc-material-radio' => 'radio' ), array( 'vc-material vc-material-radio_button_checked' => 'radio button checked' ), array( 'vc-material vc-material-rate_review' => 'rate review' ), array( 'vc-material vc-material-receipt' => 'receipt' ), array( 'vc-material vc-material-recent_actors' => 'recent actors' ), array( 'vc-material vc-material-record_voice_over' => 'record voice over' ), array( 'vc-material vc-material-redo' => 'redo' ), array( 'vc-material vc-material-refresh' => 'refresh' ), array( 'vc-material vc-material-remove' => 'remove' ), array( 'vc-material vc-material-remove_circle_outline' => 'remove circle outline' ), array( 'vc-material vc-material-remove_from_queue' => 'remove from queue' ), array( 'vc-material vc-material-visibility' => 'visibility' ), array( 'vc-material vc-material-remove_shopping_cart' => 'remove shopping cart' ), array( 'vc-material vc-material-reorder' => 'reorder' ), array( 'vc-material vc-material-repeat' => 'repeat' ), array( 'vc-material vc-material-repeat_one' => 'repeat one' ), array( 'vc-material vc-material-replay' => 'replay' ), array( 'vc-material vc-material-replay_10' => 'replay 10' ), array( 'vc-material vc-material-replay_30' => 'replay 30' ), array( 'vc-material vc-material-replay_5' => 'replay 5' ), array( 'vc-material vc-material-reply' => 'reply' ), array( 'vc-material vc-material-reply_all' => 'reply all' ), array( 'vc-material vc-material-report' => 'report' ), array( 'vc-material vc-material-warning' => 'warning' ), array( 'vc-material vc-material-restaurant' => 'restaurant' ), array( 'vc-material vc-material-restore_page' => 'restore page' ), array( 'vc-material vc-material-ring_volume' => 'ring volume' ), array( 'vc-material vc-material-room_service' => 'room service' ), array( 'vc-material vc-material-rotate_90_degrees_ccw' => 'rotate 90 degrees ccw' ), array( 'vc-material vc-material-rotate_left' => 'rotate left' ), array( 'vc-material vc-material-rotate_right' => 'rotate right' ), array( 'vc-material vc-material-rounded_corner' => 'rounded corner' ), array( 'vc-material vc-material-router' => 'router' ), array( 'vc-material vc-material-rowing' => 'rowing' ), array( 'vc-material vc-material-rss_feed' => 'rss feed' ), array( 'vc-material vc-material-rv_hookup' => 'rv hookup' ), array( 'vc-material vc-material-satellite' => 'satellite' ), array( 'vc-material vc-material-save' => 'save' ), array( 'vc-material vc-material-scanner' => 'scanner' ), array( 'vc-material vc-material-school' => 'school' ), array( 'vc-material vc-material-screen_lock_landscape' => 'screen lock landscape' ), array( 'vc-material vc-material-screen_lock_portrait' => 'screen lock portrait' ), array( 'vc-material vc-material-screen_lock_rotation' => 'screen lock rotation' ), array( 'vc-material vc-material-screen_rotation' => 'screen rotation' ), array( 'vc-material vc-material-screen_share' => 'screen share' ), array( 'vc-material vc-material-sd_storage' => 'sd storage' ), array( 'vc-material vc-material-search' => 'search' ), array( 'vc-material vc-material-security' => 'security' ), array( 'vc-material vc-material-select_all' => 'select all' ), array( 'vc-material vc-material-send' => 'send' ), array( 'vc-material vc-material-sentiment_dissatisfied' => 'sentiment dissatisfied' ), array( 'vc-material vc-material-sentiment_neutral' => 'sentiment neutral' ), array( 'vc-material vc-material-sentiment_satisfied' => 'sentiment satisfied' ), array( 'vc-material vc-material-sentiment_very_dissatisfied' => 'sentiment very dissatisfied' ), array( 'vc-material vc-material-sentiment_very_satisfied' => 'sentiment very satisfied' ), array( 'vc-material vc-material-settings' => 'settings' ), array( 'vc-material vc-material-settings_applications' => 'settings applications' ), array( 'vc-material vc-material-settings_backup_restore' => 'settings backup restore' ), array( 'vc-material vc-material-settings_bluetooth' => 'settings bluetooth' ), array( 'vc-material vc-material-settings_brightness' => 'settings brightness' ), array( 'vc-material vc-material-settings_cell' => 'settings cell' ), array( 'vc-material vc-material-settings_ethernet' => 'settings ethernet' ), array( 'vc-material vc-material-settings_input_antenna' => 'settings input antenna' ), array( 'vc-material vc-material-settings_input_composite' => 'settings input composite' ), array( 'vc-material vc-material-settings_input_hdmi' => 'settings input hdmi' ), array( 'vc-material vc-material-settings_input_svideo' => 'settings input svideo' ), array( 'vc-material vc-material-settings_overscan' => 'settings overscan' ), array( 'vc-material vc-material-settings_phone' => 'settings phone' ), array( 'vc-material vc-material-settings_power' => 'settings power' ), array( 'vc-material vc-material-settings_remote' => 'settings remote' ), array( 'vc-material vc-material-settings_system_daydream' => 'settings system daydream' ), array( 'vc-material vc-material-settings_voice' => 'settings voice' ), array( 'vc-material vc-material-share' => 'share' ), array( 'vc-material vc-material-shop' => 'shop' ), array( 'vc-material vc-material-shop_two' => 'shop two' ), array( 'vc-material vc-material-shopping_basket' => 'shopping basket' ), array( 'vc-material vc-material-short_text' => 'short text' ), array( 'vc-material vc-material-show_chart' => 'show chart' ), array( 'vc-material vc-material-shuffle' => 'shuffle' ), array( 'vc-material vc-material-signal_cellular_4_bar' => 'signal cellular 4 bar' ), array( 'vc-material vc-material-signal_cellular_connected_no_internet_4_bar' => 'signal_cellular_connected_no internet 4 bar' ), array( 'vc-material vc-material-signal_cellular_null' => 'signal cellular null' ), array( 'vc-material vc-material-signal_cellular_off' => 'signal cellular off' ), array( 'vc-material vc-material-signal_wifi_4_bar' => 'signal wifi 4 bar' ), array( 'vc-material vc-material-signal_wifi_4_bar_lock' => 'signal wifi 4 bar lock' ), array( 'vc-material vc-material-signal_wifi_off' => 'signal wifi off' ), array( 'vc-material vc-material-sim_card' => 'sim card' ), array( 'vc-material vc-material-sim_card_alert' => 'sim card alert' ), array( 'vc-material vc-material-skip_next' => 'skip next' ), array( 'vc-material vc-material-skip_previous' => 'skip previous' ), array( 'vc-material vc-material-slideshow' => 'slideshow' ), array( 'vc-material vc-material-slow_motion_video' => 'slow motion video' ), array( 'vc-material vc-material-stay_primary_portrait' => 'stay primary portrait' ), array( 'vc-material vc-material-smoke_free' => 'smoke free' ), array( 'vc-material vc-material-smoking_rooms' => 'smoking rooms' ), array( 'vc-material vc-material-textsms' => 'textsms' ), array( 'vc-material vc-material-snooze' => 'snooze' ), array( 'vc-material vc-material-sort' => 'sort' ), array( 'vc-material vc-material-sort_by_alpha' => 'sort by alpha' ), array( 'vc-material vc-material-spa' => 'spa' ), array( 'vc-material vc-material-space_bar' => 'space bar' ), array( 'vc-material vc-material-speaker' => 'speaker' ), array( 'vc-material vc-material-speaker_group' => 'speaker group' ), array( 'vc-material vc-material-speaker_notes' => 'speaker notes' ), array( 'vc-material vc-material-speaker_notes_off' => 'speaker notes off' ), array( 'vc-material vc-material-speaker_phone' => 'speaker phone' ), array( 'vc-material vc-material-spellcheck' => 'spellcheck' ), array( 'vc-material vc-material-star_border' => 'star border' ), array( 'vc-material vc-material-star_half' => 'star half' ), array( 'vc-material vc-material-stars' => 'stars' ), array( 'vc-material vc-material-stay_primary_landscape' => 'stay primary landscape' ), array( 'vc-material vc-material-stop' => 'stop' ), array( 'vc-material vc-material-stop_screen_share' => 'stop screen share' ), array( 'vc-material vc-material-storage' => 'storage' ), array( 'vc-material vc-material-store_mall_directory' => 'store mall directory' ), array( 'vc-material vc-material-straighten' => 'straighten' ), array( 'vc-material vc-material-streetview' => 'streetview' ), array( 'vc-material vc-material-strikethrough_s' => 'strikethrough s' ), array( 'vc-material vc-material-style' => 'style' ), array( 'vc-material vc-material-subdirectory_arrow_left' => 'subdirectory arrow left' ), array( 'vc-material vc-material-subdirectory_arrow_right' => 'subdirectory arrow right' ), array( 'vc-material vc-material-subject' => 'subject' ), array( 'vc-material vc-material-subscriptions' => 'subscriptions' ), array( 'vc-material vc-material-subtitles' => 'subtitles' ), array( 'vc-material vc-material-subway' => 'subway' ), array( 'vc-material vc-material-supervisor_account' => 'supervisor account' ), array( 'vc-material vc-material-surround_sound' => 'surround sound' ), array( 'vc-material vc-material-swap_calls' => 'swap calls' ), array( 'vc-material vc-material-swap_horiz' => 'swap horiz' ), array( 'vc-material vc-material-swap_vert' => 'swap vert' ), array( 'vc-material vc-material-swap_vertical_circle' => 'swap vertical circle' ), array( 'vc-material vc-material-switch_camera' => 'switch camera' ), array( 'vc-material vc-material-switch_video' => 'switch video' ), array( 'vc-material vc-material-sync_disabled' => 'sync disabled' ), array( 'vc-material vc-material-sync_problem' => 'sync problem' ), array( 'vc-material vc-material-system_update' => 'system update' ), array( 'vc-material vc-material-system_update_alt' => 'system update alt' ), array( 'vc-material vc-material-tab' => 'tab' ), array( 'vc-material vc-material-tab_unselected' => 'tab unselected' ), array( 'vc-material vc-material-tablet' => 'tablet' ), array( 'vc-material vc-material-tablet_android' => 'tablet android' ), array( 'vc-material vc-material-tablet_mac' => 'tablet mac' ), array( 'vc-material vc-material-tap_and_play' => 'tap and play' ), array( 'vc-material vc-material-text_fields' => 'text fields' ), array( 'vc-material vc-material-text_format' => 'text format' ), array( 'vc-material vc-material-texture' => 'texture' ), array( 'vc-material vc-material-thumb_down' => 'thumb down' ), array( 'vc-material vc-material-thumb_up' => 'thumb up' ), array( 'vc-material vc-material-thumbs_up_down' => 'thumbs up down' ), array( 'vc-material vc-material-timelapse' => 'timelapse' ), array( 'vc-material vc-material-timeline' => 'timeline' ), array( 'vc-material vc-material-timer' => 'timer' ), array( 'vc-material vc-material-timer_10' => 'timer 10' ), array( 'vc-material vc-material-timer_3' => 'timer 3' ), array( 'vc-material vc-material-timer_off' => 'timer off' ), array( 'vc-material vc-material-title' => 'title' ), array( 'vc-material vc-material-toc' => 'toc' ), array( 'vc-material vc-material-today' => 'today' ), array( 'vc-material vc-material-toll' => 'toll' ), array( 'vc-material vc-material-tonality' => 'tonality' ), array( 'vc-material vc-material-touch_app' => 'touch app' ), array( 'vc-material vc-material-toys' => 'toys' ), array( 'vc-material vc-material-track_changes' => 'track changes' ), array( 'vc-material vc-material-traffic' => 'traffic' ), array( 'vc-material vc-material-train' => 'train' ), array( 'vc-material vc-material-tram' => 'tram' ), array( 'vc-material vc-material-transfer_within_a_station' => 'transfer within a station' ), array( 'vc-material vc-material-transform' => 'transform' ), array( 'vc-material vc-material-translate' => 'translate' ), array( 'vc-material vc-material-trending_down' => 'trending down' ), array( 'vc-material vc-material-trending_flat' => 'trending flat' ), array( 'vc-material vc-material-trending_up' => 'trending up' ), array( 'vc-material vc-material-tune' => 'tune' ), array( 'vc-material vc-material-tv' => 'tv' ), array( 'vc-material vc-material-unarchive' => 'unarchive' ), array( 'vc-material vc-material-undo' => 'undo' ), array( 'vc-material vc-material-unfold_less' => 'unfold less' ), array( 'vc-material vc-material-unfold_more' => 'unfold more' ), array( 'vc-material vc-material-update' => 'update' ), array( 'vc-material vc-material-usb' => 'usb' ), array( 'vc-material vc-material-verified_user' => 'verified user' ), array( 'vc-material vc-material-vertical_align_bottom' => 'vertical align bottom' ), array( 'vc-material vc-material-vertical_align_center' => 'vertical align center' ), array( 'vc-material vc-material-vertical_align_top' => 'vertical align top' ), array( 'vc-material vc-material-vibration' => 'vibration' ), array( 'vc-material vc-material-video_call' => 'video call' ), array( 'vc-material vc-material-video_label' => 'video label' ), array( 'vc-material vc-material-video_library' => 'video library' ), array( 'vc-material vc-material-videocam' => 'videocam' ), array( 'vc-material vc-material-videocam_off' => 'videocam off' ), array( 'vc-material vc-material-videogame_asset' => 'videogame asset' ), array( 'vc-material vc-material-view_agenda' => 'view agenda' ), array( 'vc-material vc-material-view_array' => 'view array' ), array( 'vc-material vc-material-view_carousel' => 'view carousel' ), array( 'vc-material vc-material-view_column' => 'view column' ), array( 'vc-material vc-material-view_comfy' => 'view comfy' ), array( 'vc-material vc-material-view_compact' => 'view compact' ), array( 'vc-material vc-material-view_day' => 'view day' ), array( 'vc-material vc-material-view_headline' => 'view headline' ), array( 'vc-material vc-material-view_list' => 'view list' ), array( 'vc-material vc-material-view_module' => 'view module' ), array( 'vc-material vc-material-view_quilt' => 'view quilt' ), array( 'vc-material vc-material-view_stream' => 'view stream' ), array( 'vc-material vc-material-view_week' => 'view week' ), array( 'vc-material vc-material-vignette' => 'vignette' ), array( 'vc-material vc-material-visibility_off' => 'visibility off' ), array( 'vc-material vc-material-voice_chat' => 'voice chat' ), array( 'vc-material vc-material-voicemail' => 'voicemail' ), array( 'vc-material vc-material-volume_down' => 'volume down' ), array( 'vc-material vc-material-volume_mute' => 'volume mute' ), array( 'vc-material vc-material-volume_off' => 'volume off' ), array( 'vc-material vc-material-volume_up' => 'volume up' ), array( 'vc-material vc-material-vpn_key' => 'vpn key' ), array( 'vc-material vc-material-vpn_lock' => 'vpn lock' ), array( 'vc-material vc-material-wallpaper' => 'wallpaper' ), array( 'vc-material vc-material-watch' => 'watch' ), array( 'vc-material vc-material-watch_later' => 'watch later' ), array( 'vc-material vc-material-wb_auto' => 'wb auto' ), array( 'vc-material vc-material-wb_incandescent' => 'wb incandescent' ), array( 'vc-material vc-material-wb_iridescent' => 'wb iridescent' ), array( 'vc-material vc-material-wb_sunny' => 'wb sunny' ), array( 'vc-material vc-material-wc' => 'wc' ), array( 'vc-material vc-material-web' => 'web' ), array( 'vc-material vc-material-web_asset' => 'web asset' ), array( 'vc-material vc-material-weekend' => 'weekend' ), array( 'vc-material vc-material-whatshot' => 'whatshot' ), array( 'vc-material vc-material-widgets' => 'widgets' ), array( 'vc-material vc-material-wifi' => 'wifi' ), array( 'vc-material vc-material-wifi_lock' => 'wifi lock' ), array( 'vc-material vc-material-wifi_tethering' => 'wifi tethering' ), array( 'vc-material vc-material-work' => 'work' ), array( 'vc-material vc-material-wrap_text' => 'wrap text' ), array( 'vc-material vc-material-youtube_searched_for' => 'youtube searched for' ), array( 'vc-material vc-material-zoom_in' => 'zoom in' ), array( 'vc-material vc-material-zoom_out' => 'zoom out' ), array( 'vc-material vc-material-zoom_out_map' => 'zoom out map' ), ); return array_merge( $icons, $material ); } PK<\include/params/el_id/.el_id.phpnu[PK<\Uinclude/params/el_id/el_id.phpnu[' . '' . '' ); } PK<\#include/params/options/.options.phpnu[PK<\ "include/params/options/options.phpnu[' . '' . '' . __( 'Manage options', 'js_composer' ) . '' . ''; } /** * @since 4.2 */ function vc_options_include_templates() { require_once vc_path_dir( 'TEMPLATES_DIR', 'params/options/templates.html' ); } add_action( 'admin_footer', 'vc_options_include_templates' ); PK<\!include/params/tab_id/.tab_id.phpnu[PK<\n%% include/params/tab_id/tab_id.phpnu[' . '' . '' . ''; } PK<\P;"include/params/vc_link/vc_link.phpnu[' . '' . '' . __( 'Select URL', 'js_composer' ) . ' ' . __( 'Title', 'js_composer' ) . ': ' . $link['title'] . ' ' . __( 'URL', 'js_composer' ) . ': ' . $link['url'] . ' ' . $link['target'] . '' . ''; } /** * @param $value * * @since 4.2 * @return array */ function vc_build_link( $value ) { return vc_parse_multi_attribute( $value, array( 'url' => '', 'title' => '', 'target' => '', 'rel' => '' ) ); } PK<\#include/params/vc_link/.vc_link.phpnu[PK<\:$8p p 7include/params/vc_grid_item/class-wpb-map-grid-item.phpnu[ $values ) { if ( isset( $values['post_type'] ) && Vc_Grid_Item_Editor::postType() === $values['post_type'] && vc_user_access_check_shortcode_all( $name ) ) { if ( ! isset( $values['content_element'] ) || true === $values['content_element'] ) { $categories = isset( $values['category'] ) ? $values['category'] : '_other_category_'; $values['_category_ids'] = array(); if ( isset( $values['deprecated'] ) && false !== $values['deprecated'] ) { $add_deprecated = true; $values['_category_ids'][] = $deprecated; } else { if ( is_array( $categories ) && ! empty( $categories ) ) { foreach ( $categories as $c ) { if ( false === array_search( $c, self::$gitem_user_categories ) ) { self::$gitem_user_categories[] = $c; } $values['_category_ids'][] = md5( $c ); } } else { if ( false === array_search( $categories, self::$gitem_user_categories ) ) { self::$gitem_user_categories[] = $categories; } $values['_category_ids'][] = md5( $categories ); } } } self::$gitem_user_sc[ $name ] = $values; self::$gitem_user_sorted_sc[] = $values; } } } if ( $add_deprecated ) { self::$gitem_user_categories[] = $deprecated; } $sort = new Vc_Sort( self::$gitem_user_sorted_sc ); self::$gitem_user_sorted_sc = $sort->sortByKey(); } /** * Get sorted list of mapped shortcode settings grid element * * Sorting depends on the weight attribute and mapping order. * * @static * @return array */ public static function getSortedGitemUserShortCodes() { self::generateGitemUserData(); return self::$gitem_user_sorted_sc; } /** * Get list of mapped shortcode settings for current user. * @static * @return array - associated array of shortcodes settings with tag as the key. */ public static function getGitemUserShortCodes() { self::generateGitemUserData(); return self::$gitem_user_sc; } /** * Get all categories for current user. * * Category is added to the list when at least one shortcode of this category is allowed for current user * by Vc access rules. * * @static * @return array */ public static function getGitemUserCategories() { self::generateGitemUserData(); return self::$gitem_user_categories; } } PK<\ͅz.z.*include/params/vc_grid_item/attributes.phpnu[ null, ), $data ) ); if ( isset( $post->filter_terms ) && is_array( $post->filter_terms ) ) { foreach ( $post->filter_terms as $t ) { $output .= ' vc_grid-term-' . $t; // @todo fix #106154391786878 $t is array } } return $output; } /** * Get image for post * * @param $data * @return mixed|string|void */ function vc_gitem_template_attribute_post_image( $data ) { /** * @var null|Wp_Post $post ; */ extract( array_merge( array( 'post' => null, 'data' => '', ), $data ) ); if ( 'attachment' === $post->post_type ) { return wp_get_attachment_image( $post->ID, 'large' ); } $html = get_the_post_thumbnail( $post->ID ); return apply_filters( 'vc_gitem_template_attribute_post_image_html', $html ); } function vc_gitem_template_attribute_featured_image( $value, $data ) { /** * @var Wp_Post $post * @var string $data */ extract( array_merge( array( 'post' => null, 'data' => '', ), $data ) ); return vc_include_template( 'params/vc_grid_item/attributes/featured_image.php', array( 'post' => $post, 'data' => $data, ) ); } /** * Create new btn * * @param $value * @param $data * * @since 4.5 * * @return mixed */ function vc_gitem_template_attribute_vc_btn( $value, $data ) { /** * @var Wp_Post $post * @var string $data */ extract( array_merge( array( 'post' => null, 'data' => '', ), $data ) ); return vc_include_template( 'params/vc_grid_item/attributes/vc_btn.php', array( 'post' => $post, 'data' => $data, ) ); } /** * Get post image url * * @param $value * @param $data * * @return string */ function vc_gitem_template_attribute_post_image_url( $value, $data ) { $output = ''; /** * @var null|Wp_Post $post ; */ extract( array_merge( array( 'post' => null, 'data' => '', ), $data ) ); $extraImageMeta = explode( ':', $data ); $size = 'large'; // default size if ( isset( $extraImageMeta[1] ) ) { $size = $extraImageMeta[1]; } if ( 'attachment' === $post->post_type ) { $src = vc_get_image_by_size( $post->ID, $size ); } else { $attachment_id = get_post_thumbnail_id( $post->ID ); $src = vc_get_image_by_size( $attachment_id, $size ); } if ( empty( $src ) && ! empty( $data ) ) { $output = esc_attr( rawurldecode( $data ) ); } elseif ( ! empty( $src ) ) { $output = is_array( $src ) ? $src[0] : $src; } else { $output = vc_asset_url( 'vc/vc_gitem_image.png' ); } return apply_filters( 'vc_gitem_template_attribute_post_image_url_value', $output ); } /** * Get post image url with href for a dom element * * @param $value * @param $data * * @return string */ function vc_gitem_template_attribute_post_image_url_href( $value, $data ) { $link = vc_gitem_template_attribute_post_image_url( $value, $data ); return strlen( $link ) ? ' href="' . esc_attr( $link ) . '"' : ''; } /** * Add image url as href with css classes for PrettyPhoto js plugin. * * @param $value * @param $data * * @return string */ function vc_gitem_template_attribute_post_image_url_attr_prettyphoto( $value, $data ) { $data_default = $data; /** * @var Wp_Post $post ; */ extract( array_merge( array( 'post' => null, 'data' => '', ), $data ) ); $href = vc_gitem_template_attribute_post_image_url_href( $value, array( 'post' => $post, 'data' => '' ) ); $rel = ' data-rel="' . esc_attr( 'prettyPhoto[rel-' . md5( vc_request_param( 'shortcode_id' ) ) . ']' ) . '"'; return $href . $rel . ' class="' . esc_attr( $data . ( strlen( $href ) ? ' prettyphoto' : '' ) ) . '" title="' . esc_attr( apply_filters( 'vc_gitem_template_attribute_post_title', $post->post_title, $data_default ) ) . '"'; } /** * Get post image alt * * @param $value * @param $data * @return string */ function vc_gitem_template_attribute_post_image_alt( $value, $data ) { if ( empty( $data['post']->ID ) ) { return ''; } if ( 'attachment' === $data['post']->post_type ) { $attachment_id = $data['post']->ID; } else { $attachment_id = get_post_thumbnail_id( $data['post']->ID ); } if ( ! $attachment_id ) { return ''; } $alt = trim( strip_tags( get_post_meta( $attachment_id, '_wp_attachment_image_alt', true ) ) ); return apply_filters( 'vc_gitem_template_attribute_post_image_url_value', $alt ); } /** * Get post image url * * @param $value * @param $data * @return string */ function vc_gitem_template_attribute_post_image_background_image_css( $value, $data ) { $output = ''; /** * @var null|Wp_Post $post ; */ extract( array_merge( array( 'post' => null, 'data' => '', ), $data ) ); $size = 'large'; // default size if ( ! empty( $data ) ) { $size = $data; } if ( 'attachment' === $post->post_type ) { $src = vc_get_image_by_size( $post->ID, $size ); } else { $attachment_id = get_post_thumbnail_id( $post->ID ); $src = vc_get_image_by_size( $attachment_id, $size ); } if ( ! empty( $src ) ) { $output = 'background-image: url(\'' . ( is_array( $src ) ? $src[0] : $src ) . '\') !important;'; } else { $output = 'background-image: url(\'' . vc_asset_url( 'vc/vc_gitem_image.png' ) . '\') !important;'; } return apply_filters( 'vc_gitem_template_attribute_post_image_background_image_css_value', $output ); } /** * Get post link * * @param $value * @param $data * @return bool|string */ function vc_gitem_template_attribute_post_link_url( $value, $data ) { /** * @var null|Wp_Post $post ; */ extract( array_merge( array( 'post' => null, ), $data ) ); return get_permalink( $post->ID ); } /** * Get post date * * @param $value * @param $data * @return bool|int|string */ function vc_gitem_template_attribute_post_date( $value, $data ) { /** * @var null|Wp_Post $post ; */ extract( array_merge( array( 'post' => null, ), $data ) ); return get_the_date( '', $post->ID ); } /** * Get post date time * * @param $value * @param $data * @return bool|int|string */ function vc_gitem_template_attribute_post_datetime( $value, $data ) { /** * @var null|Wp_Post $post ; */ extract( array_merge( array( 'post' => null, ), $data ) ); return get_the_time( 'F j, Y g:i', $post->ID ); } /** * Get custom fields. * * @param $value * @param $data * @return mixed|string */ function vc_gitem_template_attribute_post_meta_value( $value, $data ) { /** * @var null|Wp_Post $post ; * @var string $data ; */ extract( array_merge( array( 'post' => null, 'data' => '', ), $data ) ); return strlen( $data ) > 0 ? get_post_meta( $post->ID, $data, true ) : $value; } /** * Get post data. Used as wrapper for others post data attributes. * * @param $value * @param $data * @return mixed|string */ function vc_gitem_template_attribute_post_data( $value, $data ) { /** * @var null|Wp_Post $post ; * @var string $data ; */ extract( array_merge( array( 'post' => null, 'data' => '', ), $data ) ); return strlen( $data ) > 0 ? apply_filters( 'vc_gitem_template_attribute_' . $data, ( isset( $post->$data ) ? $post->$data : '' ), array( 'post' => $post, 'data' => '' ) ) : $value; } /** * Get post excerpt. Used as wrapper for others post data attributes. * * @param $value * @param $data * @return mixed|string */ function vc_gitem_template_attribute_post_excerpt( $value, $data ) { /** * @var null|Wp_Post $post ; * @var string $data ; */ extract( array_merge( array( 'post' => null, 'data' => '', ), $data ) ); return apply_filters( 'the_excerpt', apply_filters( 'get_the_excerpt', $value ) ); } /** * Get post excerpt. Used as wrapper for others post data attributes. * * @param $value * @param $data * @return mixed|string */ function vc_gitem_template_attribute_post_title( $value, $data ) { /** * @var null|Wp_Post $post ; * @var string $data ; */ extract( array_merge( array( 'post' => null, 'data' => '', ), $data ) ); return the_title( '', '', false ); } function vc_gitem_template_attribute_post_author( $value, $data ) { /** * @var null|Wp_Post $post ; * @var string $data ; */ extract( array_merge( array( 'post' => null, 'data' => '', ), $data ) ); return get_the_author(); } function vc_gitem_template_attribute_post_author_href( $value, $data ) { /** * @var null|Wp_Post $post ; * @var string $data ; */ extract( array_merge( array( 'post' => null, 'data' => '', ), $data ) ); return get_author_posts_url( get_the_author_meta( 'ID' ), get_the_author_meta( 'user_nicename' ) ); } function vc_gitem_template_attribute_post_categories( $value, $data ) { /** * @var null|Wp_Post $post ; * @var string $data ; */ extract( array_merge( array( 'post' => null, 'data' => '', ), $data ) ); $atts_extended = array(); parse_str( $data, $atts_extended ); return vc_include_template( 'params/vc_grid_item/attributes/post_categories.php', array( 'post' => $post, 'atts' => $atts_extended['atts'], ) ); } /** * Adding filters to parse grid template. */ add_filter( 'vc_gitem_template_attribute_filter_terms_css_classes', 'vc_gitem_template_attribute_filter_terms_css_classes', 10, 2 ); add_filter( 'vc_gitem_template_attribute_post_image', 'vc_gitem_template_attribute_post_image', 10, 2 ); add_filter( 'vc_gitem_template_attribute_post_image_url', 'vc_gitem_template_attribute_post_image_url', 10, 2 ); add_filter( 'vc_gitem_template_attribute_post_image_url_href', 'vc_gitem_template_attribute_post_image_url_href', 10, 2 ); add_filter( 'vc_gitem_template_attribute_post_image_url_attr_prettyphoto', 'vc_gitem_template_attribute_post_image_url_attr_prettyphoto', 10, 2 ); add_filter( 'vc_gitem_template_attribute_post_image_alt', 'vc_gitem_template_attribute_post_image_alt', 10, 2 ); add_filter( 'vc_gitem_template_attribute_post_link_url', 'vc_gitem_template_attribute_post_link_url', 10, 2 ); add_filter( 'vc_gitem_template_attribute_post_date', 'vc_gitem_template_attribute_post_date', 10, 2 ); add_filter( 'vc_gitem_template_attribute_post_datetime', 'vc_gitem_template_attribute_post_datetime', 10, 2 ); add_filter( 'vc_gitem_template_attribute_post_meta_value', 'vc_gitem_template_attribute_post_meta_value', 10, 2 ); add_filter( 'vc_gitem_template_attribute_post_data', 'vc_gitem_template_attribute_post_data', 10, 2 ); add_filter( 'vc_gitem_template_attribute_post_image_background_image_css', 'vc_gitem_template_attribute_post_image_background_image_css', 10, 2 ); add_filter( 'vc_gitem_template_attribute_post_excerpt', 'vc_gitem_template_attribute_post_excerpt', 10, 2 ); add_filter( 'vc_gitem_template_attribute_post_title', 'vc_gitem_template_attribute_post_title', 10, 2 ); add_filter( 'vc_gitem_template_attribute_post_author', 'vc_gitem_template_attribute_post_author', 10, 2 ); add_filter( 'vc_gitem_template_attribute_post_author_href', 'vc_gitem_template_attribute_post_author_href', 10, 2 ); add_filter( 'vc_gitem_template_attribute_post_categories', 'vc_gitem_template_attribute_post_categories', 10, 2 ); add_filter( 'vc_gitem_template_attribute_featured_image', 'vc_gitem_template_attribute_featured_image', 10, 2 ); add_filter( 'vc_gitem_template_attribute_vc_btn', 'vc_gitem_template_attribute_vc_btn', 10, 2 ); PK<\@Ի*include/params/vc_grid_item/shortcodes.phpnu[includeClass( 'WPBakeryShortCode_VC_Gitem_Animated_Block' ); global $vc_gitem_add_link_param; $vc_gitem_add_link_param = apply_filters( 'vc_gitem_add_link_param', array( 'type' => 'dropdown', 'heading' => __( 'Add link', 'js_composer' ), 'param_name' => 'link', 'value' => array( __( 'None', 'js_composer' ) => 'none', __( 'Post link', 'js_composer' ) => 'post_link', __( 'Post author', 'js_composer' ) => 'post_author', __( 'Large image', 'js_composer' ) => 'image', __( 'Large image (prettyPhoto)', 'js_composer' ) => 'image_lightbox', __( 'Custom', 'js_composer' ) => 'custom', ), 'description' => __( 'Select link option.', 'js_composer' ), ) ); $zone_params = array( $vc_gitem_add_link_param, array( 'type' => 'vc_link', 'heading' => __( 'URL (Link)', 'js_composer' ), 'param_name' => 'url', 'dependency' => array( 'element' => 'link', 'value' => array( 'custom' ), ), 'description' => __( 'Add custom link.', 'js_composer' ), ), array( 'type' => 'checkbox', 'heading' => __( 'Use featured image on background?', 'js_composer' ), 'param_name' => 'featured_image', 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), 'description' => __( 'Note: Featured image overwrites background image and color from "Design Options".', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Image size', 'js_composer' ), 'param_name' => 'img_size', 'value' => 'large', 'description' => __( 'Enter image size (Example: "thumbnail", "medium", "large", "full" or other sizes defined by theme). Alternatively enter size in pixels (Example: 200x100 (Width x Height)).', 'js_composer' ), 'dependency' => array( 'element' => 'featured_image', 'not_empty' => true, ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ); $post_data_params = array( $vc_gitem_add_link_param, array( 'type' => 'vc_link', 'heading' => __( 'URL (Link)', 'js_composer' ), 'param_name' => 'url', 'dependency' => array( 'element' => 'link', 'value' => array( 'custom' ), ), 'description' => __( 'Add custom link.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ); $custom_fonts_params = array( array( 'type' => 'font_container', 'param_name' => 'font_container', 'value' => '', 'settings' => array( 'fields' => array( 'tag' => 'div', // default value h2 'text_align', 'tag_description' => __( 'Select element tag.', 'js_composer' ), 'text_align_description' => __( 'Select text alignment.', 'js_composer' ), 'font_size_description' => __( 'Enter font size.', 'js_composer' ), 'line_height_description' => __( 'Enter line height.', 'js_composer' ), 'color_description' => __( 'Select color for your element.', 'js_composer' ), ), ), ), array( 'type' => 'checkbox', 'heading' => __( 'Use custom fonts?', 'js_composer' ), 'param_name' => 'use_custom_fonts', 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), 'description' => __( 'Enable Google fonts.', 'js_composer' ), ), array( 'type' => 'font_container', 'param_name' => 'block_container', 'value' => '', 'settings' => array( 'fields' => array( 'font_size', 'line_height', 'color', 'tag_description' => __( 'Select element tag.', 'js_composer' ), 'text_align_description' => __( 'Select text alignment.', 'js_composer' ), 'font_size_description' => __( 'Enter font size.', 'js_composer' ), 'line_height_description' => __( 'Enter line height.', 'js_composer' ), 'color_description' => __( 'Select color for your element.', 'js_composer' ), ), ), 'group' => __( 'Custom fonts', 'js_composer' ), 'dependency' => array( 'element' => 'use_custom_fonts', 'value' => array( 'yes' ), ), ), array( 'type' => 'checkbox', 'heading' => __( 'Yes theme default font family?', 'js_composer' ), 'param_name' => 'use_theme_fonts', 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), 'description' => __( 'Yes font family from the theme.', 'js_composer' ), 'group' => __( 'Custom fonts', 'js_composer' ), 'dependency' => array( 'element' => 'use_custom_fonts', 'value' => array( 'yes' ), ), ), array( 'type' => 'google_fonts', 'param_name' => 'google_fonts', 'value' => '', // Not recommended, this will override 'settings'. 'font_family:'.rawurlencode('Exo:100,100italic,200,200italic,300,300italic,regular,italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic').'|font_style:'.rawurlencode('900 bold italic:900:italic'), 'settings' => array( 'fields' => array( // Default font style. Name:weight:style, example: "800 bold regular:800:normal" 'font_family_description' => __( 'Select font family.', 'js_composer' ), 'font_style_description' => __( 'Select font styling.', 'js_composer' ), ), ), 'group' => __( 'Custom fonts', 'js_composer' ), 'dependency' => array( 'element' => 'use_theme_fonts', 'value_not_equal_to' => 'yes', ), ), ); $list = array( 'vc_gitem' => array( 'name' => __( 'Grid Item', 'js_composer' ), 'base' => 'vc_gitem', 'is_container' => true, 'icon' => 'icon-wpb-gitem', 'content_element' => false, 'show_settings_on_create' => false, 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Main grid item', 'js_composer' ), 'params' => array( array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), 'js_view' => 'VcGitemView', 'post_type' => Vc_Grid_Item_Editor::postType(), ), 'vc_gitem_animated_block' => array( 'base' => 'vc_gitem_animated_block', 'name' => __( 'A/B block', 'js_composer' ), 'content_element' => false, 'is_container' => true, 'show_settings_on_create' => false, 'icon' => 'icon-wpb-gitem-block', 'category' => __( 'Content', 'js_composer' ), 'controls' => array(), 'as_parent' => array( 'only' => array( 'vc_gitem_zone_a', 'vc_gitem_zone_b' ) ), 'params' => array( array( 'type' => 'dropdown', 'heading' => __( 'Animation', 'js_composer' ), 'param_name' => 'animation', 'value' => WPBakeryShortCode_VC_Gitem_Animated_Block::animations(), ), ), 'js_view' => 'VcGitemAnimatedBlockView', 'post_type' => Vc_Grid_Item_Editor::postType(), ), 'vc_gitem_zone' => array( 'name' => __( 'Zone', 'js_composer' ), 'base' => 'vc_gitem_zone', 'content_element' => false, 'is_container' => true, 'show_settings_on_create' => false, 'icon' => 'icon-wpb-gitem-zone', 'category' => __( 'Content', 'js_composer' ), 'controls' => array( 'edit' ), 'as_parent' => array( 'only' => 'vc_gitem_row' ), 'js_view' => 'VcGitemZoneView', 'params' => $zone_params, 'post_type' => Vc_Grid_Item_Editor::postType(), ), 'vc_gitem_zone_a' => array( 'name' => __( 'Normal', 'js_composer' ), 'base' => 'vc_gitem_zone_a', 'content_element' => false, 'is_container' => true, 'show_settings_on_create' => false, 'icon' => 'icon-wpb-gitem-zone', 'category' => __( 'Content', 'js_composer' ), 'controls' => array( 'edit' ), 'as_parent' => array( 'only' => 'vc_gitem_row' ), 'js_view' => 'VcGitemZoneView', 'params' => array_merge( array( array( 'type' => 'dropdown', 'heading' => __( 'Height mode', 'js_composer' ), 'param_name' => 'height_mode', 'value' => array( '1:1' => '1-1', __( 'Original', 'js_composer' ) => 'original', '4:3' => '4-3', '3:4' => '3-4', '16:9' => '16-9', '9:16' => '9-16', __( 'Custom', 'js_composer' ) => 'custom', ), 'description' => __( 'Sizing proportions for height and width. Select "Original" to scale image without cropping.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Height', 'js_composer' ), 'param_name' => 'height', 'dependency' => array( 'element' => 'height_mode', 'value' => array( 'custom' ), ), 'description' => __( 'Enter custom height.', 'js_composer' ), ), ), $zone_params ), 'post_type' => Vc_Grid_Item_Editor::postType(), ), 'vc_gitem_zone_b' => array( 'name' => __( 'Hover', 'js_composer' ), 'base' => 'vc_gitem_zone_b', 'content_element' => false, 'is_container' => true, 'show_settings_on_create' => false, 'icon' => 'icon-wpb-gitem-zone', 'category' => __( 'Content', 'js_composer' ), 'controls' => array( 'edit' ), 'as_parent' => array( 'only' => 'vc_gitem_row' ), 'js_view' => 'VcGitemZoneView', 'params' => $zone_params, 'post_type' => Vc_Grid_Item_Editor::postType(), ), 'vc_gitem_zone_c' => array( 'name' => __( 'Additional', 'js_composer' ), 'base' => 'vc_gitem_zone_c', 'content_element' => false, 'is_container' => true, 'show_settings_on_create' => false, 'icon' => 'icon-wpb-gitem-zone', 'category' => __( 'Content', 'js_composer' ), 'controls' => array( 'move', 'delete', 'edit' ), 'as_parent' => array( 'only' => 'vc_gitem_row' ), 'js_view' => 'VcGitemZoneCView', 'params' => array( array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), 'post_type' => Vc_Grid_Item_Editor::postType(), ), 'vc_gitem_row' => array( 'name' => __( 'Row', 'js_composer' ), 'base' => 'vc_gitem_row', 'content_element' => false, 'is_container' => true, 'icon' => 'icon-wpb-row', 'weight' => 1000, 'show_settings_on_create' => false, 'controls' => array( 'layout', 'delete' ), 'allowed_container_element' => 'vc_gitem_col', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Place content elements inside the row', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), 'js_view' => 'VcGitemRowView', 'post_type' => Vc_Grid_Item_Editor::postType(), ), 'vc_gitem_col' => array( 'name' => __( 'Column', 'js_composer' ), 'base' => 'vc_gitem_col', 'icon' => 'icon-wpb-row', 'weight' => 1000, 'is_container' => true, 'allowed_container_element' => false, 'content_element' => false, 'controls' => array( 'edit' ), 'description' => __( 'Place content elements inside the column', 'js_composer' ), 'params' => array( array( 'type' => 'dropdown', 'heading' => __( 'Width', 'js_composer' ), 'param_name' => 'width', 'value' => array( __( '1 column - 1/12', 'js_composer' ) => '1/12', __( '2 columns - 1/6', 'js_composer' ) => '1/6', __( '3 columns - 1/4', 'js_composer' ) => '1/4', __( '4 columns - 1/3', 'js_composer' ) => '1/3', __( '5 columns - 5/12', 'js_composer' ) => '5/12', __( '6 columns - 1/2', 'js_composer' ) => '1/2', __( '7 columns - 7/12', 'js_composer' ) => '7/12', __( '8 columns - 2/3', 'js_composer' ) => '2/3', __( '9 columns - 3/4', 'js_composer' ) => '3/4', __( '10 columns - 5/6', 'js_composer' ) => '5/6', __( '11 columns - 11/12', 'js_composer' ) => '11/12', __( '12 columns - 1/1', 'js_composer' ) => '1/1', ), 'description' => __( 'Select column width.', 'js_composer' ), 'std' => '1/1', ), array( 'type' => 'checkbox', 'heading' => __( 'Use featured image on background?', 'js_composer' ), 'param_name' => 'featured_image', 'value' => array( __( 'Yes', 'js_composer' ) => 'yes' ), 'description' => __( 'Note: Featured image overwrites background image and color from "Design Options".', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Image size', 'js_composer' ), 'param_name' => 'img_size', 'value' => 'large', 'description' => __( 'Enter image size (Example: "thumbnail", "medium", "large", "full" or other sizes defined by theme). Alternatively enter size in pixels (Example: 200x100 (Width x Height)).', 'js_composer' ), 'dependency' => array( 'element' => 'featured_image', 'not_empty' => true, ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), 'js_view' => 'VcGitemColView', 'post_type' => Vc_Grid_Item_Editor::postType(), ), /*'vc_gitem_post_data' => array( 'name' => __( 'Post data', 'js_composer' ), 'base' => 'vc_gitem_post_data', 'content_element' => false, 'category' => __( 'Post', 'js_composer' ), 'params' => array_merge( array( array( 'type' => 'textfield', 'heading' => __( 'Post data source', 'js_composer' ), 'param_name' => 'data_source', 'value' => 'ID', ) ), $post_data_params, $custom_fonts_params, array( array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ) ), 'post_type' => Vc_Grid_Item_Editor::postType(), ),*/ 'vc_gitem_post_title' => array( 'name' => __( 'Post Title', 'js_composer' ), 'base' => 'vc_gitem_post_title', 'icon' => 'vc_icon-vc-gitem-post-title', 'category' => __( 'Post', 'js_composer' ), 'description' => __( 'Title of current post', 'js_composer' ), 'params' => array_merge( $post_data_params, $custom_fonts_params, array( array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ) ), 'post_type' => Vc_Grid_Item_Editor::postType(), ), 'vc_gitem_post_excerpt' => array( 'name' => __( 'Post Excerpt', 'js_composer' ), 'base' => 'vc_gitem_post_excerpt', 'icon' => 'vc_icon-vc-gitem-post-excerpt', 'category' => __( 'Post', 'js_composer' ), 'description' => __( 'Excerpt or manual excerpt', 'js_composer' ), 'params' => array_merge( $post_data_params, $custom_fonts_params, array( array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ) ), 'post_type' => Vc_Grid_Item_Editor::postType(), ), 'vc_gitem_post_author' => array( 'name' => __( 'Post Author', 'js_composer' ), 'base' => 'vc_gitem_post_author', 'icon' => 'vc_icon-vc-gitem-post-author', // @todo change icon ? 'category' => __( 'Post', 'js_composer' ), 'description' => __( 'Author of current post', 'js_composer' ), 'params' => array_merge( array( array( 'type' => 'checkbox', 'heading' => __( 'Add link', 'js_composer' ), 'param_name' => 'link', 'value' => '', 'description' => __( 'Add link to author?', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), $custom_fonts_params, array( array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ) ), 'post_type' => Vc_Grid_Item_Editor::postType(), ), 'vc_gitem_post_categories' => array( 'name' => __( 'Post Categories', 'js_composer' ), 'base' => 'vc_gitem_post_categories', 'icon' => 'vc_icon-vc-gitem-post-categories', // @todo change icon ? 'category' => __( 'Post', 'js_composer' ), 'description' => __( 'Categories of current post', 'js_composer' ), 'params' => array( array( 'type' => 'checkbox', 'heading' => __( 'Add link', 'js_composer' ), 'param_name' => 'link', 'value' => '', 'description' => __( 'Add link to category?', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Style', 'js_composer' ), 'param_name' => 'category_style', 'value' => array( __( 'None', 'js_composer' ) => ' ', __( 'Comma', 'js_composer' ) => ', ', __( 'Rounded', 'js_composer' ) => 'filled vc_grid-filter-filled-round-all', __( 'Less Rounded', 'js_composer' ) => 'filled vc_grid-filter-filled-rounded-all', __( 'Border', 'js_composer' ) => 'bordered', __( 'Rounded Border', 'js_composer' ) => 'bordered-rounded vc_grid-filter-filled-round-all', __( 'Less Rounded Border', 'js_composer' ) => 'bordered-rounded-less vc_grid-filter-filled-rounded-all', ), 'description' => __( 'Select category display style.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Color', 'js_composer' ), 'param_name' => 'category_color', 'value' => getVcShared( 'colors' ), 'std' => 'grey', 'param_holder_class' => 'vc_colored-dropdown', 'dependency' => array( 'element' => 'category_style', 'value_not_equal_to' => array( ' ', ', ' ), ), 'description' => __( 'Select category color.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Category size', 'js_composer' ), 'param_name' => 'category_size', 'value' => getVcShared( 'sizes' ), 'std' => 'md', 'description' => __( 'Select category size.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), 'post_type' => Vc_Grid_Item_Editor::postType(), ), 'vc_gitem_image' => array( 'name' => __( 'Post Image', 'js_composer' ), 'base' => 'vc_gitem_image', 'icon' => 'vc_icon-vc-gitem-image', 'category' => __( 'Post', 'js_composer' ), 'description' => __( 'Featured image', 'js_composer' ), 'params' => array( $vc_gitem_add_link_param, array( 'type' => 'vc_link', 'heading' => __( 'URL (Link)', 'js_composer' ), 'param_name' => 'url', 'dependency' => array( 'element' => 'link', 'value' => array( 'custom' ), ), 'description' => __( 'Add custom link.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Image size', 'js_composer' ), 'param_name' => 'img_size', 'description' => __( 'Enter image size (Example: "thumbnail", "medium", "large", "full" or other sizes defined by theme). Alternatively enter size in pixels (Example: 200x100 (Width x Height)). Leave parameter empty to use "thumbnail" by default.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Image alignment', 'js_composer' ), 'param_name' => 'alignment', 'value' => array( __( 'Left', 'js_composer' ) => '', __( 'Right', 'js_composer' ) => 'right', __( 'Center', 'js_composer' ) => 'center', ), 'description' => __( 'Select image alignment.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Image style', 'js_composer' ), 'param_name' => 'style', 'value' => getVcShared( 'single image styles' ), 'description' => __( 'Select image display style.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Border color', 'js_composer' ), 'param_name' => 'border_color', 'value' => getVcShared( 'colors' ), 'std' => 'grey', 'dependency' => array( 'element' => 'style', 'value' => array( 'vc_box_border', 'vc_box_border_circle', 'vc_box_outline', 'vc_box_outline_circle', ), ), 'description' => __( 'Border color.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown', ), vc_map_add_css_animation(), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), 'post_type' => Vc_Grid_Item_Editor::postType(), ), 'vc_gitem_post_date' => array( 'name' => __( 'Post Date', 'js_composer' ), 'base' => 'vc_gitem_post_date', 'icon' => 'vc_icon-vc-gitem-post-date', 'category' => __( 'Post', 'js_composer' ), 'description' => __( 'Post publish date', 'js_composer' ), 'params' => array_merge( $post_data_params, $custom_fonts_params, array( array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ) ), 'post_type' => Vc_Grid_Item_Editor::postType(), ), 'vc_gitem_post_meta' => array( 'name' => __( 'Custom Field', 'js_composer' ), 'base' => 'vc_gitem_post_meta', 'icon' => 'vc_icon-vc-gitem-post-meta', 'category' => array( __( 'Elements', 'js_composer' ) ), 'description' => __( 'Custom fields data from meta values of the post.', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Field key name', 'js_composer' ), 'param_name' => 'key', 'description' => __( 'Enter custom field name to retrieve meta data value.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Label', 'js_composer' ), 'param_name' => 'label', 'description' => __( 'Enter label to display before key value.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Alignment', 'js_composer' ), 'param_name' => 'align', 'value' => array( __( 'Left', 'js_composer' ) => 'left', __( 'Right', 'js_composer' ) => 'right', __( 'Center', 'js_composer' ) => 'center', __( 'Justify', 'js_composer' ) => 'justify', ), 'description' => __( 'Select alignment.', 'js_composer' ), ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), ), 'post_type' => Vc_Grid_Item_Editor::postType(), ), ); $shortcode_vc_column_text = WPBMap::getShortCode( 'vc_column_text' ); if ( is_array( $shortcode_vc_column_text ) && isset( $shortcode_vc_column_text['base'] ) ) { $list['vc_column_text'] = $shortcode_vc_column_text; $list['vc_column_text']['post_type'] = Vc_Grid_Item_Editor::postType(); $remove = array( 'el_id' ); foreach ( $list['vc_column_text']['params'] as $k => $v ) { if ( in_array( $v['param_name'], $remove ) ) { unset( $list['vc_column_text']['params'][ $k ] ); } } } $shortcode_vc_separator = WPBMap::getShortCode( 'vc_separator' ); if ( is_array( $shortcode_vc_separator ) && isset( $shortcode_vc_separator['base'] ) ) { $list['vc_separator'] = $shortcode_vc_separator; $list['vc_separator']['post_type'] = Vc_Grid_Item_Editor::postType(); $remove = array( 'el_id' ); foreach ( $list['vc_separator']['params'] as $k => $v ) { if ( in_array( $v['param_name'], $remove ) ) { unset( $list['vc_separator']['params'][ $k ] ); } } } $shortcode_vc_text_separator = WPBMap::getShortCode( 'vc_text_separator' ); if ( is_array( $shortcode_vc_text_separator ) && isset( $shortcode_vc_text_separator['base'] ) ) { $list['vc_text_separator'] = $shortcode_vc_text_separator; $list['vc_text_separator']['post_type'] = Vc_Grid_Item_Editor::postType(); $remove = array( 'el_id' ); foreach ( $list['vc_text_separator']['params'] as $k => $v ) { if ( in_array( $v['param_name'], $remove ) ) { unset( $list['vc_text_separator']['params'][ $k ] ); } } } $shortcode_vc_icon = WPBMap::getShortCode( 'vc_icon' ); if ( is_array( $shortcode_vc_icon ) && isset( $shortcode_vc_icon['base'] ) ) { $list['vc_icon'] = $shortcode_vc_icon; $list['vc_icon']['post_type'] = Vc_Grid_Item_Editor::postType(); $list['vc_icon']['params'] = vc_map_integrate_shortcode( 'vc_icon', '', '', array( 'exclude' => array( 'link', 'el_id' ) ) ); } $list['vc_single_image'] = array( 'name' => __( 'Single Image', 'js_composer' ), 'base' => 'vc_single_image', 'icon' => 'icon-wpb-single-image', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Simple image with CSS animation', 'js_composer' ), 'params' => array( array( 'type' => 'textfield', 'heading' => __( 'Widget title', 'js_composer' ), 'param_name' => 'title', 'description' => __( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Image source', 'js_composer' ), 'param_name' => 'source', 'value' => array( __( 'Media library', 'js_composer' ) => 'media_library', __( 'External link', 'js_composer' ) => 'external_link', ), 'std' => 'media_library', 'description' => __( 'Select image source.', 'js_composer' ), ), array( 'type' => 'attach_image', 'heading' => __( 'Image', 'js_composer' ), 'param_name' => 'image', 'value' => '', 'description' => __( 'Select image from media library.', 'js_composer' ), 'dependency' => array( 'element' => 'source', 'value' => 'media_library', ), ), array( 'type' => 'textfield', 'heading' => __( 'External link', 'js_composer' ), 'param_name' => 'custom_src', 'description' => __( 'Select external link.', 'js_composer' ), 'dependency' => array( 'element' => 'source', 'value' => 'external_link', ), ), vc_map_add_css_animation(), array( 'type' => 'textfield', 'heading' => __( 'Image size', 'js_composer' ), 'param_name' => 'img_size', 'description' => __( 'Enter image size (Example: "thumbnail", "medium", "large", "full" or other sizes defined by theme). Alternatively enter size in pixels (Example: 200x100 (Width x Height)). Leave parameter empty to use "thumbnail" by default.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Image alignment', 'js_composer' ), 'param_name' => 'alignment', 'value' => array( __( 'Left', 'js_composer' ) => '', __( 'Right', 'js_composer' ) => 'right', __( 'Center', 'js_composer' ) => 'center', ), 'description' => __( 'Select image alignment.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Image style', 'js_composer' ), 'param_name' => 'style', 'value' => getVcShared( 'single image styles' ), 'description' => __( 'Select image display style.', 'js_composer' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Border color', 'js_composer' ), 'param_name' => 'border_color', 'value' => getVcShared( 'colors' ), 'std' => 'grey', 'dependency' => array( 'element' => 'style', 'value' => array( 'vc_box_border', 'vc_box_border_circle', 'vc_box_outline', 'vc_box_outline_circle' ), ), 'description' => __( 'Border color.', 'js_composer' ), 'param_holder_class' => 'vc_colored-dropdown', ), array( 'type' => 'textfield', 'heading' => __( 'Extra class name', 'js_composer' ), 'param_name' => 'el_class', 'description' => __( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ), ), array( 'type' => 'css_editor', 'heading' => __( 'CSS box', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design Options', 'js_composer' ), ), ), 'post_type' => Vc_Grid_Item_Editor::postType(), ); $shortcode_vc_button2 = WPBMap::getShortCode( 'vc_button2' ); if ( is_array( $shortcode_vc_button2 ) && isset( $shortcode_vc_button2['base'] ) ) { $list['vc_button2'] = $shortcode_vc_button2; $list['vc_button2']['post_type'] = Vc_Grid_Item_Editor::postType(); } $shortcode_vc_btn = WPBMap::getShortCode( 'vc_btn' ); if ( is_array( $shortcode_vc_btn ) && isset( $shortcode_vc_btn['base'] ) ) { $list['vc_btn'] = $shortcode_vc_btn; $list['vc_btn']['post_type'] = Vc_Grid_Item_Editor::postType(); unset( $list['vc_btn']['params'][1] ); $remove = array( 'el_id' ); foreach ( $list['vc_btn']['params'] as $k => $v ) { if ( in_array( $v['param_name'], $remove ) ) { unset( $list['vc_btn']['params'][ $k ] ); } } } $shortcode_vc_custom_heading = WPBMap::getShortCode( 'vc_custom_heading' ); if ( is_array( $shortcode_vc_custom_heading ) && isset( $shortcode_vc_custom_heading['base'] ) ) { $list['vc_custom_heading'] = $shortcode_vc_custom_heading; $list['vc_custom_heading']['post_type'] = Vc_Grid_Item_Editor::postType(); $remove = array( 'link', 'source', 'el_id' ); foreach ( $list['vc_custom_heading']['params'] as $k => $v ) { if ( in_array( $v['param_name'], $remove ) ) { unset( $list['vc_custom_heading']['params'][ $k ] ); } // text depends on source. remove dependency so text is always saved if ( 'text' === $v['param_name'] ) { unset( $list['vc_custom_heading']['params'][ $k ]['dependency'] ); } } } $shortcode_vc_empty_space = WPBMap::getShortCode( 'vc_empty_space' ); if ( is_array( $shortcode_vc_empty_space ) && isset( $shortcode_vc_empty_space['base'] ) ) { $list['vc_empty_space'] = $shortcode_vc_empty_space; $list['vc_empty_space']['post_type'] = Vc_Grid_Item_Editor::postType(); $remove = array( 'el_id' ); foreach ( $list['vc_empty_space']['params'] as $k => $v ) { if ( in_array( $v['param_name'], $remove ) ) { unset( $list['vc_empty_space']['params'][ $k ] ); } } } foreach ( array( 'vc_icon', 'vc_button2', 'vc_btn', 'vc_custom_heading', 'vc_single_image' ) as $key ) { if ( isset( $list[ $key ] ) ) { if ( ! isset( $list[ $key ]['params'] ) ) { $list[ $key ]['params'] = array(); } if ( 'vc_button2' === $key ) { // change settings for vc_link in dropdown. Add dependency. $list[ $key ]['params'][0] = array( 'type' => 'vc_link', 'heading' => __( 'URL (Link)', 'js_composer' ), 'param_name' => 'url', 'dependency' => array( 'element' => 'link', 'value' => array( 'custom' ), ), 'description' => __( 'Add custom link.', 'js_composer' ), ); } else { array_unshift( $list[ $key ]['params'], array( 'type' => 'vc_link', 'heading' => __( 'URL (Link)', 'js_composer' ), 'param_name' => 'url', 'dependency' => array( 'element' => 'link', 'value' => array( 'custom' ), ), 'description' => __( 'Add custom link.', 'js_composer' ), ) ); } // Add link dropdown array_unshift( $list[ $key ]['params'], $vc_gitem_add_link_param ); } } foreach ( $list as $key => $value ) { if ( isset( $list[ $key ]['params'] ) ) { $list[ $key ]['params'] = array_values( $list[ $key ]['params'] ); } } return $list; PK<\}&&2include/params/vc_grid_item/class-vc-grid-item.phpnu[shortcodes ) { $this->shortcodes = include vc_path_dir( 'PARAMS_DIR', 'vc_grid_item/shortcodes.php' ); $this->shortcodes = apply_filters( 'vc_grid_item_shortcodes', $this->shortcodes ); } add_filter( 'vc_shortcode_set_template_vc_icon', array( $this, 'addVcIconShortcodesTemplates' ) ); add_filter( 'vc_shortcode_set_template_vc_button2', array( $this, 'addVcButton2ShortcodesTemplates' ) ); add_filter( 'vc_shortcode_set_template_vc_single_image', array( $this, 'addVcSingleImageShortcodesTemplates', ) ); add_filter( 'vc_shortcode_set_template_vc_custom_heading', array( $this, 'addVcCustomHeadingShortcodesTemplates', ) ); add_filter( 'vc_shortcode_set_template_vc_btn', array( $this, 'addVcBtnShortcodesTemplates' ) ); return $this->shortcodes; } /** * Used by filter vc_shortcode_set_template_vc_icon to set custom template for vc_icon shortcode. * * @param $template * * @return string */ public function addVcIconShortcodesTemplates( $template ) { $file = vc_path_dir( 'TEMPLATES_DIR', 'params/vc_grid_item/shortcodes/vc_icon.php' ); if ( is_file( $file ) ) { return $file; } return $template; } /** * Used by filter vc_shortcode_set_template_vc_button2 to set custom template for vc_button2 shortcode. * * @param $template * * @return string */ public function addVcButton2ShortcodesTemplates( $template ) { $file = vc_path_dir( 'TEMPLATES_DIR', 'params/vc_grid_item/shortcodes/vc_button2.php' ); if ( is_file( $file ) ) { return $file; } return $template; } /** * Used by filter vc_shortcode_set_template_vc_single_image to set custom template for vc_single_image shortcode. * * @param $template * * @return string */ public function addVcSingleImageShortcodesTemplates( $template ) { $file = vc_path_dir( 'TEMPLATES_DIR', 'params/vc_grid_item/shortcodes/vc_single_image.php' ); if ( is_file( $file ) ) { return $file; } return $template; } /** * Used by filter vc_shortcode_set_template_vc_custom_heading to set custom template for vc_custom_heading * shortcode. * * @param $template * * @return string */ public function addVcCustomHeadingShortcodesTemplates( $template ) { $file = vc_path_dir( 'TEMPLATES_DIR', 'params/vc_grid_item/shortcodes/vc_custom_heading.php' ); if ( is_file( $file ) ) { return $file; } return $template; } /** * Used by filter vc_shortcode_set_template_vc_button2 to set custom template for vc_button2 shortcode. * * @param $template * * @return string */ public function addVcBtnShortcodesTemplates( $template ) { $file = vc_path_dir( 'TEMPLATES_DIR', 'params/vc_grid_item/shortcodes/vc_btn.php' ); if ( is_file( $file ) ) { return $file; } return $template; } /** * Map shortcodes for vc_grid_item param type. */ public function mapShortcodes() { // @kludge // TODO: refactor with with new way of roles for shortcodes. // NEW ROLES like post_type for shortcode and access policies. $shortcodes = $this->shortcodes(); foreach ( $shortcodes as $shortcode_settings ) { vc_map( $shortcode_settings ); } } /** * Get list of predefined templates. * * @return bool|mixed */ public static function predefinedTemplates() { if ( false === self::$predefined_templates ) { self::$predefined_templates = apply_filters( 'vc_grid_item_predefined_templates', include vc_path_dir( 'PARAMS_DIR', 'vc_grid_item/templates.php' ) ); } return self::$predefined_templates; } /** * @param $id - Predefined templates id * * @return array|bool */ public static function predefinedTemplate( $id ) { $predefined_templates = self::predefinedTemplates(); if ( isset( $predefined_templates[ $id ]['template'] ) ) { return $predefined_templates[ $id ]; } return false; } /** * Set template which should grid used when vc_grid_item param value is rendered. * * @param $id * * @return bool */ public function setTemplateById( $id ) { require_once vc_path_dir( 'PARAMS_DIR', 'vc_grid_item/templates.php' ); if ( 0 === strlen( $id ) ) { return false; } if ( preg_match( '/^\d+$/', $id ) ) { $post = get_post( (int) $id ); $post && $this->setTemplate( $post->post_content, $post->ID ); return true; } elseif ( false !== ( $predefined_template = $this->predefinedTemplate( $id ) ) ) { $this->setTemplate( $predefined_template['template'], $id ); return true; } return false; } /** * Setter for template attribute. * * @param $template * @param $template_id */ public function setTemplate( $template, $template_id ) { $this->template = $template; $this->template_id = $template_id; $this->parseTemplate( $template ); } /** * Getter for template attribute. * @return string */ function template() { return $this->template; } /** * Add custom css from shortcodes that were mapped for vc grid item. * @return string */ public function addShortcodesCustomCss() { $output = $shortcodes_custom_css = ''; $id = $this->template_id; if ( preg_match( '/^\d+$/', $id ) ) { $shortcodes_custom_css = get_post_meta( $id, '_wpb_shortcodes_custom_css', true ); } elseif ( false !== ( $predefined_template = $this->predefinedTemplate( $id ) ) ) { $shortcodes_custom_css = visual_composer()->parseShortcodesCustomCss( $predefined_template['template'] ); } if ( ! empty( $shortcodes_custom_css ) ) { $shortcodes_custom_css = strip_tags( $shortcodes_custom_css ); $output .= ''; } return $output; } /** * Generates html with template's variables for rendering new project. * * @param $template */ public function parseTemplate( $template ) { $this->mapShortcodes(); WPBMap::addAllMappedShortcodes(); $attr = ' width="' . $this->gridAttribute( 'element_width', 12 ) . '"' . ' is_end="' . ( 'true' === $this->isEnd() ? 'true' : '' ) . '"'; $template = preg_replace( '/(\[(\[?)vc_gitem\b)/', '$1' . $attr, $template ); $this->html_template .= do_shortcode( $template ); } /** * Regexp for variables. * @return string */ public function templateVariablesRegex() { return '/\{\{' . '\{?' . '\s*' . '([^\}\:]+)(\:([^\}]+))?' . '\s*' . '\}\}' . '\}?/'; } /** * Get default variables. * * @return array|bool */ public function getTemplateVariables() { if ( ! is_array( $this->found_variables ) ) { preg_match_all( $this->templateVariablesRegex(), $this->html_template, $this->found_variables, PREG_SET_ORDER ); } return $this->found_variables; } /** * Render item by replacing template variables for exact post. * * @param WP_Post $post * * @return mixed */ function renderItem( WP_Post $post ) { $pattern = array(); $replacement = array(); $this->addAttributesFilters(); foreach ( $this->getTemplateVariables() as $var ) { $pattern[] = '/' . preg_quote( $var[0], '/' ) . '/'; $replacement[] = preg_replace( '/\\$/', '\\\$', $this->attribute( $var[1], $post, isset( $var[3] ) ? trim( $var[3] ) : '' ) ); } return preg_replace( $pattern, $replacement, do_shortcode( $this->html_template ) ); } /** * Adds filters to build templates variables values. */ public function addAttributesFilters() { require_once vc_path_dir( 'PARAMS_DIR', 'vc_grid_item/attributes.php' ); } /** * Getter for Grid shortcode attributes. * * @param $grid_atts */ public function setGridAttributes( $grid_atts ) { $this->grid_atts = $grid_atts; } /** * Setter for Grid shortcode attributes. * * @param $name * @param string $default * * @return string */ public function gridAttribute( $name, $default = '' ) { return isset( $this->grid_atts[ $name ] ) ? $this->grid_atts[ $name ] : $default; } /** * Get attribute value for WP_post object. * * @param $name * @param $post * @param string $data * * @return mixed|void */ public function attribute( $name, $post, $data = '' ) { $data = html_entity_decode( $data ); return apply_filters( 'vc_gitem_template_attribute_' . trim( $name ), ( isset( $post->$name ) ? $post->$name : '' ), array( 'post' => $post, 'data' => $data, ) ); } /** * Set that this is last items in the grid. Used for load more button and lazy loading. * * @param bool $is_end */ public function setIsEnd( $is_end = true ) { $this->is_end = $is_end; } /** * Checks is the end. * @return bool */ public function isEnd() { return $this->is_end; } /** * Set elements templates. */ protected function setShortcodes() { foreach ( $this->shortcodes() as $tag => $settings ) { add_shortcode( $tag, array( $this, vc_camel_case( $tag . '_shortcode' ) ) ); } } // }} } PK<\-include/params/vc_grid_item/.vc_grid_item.phpnu[PK<\T)^^)include/params/vc_grid_item/templates.phpnu[ array( 'name' => __( 'Basic grid: Default', 'js_composer' ), 'template' => '[vc_gitem c_zone_position="bottom"][vc_gitem_animated_block][vc_gitem_zone_a height_mode="1-1" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][vc_gitem_zone_c css=".vc_custom_1419240516480{background-color: #f9f9f9 !important;}"][vc_gitem_row][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_title link="none" font_container="tag:h4|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_btn link="post_link" title="' . __( 'Read more', 'js_composer' ) . '" style="flat" shape="rounded" color="juicy-pink" size="md" align="left"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_c][/vc_gitem]', ), 'basicGrid_ScaleInWithRotation' => array( 'name' => __( 'Basic grid: Scale in with rotation', 'js_composer' ), 'template' => '[vc_gitem c_zone_position="bottom"][vc_gitem_animated_block animation="scaleRotateIn"][vc_gitem_zone_a height_mode="1-1" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image="" css=".vc_custom_1419240793832{background-color: rgba(0,0,0,0.3) !important;*background-color: rgb(0,0,0) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][vc_gitem_zone_c css=".vc_custom_1419240595465{background-color: #f9f9f9 !important;}"][vc_gitem_row][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_title link="none" font_container="tag:h4|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_btn link="post_link" title="' . __( 'Read more', 'js_composer' ) . '" style="flat" shape="rounded" color="juicy-pink" size="md" align="left"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_c][/vc_gitem]', ), 'basicGrid_FadeInWithSideContent' => array( 'name' => __( 'Basic grid: Fade with side content', 'js_composer' ), 'template' => '[vc_gitem c_zone_position="right" css=".vc_custom_1420541757398{background-color: #f9f9f9 !important;}"][vc_gitem_animated_block animation="fadeIn"][vc_gitem_zone_a height_mode="3-4" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image="" css=".vc_custom_1419242201096{background-color: rgba(255,255,255,0.2) !important;*background-color: rgb(255,255,255) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][vc_gitem_zone_c css=".vc_custom_1419242120132{background-color: #f9f9f9 !important;}"][vc_gitem_row][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_date link="none" font_container="tag:div|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_title link="none" font_container="tag:h4|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_btn link="post_link" title="' . __( 'Read more', 'js_composer' ) . '" style="flat" shape="rounded" color="juicy-pink" size="md" align="left"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_c][/vc_gitem]', ), 'basicGrid_SlideBottomWithIcon' => array( 'name' => __( 'Basic grid: Slide bottom with icon', 'js_composer' ), 'template' => '[vc_gitem c_zone_position="bottom"][vc_gitem_animated_block animation="slideBottom"][vc_gitem_zone_a height_mode="1-1" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image="" css=".vc_custom_1419251931135{background-color: rgba(0,0,0,0.3) !important;*background-color: rgb(0,0,0) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][vc_icon type="fontawesome" icon_fontawesome="fa fa-search" icon_openiconic="vc-oi vc-oi-dial" icon_typicons="typcn typcn-zoom" icon_entypo="entypo-icon entypo-icon-note" icon_linecons="vc_li vc_li-heart" color="white" background_color="white" size="md" align="center"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][vc_gitem_zone_c css=".vc_custom_1419251874438{background-color: #f9f9f9 !important;}"][vc_gitem_row][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_title link="none" font_container="tag:h4|text_align:center" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:center" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_btn link="post_link" title="' . __( 'Read more', 'js_composer' ) . '" style="flat" shape="rounded" color="juicy-pink" size="md" align="center"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_c][/vc_gitem]', ), 'basicGrid_VerticalFlip' => array( 'name' => __( 'Basic grid: Vertical flip', 'js_composer' ), 'template' => '[vc_gitem c_zone_position="" position=""][vc_gitem_animated_block animation="flipFadeIn"][vc_gitem_zone_a height_mode="3-4" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image="" css=".vc_custom_1419250758402{background-color: #353535 !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1" featured_image="" css=".vc_custom_1419250916067{padding-right: 15px !important;padding-left: 15px !important;}"][vc_gitem_post_title link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:500%20bold%20regular%3A500%3Anormal" block_container="font_size:22|color:%23ffffff|line_height:1.2"][vc_separator color="white" align="align_center" el_width="50"][vc_gitem_post_excerpt link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:300%20light%20regular%3A300%3Anormal" block_container="font_size:14|color:%23ffffff|line_height:1.3"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'basicGrid_NoAnimation' => array( 'name' => __( 'Basic grid: No animation', 'js_composer' ), 'template' => '[vc_gitem][vc_gitem_animated_block animation="none"][vc_gitem_zone_a height_mode="1-1" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image="" css=".vc_custom_1419253765784{background-color: rgba(0,0,0,0.3) !important;*background-color: rgb(0,0,0) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_date link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" block_container="font_size:12|color:%23e5e5e5" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_title link="none" font_container="tag:h3|text_align:center" use_custom_fonts="yes" block_container="font_size:24|color:%23ffffff" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:400%20regular%3A400%3Anormal"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'basicGrid_GoTopSlideout' => array( 'name' => __( 'Basic grid: Go top slideout', 'js_composer' ), 'template' => '[vc_gitem][vc_gitem_animated_block animation="goTop20"][vc_gitem_zone_a height_mode="3-4" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image=""][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1" featured_image="" css=".vc_custom_1419254486087{background-color: #f2f2f2 !important;}"][vc_gitem_post_title link="none" font_container="tag:h4|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'basicGrid_TextFirst' => array( 'name' => __( 'Basic grid: Text first', 'js_composer' ), 'template' => '[vc_gitem][vc_gitem_animated_block animation="flipHorizontalFadeIn"][vc_gitem_zone_a height_mode="1-1" link="post_link" featured_image="" css=".vc_custom_1419260513295{padding-right: 15px !important;padding-left: 15px !important;background-color: #2d2d2d !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][vc_gitem_post_title link="none" font_container="tag:div|text_align:left" use_custom_fonts="yes" block_container="font_size:24|color:%23ffffff|line_height:1.3" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:300%20light%20regular%3A300%3Anormal"][vc_separator color="white" align="align_left" border_width="2" el_width="50"][vc_gitem_post_excerpt link="none" font_container="tag:div|text_align:left" use_custom_fonts="yes" block_container="font_size:14|color:%23e2e2e2|line_height:1.3" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:400%20regular%3A400%3Anormal"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'basicGrid_SlideFromLeft' => array( 'name' => __( 'Basic grid: Slide from left', 'js_composer' ), 'template' => '[vc_gitem c_zone_position="" position=""][vc_gitem_animated_block animation="slideInRight"][vc_gitem_zone_a height_mode="4-3" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image=""][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2" featured_image="" css=".vc_custom_1419258058654{padding-left: 15px !important;background-color: #282828 !important;}"][vc_gitem_post_date link="none" font_container="tag:div|text_align:left" use_custom_fonts="yes" block_container="font_size:12|color:%23efefef" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_title link="none" font_container="tag:h3|text_align:left" use_custom_fonts="yes" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:300%20light%20regular%3A300%3Anormal" block_container="font_size:20|color:%23ffffff"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'basicGrid_SlideFromTop' => array( 'name' => __( 'Basic grid: Slide from top', 'js_composer' ), 'template' => '[vc_gitem][vc_gitem_animated_block animation="slideTop"][vc_gitem_zone_a height_mode="1-1" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="none" featured_image="" css=".vc_custom_1419260990461{padding-right: 15px !important;padding-left: 15px !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_title link="none" font_container="tag:div|text_align:left" use_custom_fonts="yes" block_container="font_size:24|color:%23ffffff|line_height:1.2" google_fonts="font_family:Montserrat%3Aregular%2C700|font_style:700%20bold%20regular%3A700%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:div|text_align:left" use_custom_fonts="yes" block_container="font_size:14|color:%23ffffff|line_height:1.3" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:400%20regular%3A400%3Anormal"][vc_btn link="post_link" title="' . __( 'READ MORE', 'js_composer' ) . '" style="outline" shape="square" color="white" size="md" align="left"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'masonryGrid_Default' => array( 'name' => __( 'Masonry grid: Default', 'js_composer' ), 'template' => '[vc_gitem c_zone_position="bottom"][vc_gitem_animated_block][vc_gitem_zone_a height_mode="original" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][vc_gitem_zone_c css=".vc_custom_1419328663991{background-color: #f4f4f4 !important;}"][vc_gitem_row][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_title link="none" font_container="tag:h4|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_btn link="post_link" title="' . __( 'Read more', 'js_composer' ) . '" style="flat" shape="rounded" color="juicy-pink" size="md" align="left"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_c][/vc_gitem]', ), 'masonryGrid_FadeIn' => array( 'name' => __( 'Masonry grid: Fade in', 'js_composer' ), 'template' => '[vc_gitem c_zone_position="bottom"][vc_gitem_animated_block animation="fadeIn"][vc_gitem_zone_a height_mode="original" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image="" css=".vc_custom_1419328603590{background-color: rgba(255,255,255,0.2) !important;*background-color: rgb(255,255,255) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][vc_gitem_zone_c css=".vc_custom_1419328565352{background-color: #f4f4f4 !important;}"][vc_gitem_row][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_title link="none" font_container="tag:h4|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_btn link="post_link" title="' . __( 'Read more', 'js_composer' ) . '" style="flat" shape="rounded" color="juicy-pink" size="md" align="left"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_c][/vc_gitem]', ), 'masonryGrid_IconSlideOut' => array( 'name' => __( 'Masonry grid: Icon slide out', 'js_composer' ), 'template' => '[vc_gitem c_zone_position="bottom"][vc_gitem_animated_block animation="slideBottom"][vc_gitem_zone_a height_mode="original" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image="" css=".vc_custom_1419328999899{background-color: rgba(0,0,0,0.5) !important;*background-color: rgb(0,0,0) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][vc_icon type="fontawesome" icon_fontawesome="fa fa-search" icon_openiconic="vc-oi vc-oi-dial" icon_typicons="typcn typcn-adjust-brightness" icon_entypo="entypo-icon entypo-icon-note" icon_linecons="vc_li vc_li-heart" color="white" background_color="blue" size="md" align="center"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][vc_gitem_zone_c css=".vc_custom_1419328781574{background-color: #f4f4f4 !important;}"][vc_gitem_row][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_title link="none" font_container="tag:h4|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_btn link="post_link" title="' . __( 'Read more', 'js_composer' ) . '" style="flat" shape="rounded" color="juicy-pink" size="md" align="left"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_c][/vc_gitem]', ), 'masonryGrid_SlideFromLeft' => array( 'name' => __( 'Masonry grid: Slide from left', 'js_composer' ), 'template' => '[vc_gitem][vc_gitem_animated_block animation="slideInRight"][vc_gitem_zone_a height_mode="original" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image="" css=".vc_custom_1419328927507{background-color: #f4f4f4 !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][vc_gitem_post_title link="none" font_container="tag:h4|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_separator color="black" align="align_left" border_width="2" el_width="50"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'masonryGrid_GoTop' => array( 'name' => __( 'Masonry grid: Go top', 'js_composer' ), 'template' => '[vc_gitem][vc_gitem_animated_block animation="goTop20"][vc_gitem_zone_a height_mode="original" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image=""][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1" featured_image="" css=".vc_custom_1419329081651{background-color: #2b2b2b !important;}"][vc_gitem_post_title link="none" font_container="tag:div|text_align:left" use_custom_fonts="yes" block_container="font_size:20|color:%23ffffff|line_height:1.3" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:500%20bold%20regular%3A500%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:div|text_align:left" use_custom_fonts="yes" block_container="font_size:14|color:%23efefef|line_height:1.2" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:400%20regular%3A400%3Anormal"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'masonryGrid_OverlayWithRotation' => array( 'name' => __( 'Masonry grid: Overlay with rotation', 'js_composer' ), 'template' => '[vc_gitem][vc_gitem_animated_block animation="scaleRotateIn"][vc_gitem_zone_a height_mode="original" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image="" css=".vc_custom_1419329305433{background-color: rgba(0,0,0,0.5) !important;*background-color: rgb(0,0,0) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][vc_gitem_post_date link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" block_container="font_size:12|color:%23dbdbdb" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:300%20light%20regular%3A300%3Anormal"][vc_gitem_post_title link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" block_container="font_size:24|color:%23ffffff|line_height:1.3" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:400%20regular%3A400%3Anormal"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'masonryGrid_BlurOut' => array( 'name' => __( 'Masonry grid: Blur out', 'js_composer' ), 'template' => '[vc_gitem][vc_gitem_animated_block animation="blurOut"][vc_gitem_zone_a height_mode="original" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image="" css=".vc_custom_1419329691977{background-color: rgba(0,0,0,0.5) !important;*background-color: rgb(0,0,0) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_title link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" block_container="font_size:24|color:%23ffffff|line_height:1.3" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:300%20light%20regular%3A300%3Anormal"][vc_separator color="grey" align="align_center" el_width="50"][vc_gitem_post_excerpt link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" block_container="font_size:14|color:%23ffffff|line_height:1.3" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:400%20regular%3A400%3Anormal"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'masonryGrid_ScaleWithRotation' => array( 'name' => __( 'Masonry grid: Scale with rotation', 'js_composer' ), 'template' => '[vc_gitem c_zone_position="bottom" position=""][vc_gitem_animated_block animation="scaleRotateIn"][vc_gitem_zone_a height_mode="original" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image="" css=".vc_custom_1419333125675{background-color: rgba(255,255,255,0.2) !important;*background-color: rgb(255,255,255) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][vc_gitem_zone_c css=".vc_custom_1419333453605{background-color: #f4f4f4 !important;}"][vc_gitem_row][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_title link="none" font_container="tag:h4|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_btn link="post_link" title="' . __( 'Read more', 'js_composer' ) . '" style="flat" shape="rounded" color="juicy-pink" size="md" align="left"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_c][/vc_gitem]', ), 'masonryGrid_SlideoOutFromRight' => array( 'name' => __( 'Masonry grid: Slideo out from right', 'js_composer' ), 'template' => '[vc_gitem][vc_gitem_animated_block animation="slideInLeft"][vc_gitem_zone_a height_mode="original" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image=""][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2" featured_image=""][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2" featured_image="" css=".vc_custom_1419333716781{margin-bottom: 25px !important;padding-top: 20px !important;padding-left: 20px !important;background-color: #282828 !important;}"][vc_gitem_post_title link="none" font_container="tag:div|text_align:left" use_custom_fonts="yes" block_container="font_size:24|color:%23ffffff|line_height:1.3" google_fonts="font_family:Montserrat%3Aregular%2C700|font_style:400%20regular%3A400%3Anormal"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'masonryGrid_WithSideContent' => array( 'name' => __( 'Masonry grid: With side content', 'js_composer' ), 'template' => '[vc_gitem c_zone_position="right" css=".vc_custom_1419334531994{background-color: #f4f4f4 !important;}"][vc_gitem_animated_block animation="blurScaleOut"][vc_gitem_zone_a height_mode="original" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image="" css=".vc_custom_1419334566318{background-color: rgba(255,255,255,0.2) !important;*background-color: rgb(255,255,255) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][vc_gitem_zone_c][vc_gitem_row][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_date link="none" font_container="tag:p|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_title link="none" font_container="tag:h4|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_btn link="post_link" title="' . __( 'Read more', 'js_composer' ) . '" style="flat" shape="rounded" color="juicy-pink" size="md" align="left"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_c][/vc_gitem]', ), 'mediaGrid_Default' => array( 'name' => __( 'Media grid: Default', 'js_composer' ), 'template' => '[vc_gitem][vc_gitem_animated_block][vc_gitem_zone_a height_mode="1-1" link="image_lightbox" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'mediaGrid_SimpleOverlay' => array( 'name' => __( 'Media grid: Simple overlay', 'js_composer' ), 'template' => '[vc_gitem][vc_gitem_animated_block animation="none"][vc_gitem_zone_a height_mode="1-1" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox" featured_image="yes" css=".vc_custom_1419000810062{margin: -15px !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'mediaGrid_FadeInWithIcon' => array( 'name' => __( 'Media grid: Fade in with icon', 'js_composer' ), 'template' => '[vc_gitem][vc_gitem_animated_block animation="fadeIn"][vc_gitem_zone_a height_mode="4-3" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox" featured_image="" css=".vc_custom_1419001011185{background-color: rgba(40,40,40,0.5) !important;*background-color: rgb(40,40,40) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][vc_icon type="entypo" icon_fontawesome="fa fa-adjust" icon_openiconic="vc-oi vc-oi-eye" icon_typicons="typcn typcn-adjust-brightness" icon_entypo="entypo-icon entypo-icon-plus" icon_linecons="vc_li vc_li-heart" color="white" background_color="blue" size="lg" align="center"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'mediaGrid_BorderedScaleWithTitle' => array( 'name' => __( 'Media grid: Bordered scale with title', 'js_composer' ), 'template' => '[vc_gitem][vc_gitem_animated_block animation="scaleRotateIn"][vc_gitem_zone_a height_mode="3-4" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox" featured_image="" css=".vc_custom_1419001608026{margin-top: 5px !important;margin-right: 5px !important;margin-bottom: 5px !important;margin-left: 5px !important;border-top-width: 5px !important;border-right-width: 5px !important;border-bottom-width: 5px !important;border-left-width: 5px !important;border-left-color: #ffffff !important;border-left-style: solid !important;border-right-color: #ffffff !important;border-right-style: solid !important;border-top-color: #ffffff !important;border-top-style: solid !important;border-bottom-color: #ffffff !important;border-bottom-style: solid !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1" featured_image="" css=".vc_custom_1419001517455{padding-right: 15px !important;padding-left: 15px !important;}"][vc_gitem_post_title link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" block_container="font_size:24|color:%23ffffff|line_height:1.3" google_fonts="font_family:Open%20Sans%3A300%2C300italic%2Cregular%2Citalic%2C600%2C600italic%2C700%2C700italic%2C800%2C800italic|font_style:400%20regular%3A400%3Anormal"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'mediaGrid_ScaleWithRotation' => array( 'name' => __( 'Media grid: Scale with rotation', 'js_composer' ), 'template' => '[vc_gitem][vc_gitem_animated_block animation="scaleRotateIn"][vc_gitem_zone_a height_mode="1-1" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox" featured_image="" css=".vc_custom_1419001365234{background-color: rgba(0,0,0,0.3) !important;*background-color: rgb(0,0,0) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'mediaGrid_SlideOutCaption' => array( 'name' => __( 'Media grid: Slide out caption', 'js_composer' ), 'template' => '[vc_gitem][vc_gitem_animated_block animation="slideBottom"][vc_gitem_zone_a height_mode="1-1" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox" featured_image="" css=".vc_custom_1419002217534{padding-right: 20px !important;padding-left: 20px !important;background-color: #4f4f4f !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][vc_gitem_post_title link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" block_container="font_size:30|color:%23ffffff|line_height:1.3" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:100%20light%20regular%3A100%3Anormal"][vc_separator color="white" align="align_center" border_width="2" el_width="50"][vc_gitem_post_excerpt link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" block_container="font_size:14|color:%23ffffff|line_height:1.3" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:400%20regular%3A400%3Anormal"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'mediaGrid_HorizontalFlipWithFade' => array( 'name' => __( 'Media grid: Horizontal flip with fade', 'js_composer' ), 'template' => '[vc_gitem][vc_gitem_animated_block animation="flipHorizontalFadeIn"][vc_gitem_zone_a height_mode="1-1" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox" featured_image="" css=".vc_custom_1419002089906{background-color: #4f4f4f !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1" featured_image="" css=".vc_custom_1419002184955{padding-right: 15px !important;padding-left: 15px !important;}"][vc_gitem_post_date link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" block_container="font_size:12|color:%23e0e0e0|line_height:1.3" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_title link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" block_container="font_size:30|color:%23ffffff|line_height:1.3" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:100%20light%20regular%3A100%3Anormal"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'mediaGrid_BlurWithContentBlock' => array( 'name' => __( 'Media grid: Blur with content block', 'js_composer' ), 'template' => '[vc_gitem c_zone_position="bottom"][vc_gitem_animated_block animation="blurScaleOut"][vc_gitem_zone_a height_mode="1-1" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox" featured_image="" css=".vc_custom_1419002895369{background-color: rgba(255,255,255,0.15) !important;*background-color: rgb(255,255,255) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][vc_gitem_zone_c css=".vc_custom_1419240502350{background-color: #f9f9f9 !important;}"][vc_gitem_row][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_title link="none" font_container="tag:h4|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_c][/vc_gitem]', ), 'mediaGrid_SlideInTitle' => array( 'name' => __( 'Media grid: Slide in title', 'js_composer' ), 'template' => '[vc_gitem][vc_gitem_animated_block animation="slideTop"][vc_gitem_zone_a height_mode="4-3" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1" featured_image="" css=".vc_custom_1419003984488{padding-right: 15px !important;padding-left: 15px !important;}"][vc_gitem_post_title link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" block_container="font_size:18|color:%23ffffff|line_height:1.3" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:500%20bold%20regular%3A500%3Anormal"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/2" featured_image=""][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'mediaGrid_ScaleInWithIcon' => array( 'name' => __( 'Media grid: Scale in with icon', 'js_composer' ), 'template' => '[vc_gitem][vc_gitem_animated_block animation="scaleIn"][vc_gitem_zone_a height_mode="1-1" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][vc_icon type="fontawesome" icon_fontawesome="fa fa-search" icon_openiconic="vc-oi vc-oi-dial" icon_typicons="typcn typcn-adjust-brightness" icon_entypo="entypo-icon entypo-icon-note" icon_linecons="vc_li vc_li-heart" color="white" background_color="white" size="lg" align="center"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'masonryMedia_Default' => array( 'name' => __( 'Masonry media: Default', 'js_composer' ), 'template' => '[vc_gitem][vc_gitem_animated_block][vc_gitem_zone_a height_mode="original" link="image_lightbox" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'masonryMedia_BorderedScale' => array( 'name' => __( 'Masonry media: Bordered scale', 'js_composer' ), 'template' => '[vc_gitem][vc_gitem_animated_block animation="scaleIn"][vc_gitem_zone_a height_mode="original" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox" featured_image="" css=".vc_custom_1418993682046{border: 10px solid #e8e8e8 !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'masonryMedia_SolidBlurOut' => array( 'name' => __( 'Masonry media: Solid blur out', 'js_composer' ), 'template' => '[vc_gitem][vc_gitem_animated_block animation="blurOut"][vc_gitem_zone_a height_mode="original" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox" featured_image="" css=".vc_custom_1418993823084{background-color: rgba(0,0,0,0.4) !important;*background-color: rgb(0,0,0) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][vc_icon type="typicons" icon_fontawesome="fa fa-adjust" icon_openiconic="vc-oi vc-oi-resize-full-alt" icon_typicons="typcn typcn-zoom-outline" icon_entypo="entypo-icon entypo-icon-note" icon_linecons="vc_li vc_li-heart" color="white" background_color="white" size="lg" align="center"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'masonryMedia_ScaleWithRotationLight' => array( 'name' => __( 'Masonry media: Scale with rotation light', 'js_composer' ), 'template' => '[vc_gitem][vc_gitem_animated_block animation="scaleRotateIn"][vc_gitem_zone_a height_mode="original" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox" featured_image="" css=".vc_custom_1418994252440{background-color: rgba(255,255,255,0.2) !important;*background-color: rgb(255,255,255) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'masonryMedia_SlideWithTitleAndCaption' => array( 'name' => __( 'Masonry media: Slide with title and caption', 'js_composer' ), 'template' => '[vc_gitem c_zone_position="" position=""][vc_gitem_animated_block animation="slideBottom"][vc_gitem_zone_a height_mode="original" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox" featured_image=""][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1" featured_image="" css=".vc_custom_1418995080777{padding-top: 15px !important;padding-right: 15px !important;padding-bottom: 15px !important;padding-left: 15px !important;background-color: rgba(45,45,45,0.8) !important;*background-color: rgb(45,45,45) !important;}"][vc_gitem_post_title link="none" font_container="tag:div|text_align:left" use_custom_fonts="yes" block_container="font_size:18|color:%23ffffff|line_height:1.2" google_fonts="font_family:Montserrat%3Aregular%2C700|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:left" use_custom_fonts="yes" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:400%20regular%3A400%3Anormal" block_container="font_size:14|color:%23ffffff|line_height:1.3"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'masonryMedia_ScaleWithContentBlock' => array( 'name' => __( 'Masonry media: Scale with content block', 'js_composer' ), 'template' => '[vc_gitem c_zone_position="bottom"][vc_gitem_animated_block animation="scaleRotateIn"][vc_gitem_zone_a height_mode="original" link="image_lightbox" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="none" featured_image=""][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][vc_gitem_zone_c css=".vc_custom_1418995850605{padding-top: 5px !important;padding-right: 15px !important;padding-bottom: 5px !important;padding-left: 15px !important;background-color: #f9f9f9 !important;}"][vc_gitem_row][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_title link="none" font_container="tag:h4|text_align:left" use_custom_fonts="" block_container="font_size:18|line_height:1.2" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_c][/vc_gitem]', ), 'masonryMedia_SimpleOverlay' => array( 'name' => __( 'Masonry media: Simple overlay', 'js_composer' ), 'template' => '[vc_gitem][vc_gitem_animated_block animation="none"][vc_gitem_zone_a height_mode="original" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox" featured_image="" css=".vc_custom_1419337784115{background-color: #262626 !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][vc_gitem_post_title link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" block_container="font_size:24|color:%23ffffff|line_height:1.3" google_fonts="font_family:Montserrat%3Aregular%2C700|font_style:400%20regular%3A400%3Anormal"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'masonryMedia_SlideTop' => array( 'name' => __( 'Masonry media: Slide top', 'js_composer' ), 'template' => '[vc_gitem][vc_gitem_animated_block animation="slideTop"][vc_gitem_zone_a height_mode="original" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox" featured_image="" css=".vc_custom_1419337643064{background-color: rgba(10,10,10,0.5) !important;*background-color: rgb(10,10,10) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][vc_icon type="fontawesome" icon_fontawesome="fa fa-search" icon_openiconic="vc-oi vc-oi-dial" icon_typicons="typcn typcn-adjust-brightness" icon_entypo="entypo-icon entypo-icon-note" icon_linecons="vc_li vc_li-heart" color="white" background_color="blue" size="md" align="center"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), 'masonryMedia_SimpleBlurWithScale' => array( 'name' => __( 'Masonry media: Simple blur with scale', 'js_composer' ), 'template' => '[vc_gitem][vc_gitem_animated_block animation="blurScaleOut"][vc_gitem_zone_a height_mode="original" link="image_lightbox" featured_image="yes" css=".vc_custom_1419338012126{background-color: rgba(10,10,10,0.7) !important;*background-color: rgb(10,10,10) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="none" featured_image=""][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]', ), ); PK<\n55Pinclude/params/vc_grid_item/editor/popups/class-vc-add-element-box-grid-item.phpnu[part( 'grid_builder' )->getState(); } } PK<\!W;Qinclude/params/vc_grid_item/editor/popups/class-vc-templates-editor-grid-item.phpnu['; if ( isset( $category['category_name'] ) ) { $category['output'] .= '

    ' . esc_html( $category['category_name'] ) . '

    '; } if ( isset( $category['category_description'] ) ) { $category['output'] .= '

    ' . esc_html( $category['category_description'] ) . '

    '; } $category['output'] .= ''; $category['output'] .= '
    '; if ( ! empty( $category['templates'] ) ) { foreach ( $category['templates'] as $template ) { $category['output'] .= $this->renderTemplateListItem( $template ); } } $category['output'] .= '
    '; } return $category; } /** Output rendered template in modal dialog * @since 4.4 * * @param $template_name * @param $template_data * * @return string */ public function renderTemplateWindowGrid( $template_name, $template_data ) { if ( 'grid_templates' === $template_data['type'] || 'grid_templates_custom' === $template_data['type'] ) { return $this->renderTemplateWindowGridTemplate( $template_name, $template_data ); } return $template_name; } /** * @since 4.4 * * @param $templateName * @param $templateData * * @return string */ protected function renderTemplateWindowGridTemplate( $templateName, $templateData ) { ob_start(); $templateId = esc_attr( $templateData['unique_id'] ); $templateName = esc_html( $templateName ); $templateNameLower = strtolower( $templateName ); $templateType = esc_attr( isset( $templateData['type'] ) ? $templateData['type'] : 'custom' ); $customClass = esc_attr( isset( $templateData['custom_class'] ) ? $templateData['custom_class'] : '' ); $previewTemplateTitle = esc_attr__( 'Preview template', 'js_composer' ); $addTemplateTitle = esc_attr__( 'Preview template', 'js_composer' ); echo <<$templateName
    HTML; return ob_get_clean(); } public function load( $template_id = false ) { if ( ! $template_id ) { $template_id = vc_post_param( 'template_unique_id' ); } if ( ! isset( $template_id ) || '' === $template_id ) { echo 'Error: TPL-02'; die(); } if ( false !== ( $predefined_template = Vc_Grid_Item::predefinedTemplate( $template_id ) ) ) { echo trim( $predefined_template['template'] ); } } public function loadCustomTemplate( $template_id = false ) { if ( ! $template_id ) { $template_id = vc_post_param( 'template_unique_id' ); } if ( ! isset( $template_id ) || '' === $template_id ) { echo 'Error: TPL-02'; die(); } $post = get_post( $template_id ); if ( $post && Vc_Grid_Item_Editor::postType() == $post->post_type ) { return $post->post_content; } return ''; } public function getAllTemplates() { $data = array(); $grid_templates = $this->getGridTemplates(); // this has only 'name' and 'template' key and index 'key' is template id. if ( ! empty( $grid_templates ) ) { $arr_category = array( 'category' => 'grid_templates', 'category_name' => __( 'Grid Templates', 'js_composer' ), 'category_weight' => 10, ); $category_templates = array(); foreach ( $grid_templates as $template_id => $template_data ) { $category_templates[] = array( 'unique_id' => $template_id, 'name' => $template_data['name'], 'type' => 'grid_templates', // for rendering in backend/frontend with ajax ); } $arr_category['templates'] = $category_templates; $data[] = $arr_category; } $custom_grid_templates = $this->getCustomTemplateList(); if ( ! empty( $custom_grid_templates ) ) { $arr_category = array( 'category' => 'grid_templates_custom', 'category_name' => __( 'Custom Grid Templates', 'js_composer' ), 'category_weight' => 10, ); $category_templates = array(); foreach ( $custom_grid_templates as $template_name => $template_id ) { $category_templates[] = array( 'unique_id' => $template_id, 'name' => $template_name, 'type' => 'grid_templates_custom', // for rendering in backend/frontend with ajax); ); } $arr_category['templates'] = $category_templates; $data[] = $arr_category; } // To get any other 3rd "Custom template" - do this by hook filter 'vc_get_all_templates' return apply_filters( 'vc_grid_get_all_templates', $data ); } protected function getCustomTemplateList() { $list = array(); $templates = get_posts( array( 'post_type' => Vc_Grid_Item_Editor::postType(), 'numberposts' => - 1, ) ); foreach ( $templates as $template ) { $id = $template->ID; $list[ $template->post_title ] = $id; } return $list; } public function getGridTemplates() { $list = Vc_Grid_Item::predefinedTemplates(); return $list; } } PK<\5include/params/vc_grid_item/editor/popups/.popups.phpnu[PK<\T@include/params/vc_grid_item/editor/class-vc-grid-item-editor.phpnu[render( get_post_type() ); } public function render( $post_type ) { if ( $this->isValidPostType( $post_type ) ) { $this->registerBackendJavascript(); $this->registerBackendCss(); // B.C: visual_composer()->registerAdminCss(); visual_composer()->registerAdminJavascript(); add_action( 'admin_print_scripts-post.php', array( $this, 'printScriptsMessages', ), 300 ); add_action( 'admin_print_scripts-post-new.php', array( $this, 'printScriptsMessages', ), 300 ); } } public function editorEnabled() { return vc_user_access()->part( 'grid_builder' )->can()->get(); } public function replaceTemplatesPanelEditorJsAction() { wp_dequeue_script( 'vc-template-preview-script' ); $this->templatesEditor()->addScriptsToTemplatePreview(); } /** * Create post type and new item in the admin menu. * @return void */ public static function createPostType() { register_post_type( self::$post_type, array( 'labels' => self::getPostTypesLabels(), 'public' => false, 'has_archive' => false, 'show_in_nav_menus' => false, 'exclude_from_search' => true, 'publicly_queryable' => false, 'show_ui' => true, 'show_in_menu' => false, 'query_var' => true, 'capability_type' => 'post', 'hierarchical' => false, 'menu_position' => null, 'supports' => array( 'title', 'editor', ), ) ); } public static function getPostTypesLabels() { return array( 'add_new_item' => __( 'Add Grid template', 'js_composer' ), 'name' => __( 'Grid Builder', 'js_composer' ), 'singular_name' => __( 'Grid template', 'js_composer' ), 'edit_item' => __( 'Edit Grid template', 'js_composer' ), 'view_item' => __( 'View Grid template', 'js_composer' ), 'search_items' => __( 'Search Grid templates', 'js_composer' ), 'not_found' => __( 'No Grid templates found', 'js_composer' ), 'not_found_in_trash' => __( 'No Grid templates found in Trash', 'js_composer' ), ); } /** * Rewrites validation for correct post_type of th post. * * @param string $type * * @return bool */ public function isValidPostType( $type = '' ) { $type = ! empty( $type ) ? $type : get_post_type(); return $this->editorEnabled() && $this->postType() === $type; } /** * Get post type for Vc grid element editor. * * @static * @return string */ public static function postType() { return self::$post_type; } /** * Calls add_meta_box to create Editor block. * * @access public */ public function addMetaBox() { add_meta_box( 'wpb_visual_composer', __( 'Grid Builder', 'js_composer' ), array( $this, 'renderEditor', ), $this->postType(), 'normal', 'high' ); } /** * Change order of the controls for shortcodes admin block. * * @return array */ public function shortcodesControls() { return array( 'delete', 'edit', ); } /** * Output html for backend editor meta box. * * @param null|int $post * * @return mixed|void */ public function renderEditor( $post = null ) { if ( ! vc_user_access()->part( 'grid_builder' )->can()->get() ) { return; } // add_filter( 'vc_wpbakery_shortcode_get_controls_list', array( // $this, // 'shortcodesControls', // ) ); require_once vc_path_dir( 'PARAMS_DIR', 'vc_grid_item/class-vc-grid-item.php' ); $this->post = $post; vc_include_template( 'params/vc_grid_item/editor/vc_grid_item_editor.tpl.php', array( 'editor' => $this, 'post' => $this->post, ) ); add_action( 'admin_footer', array( $this, 'renderEditorFooter', ) ); do_action( 'vc_backend_editor_render' ); do_action( 'vc_vc_grid_item_editor_render' ); add_action( 'vc_user_access_check-shortcode_edit', array( $this, 'accessCheckShortcodeEdit', ), 10, 2 ); add_action( 'vc_user_access_check-shortcode_all', array( $this, 'accessCheckShortcodeAll', ), 10, 2 ); return; } public function accessCheckShortcodeEdit( $null, $shortcode ) { return vc_user_access()->part( 'grid_builder' )->can()->get(); } public function accessCheckShortcodeAll( $null, $shortcode ) { return vc_user_access()->part( 'grid_builder' )->can()->get(); } /** * Output required html and js content for VC editor. * * Here comes panels, modals and js objects with data for mapped shortcodes. */ public function renderEditorFooter() { vc_include_template( 'params/vc_grid_item/editor/partials/vc_grid_item_editor_footer.tpl.php', array( 'editor' => $this, 'post' => $this->post, ) ); do_action( 'vc_backend_editor_footer_render' ); } public function registerBackendJavascript() { parent::registerBackendJavascript(); wp_register_script( 'vc_grid_item_editor', vc_asset_url( 'js/dist/grid-builder.min.js' ), array( 'vc-backend-min-js' ), WPB_VC_VERSION, true ); wp_localize_script( 'vc_grid_item_editor', 'i18nLocaleGItem', array( 'preview' => __( 'Preview', 'js_composer' ), 'builder' => __( 'Builder', 'js_composer' ), 'add_template_message' => __( 'If you add this template, all your current changes will be removed. Are you sure you want to add template?', 'js_composer' ), ) ); } public function enqueueJs() { parent::enqueueJs(); wp_enqueue_script( 'vc_grid_item_editor' ); } public function templatesEditor() { if ( false === $this->templates_editor ) { require_once vc_path_dir( 'PARAMS_DIR', 'vc_grid_item/editor/popups/class-vc-templates-editor-grid-item.php' ); $this->templates_editor = new Vc_Templates_Editor_Grid_Item(); } return $this->templates_editor; } public function loadPredefinedTemplate( $template_id, $template_type ) { ob_start(); $this->templatesEditor()->load( $template_id ); return ob_get_clean(); } public function loadTemplate( $template_id, $template_type ) { if ( 'grid_templates' === $template_type ) { return $this->loadPredefinedTemplate( $template_id, $template_type ); } else if ( 'grid_templates_custom' === $template_type ) { return $this->templatesEditor()->loadCustomTemplate( $template_id ); } return $template_id; } public function templatePreviewPath( $path ) { return 'params/vc_grid_item/editor/vc_ui-template-preview.tpl.php'; } public function renderTemplatePreview() { vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'edit_posts', 'edit_pages' )->validateDie()->part( 'grid_builder' )->can()->validateDie(); add_action( 'vc_templates_render_backend_template_preview', array( $this, 'loadTemplate', ), 10, 2 ); add_filter( 'vc_render_template_preview_include_template', array( $this, 'templatePreviewPath', ) ); visual_composer()->templatesPanelEditor()->renderTemplatePreview(); } } PK<\.include/params/vc_grid_item/editor/.editor.phpnu[PK<\yIAinclude/params/vc_grid_item/editor/class-vc-grid-item-preview.phpnu[post_id = (int) vc_request_param( 'post_id' ); $this->shortcodes_string = stripslashes( vc_request_param( 'shortcodes_string', true ) ); require_once vc_path_dir( 'PARAMS_DIR', 'vc_grid_item/class-vc-grid-item.php' ); $grid_item = new Vc_Grid_Item(); $grid_item->setIsEnd( false ); $grid_item->setGridAttributes( array( 'element_width' => 4 ) ); $grid_item->setTemplate( $this->shortcodes_string, $this->post_id ); $this->enqueue(); vc_include_template( 'params/vc_grid_item/preview.tpl.php', array( 'preview' => $this, 'grid_item' => $grid_item, 'shortcodes_string' => $this->shortcodes_string, 'post' => $this->mockingPost(), 'default_width_value' => apply_filters( 'vc_grid_item_preview_render_default_width_value', 4 ), ) ); } public function addCssBackgroundImage( $css ) { if ( empty( $css ) ) { $css = 'background-image: url(' . vc_asset_url( 'vc/vc_gitem_image.png' ) . ') !important'; } return $css; } public function addImageUrl( $url ) { if ( empty( $url ) ) { $url = vc_asset_url( 'vc/vc_gitem_image.png' ); } return $url; } public function addImage( $img ) { if ( empty( $img ) ) { $img = ''; } return $img; } /** * * @since 4.5 * * @param $link * * @param $atts * @param $css_class * @return string */ public function disableContentLink( $link, $atts, $css_class ) { return 'a' . ( strlen( $css_class ) > 0 ? ' class="' . esc_attr( $css_class ) . '"' : '' ); } /** * * @since 4.5 * * @param $link * * @param $atts * @param $post * @param $css_class * @return string */ public function disableRealContentLink( $link, $atts, $post, $css_class ) { return 'a' . ( strlen( $css_class ) > 0 ? ' class="' . esc_attr( $css_class ) . '"' : '' ); } /** * Used for filter: vc_gitem_zone_image_block_link * @since 4.5 * * @param $link * * @return string */ public function disableGitemZoneLink( $link ) { return ''; } public function enqueue() { visual_composer()->frontCss(); visual_composer()->frontJsRegister(); wp_enqueue_script( 'prettyphoto' ); wp_enqueue_style( 'prettyphoto' ); wp_enqueue_style( 'js_composer_front' ); wp_enqueue_script( 'wpb_composer_front_js' ); wp_enqueue_style( 'js_composer_custom_css' ); VcShortcodeAutoloader::getInstance()->includeClass( 'WPBakeryShortCode_VC_Basic_Grid' ); $grid = new WPBakeryShortCode_VC_Basic_Grid( array( 'base' => 'vc_basic_grid' ) ); $grid->shortcodeScripts(); $grid->enqueueScripts(); } public function mockingPost() { $post = get_post( $this->post_id ); setup_postdata( $post ); $post->post_title = __( 'Post title', 'js_composer' ); $post->post_content = __( 'The WordPress Excerpt is an optional summary or description of a post; in short, a post summary.', 'js_composer' ); $post->post_excerpt = __( 'The WordPress Excerpt is an optional summary or description of a post; in short, a post summary.', 'js_composer' ); add_filter( 'get_the_categories', array( $this, 'getTheCategories', ), 10, 2 ); $GLOBALS['post'] = $post; return $post; } public function getTheCategories( $categories, $post_id ) { $ret = $categories; if ( ! $post_id || ( $post_id && $post_id == $this->post_id ) ) { $cat = get_categories( 'number=5' ); if ( empty( $ret ) && ! empty( $cat ) ) { $ret += $cat; } } return $ret; } public function addPlaceholderImage( $img ) { if ( null === $img || false === $img ) { $img = array( 'thumbnail' => '', ); } return $img; } } PK<\|M Ginclude/params/vc_grid_item/editor/navbar/class-vc-navbar-grid-item.phpnu['; } public function getControlPreviewTemplate() { return '
  • ' . '' . __( 'Preview', 'js_composer' ) . '' . '
  • '; } public function getControlEdit() { return '
  • ' . '' . '' . '
  • '; } /** * @return string */ public function getControlSaveBackend() { return '
  • ' . '' . __( 'Update', 'js_composer' ) . '' . '
  • '; } /** * @return string */ public function getControlPreviewItemWidth() { $output = '
  • '; return $output; } public function getControlAnimationList() { VcShortcodeAutoloader::getInstance()->includeClass( 'WPBakeryShortCode_VC_Gitem_Animated_Block' ); $output = ''; $animations = WPBakeryShortCode_VC_Gitem_Animated_Block::animations(); if ( is_array( $animations ) ) { $output .= '
  • ' . '
  • '; } return $output; } } PK<\5include/params/vc_grid_item/editor/navbar/.navbar.phpnu[PK<\ݻ44include/params/href/href.phpnu[' . '' . ''; } PK<\include/params/href/.href.phpnu[PK<\PM^^include/params/params.phpnu[ $script_name, 'script' => $script, ); } /** * @deprecated 4.4 - TODO check for usage * @not used * @since 4.2 */ public static function enqueueScripts() { // _deprecated_function( 'WpbakeryShortcodeParams::enqueueScripts', '4.4' ); if ( self::isEnqueue() ) { foreach ( self::$enqueue_script as $item ) { wp_register_script( $item['name'], $item['script'], array( 'jquery', 'wp-color-picker', ), WPB_VC_VERSION, true ); wp_enqueue_script( $item['name'] ); } } } /** * Create new attribute type * * @static * @since 4.2 * * @param $name - attribute name * @param $form_field_callback - hook, will be called when settings form is shown and attribute added to shortcode * param list * @param $script_url - javascript file url which will be attached at the end of settings form. * * @return bool - return true if attribute type created */ public static function addField( $name, $form_field_callback, $script_url = null ) { $result = false; if ( ! empty( $name ) && ! empty( $form_field_callback ) ) { self::$params[ $name ] = array( 'callbacks' => array( 'form' => $form_field_callback, ), ); $result = true; if ( is_string( $script_url ) && ! in_array( $script_url, self::$scripts ) ) { self::registerScript( $script_url ); self::$scripts[] = $script_url; } } return $result; } /** * Calls hook for attribute type * @since 4.2 * @static * * @param $name - attribute name * @param $param_settings - attribute settings from shortcode * @param $param_value - attribute value * @param $tag - attribute tag * * @return mixed|string - returns html which will be render in hook */ public static function renderSettingsField( $name, $param_settings, $param_value, $tag ) { if ( isset( self::$params[ $name ]['callbacks']['form'] ) ) { return call_user_func( self::$params[ $name ]['callbacks']['form'], $param_settings, $param_value, $tag ); } return ''; } /** * List of javascript files urls for shortcode attributes. * @since 4.2 * @static * @return array - list of js scripts */ public static function getScripts() { return self::$scripts; } /** * @since 4.2 * * @param $value */ public static function setEnqueue( $value ) { self::$is_enqueue = (boolean) $value; } /** * @since 4.2 * @return bool */ public static function isEnqueue() { return self::$is_enqueue; } } /** * Helper function to register new shortcode attribute hook. * * @param $name - attribute name * @param $form_field_callback - hook, will be called when settings form is shown and attribute added to shortcode * param list * @param $script_url - javascript file url which will be attached at the end of settings form. * * @since 4.4 * @return bool */ function vc_add_shortcode_param( $name, $form_field_callback, $script_url = null ) { return WpbakeryShortcodeParams::addField( $name, $form_field_callback, $script_url ); } /** * Call hook for attribute. * * @param $name - attribute name * @param $param_settings - attribute settings from shortcode * @param $param_value - attribute value * @param $tag - attribute tag * * @since 4.4 * @return mixed|string - returns html which will be render in hook */ function vc_do_shortcode_param_settings_field( $name, $param_settings, $param_value, $tag ) { return WpbakeryShortcodeParams::renderSettingsField( $name, $param_settings, $param_value, $tag ); } PK<\n%6),),!include/params/default_params.phpnu['; } /** * Dropdown(select with options) shortcode attribute type generator. * * @param $settings * @param $value * * @since 4.4 * @return string - html string. */ function vc_dropdown_form_field( $settings, $value ) { $output = ''; $css_option = str_replace( '#', 'hash-', vc_get_dropdown_option( $settings, $value ) ); $output .= ''; return $output; } /** * Checkbox shortcode attribute type generator. * * @param $settings * @param string $value * * @since 4.4 * @return string - html string. */ function vc_checkbox_form_field( $settings, $value ) { $output = ''; if ( is_array( $value ) ) { $value = ''; // fix #1239 } $current_value = strlen( $value ) > 0 ? explode( ',', $value ) : array(); $values = isset( $settings['value'] ) && is_array( $settings['value'] ) ? $settings['value'] : array( __( 'Yes' ) => 'true' ); if ( ! empty( $values ) ) { foreach ( $values as $label => $v ) { $checked = count( $current_value ) > 0 && in_array( $v, $current_value ) ? ' checked' : ''; $output .= ' '; } } return $output; } add_filter( 'vc_map_get_param_defaults', 'vc_checkbox_param_defaults', 10, 2 ); function vc_checkbox_param_defaults( $value, $param ) { if ( 'checkbox' === $param['type'] ) { $value = ''; if ( isset( $param['std'] ) ) { $value = $param['std']; } } return $value; } /** * Checkbox shortcode attribute type generator. * * @param $settings * @param $value * * @since 4.4 * @return string - html string. */ function vc_posttypes_form_field( $settings, $value ) { $output = ''; $args = array( 'public' => true, ); $post_types = get_post_types( $args ); foreach ( $post_types as $post_type ) { $checked = ''; if ( 'attachment' !== $post_type ) { if ( in_array( $post_type, explode( ',', $value ) ) ) { $checked = ' checked="checked"'; } $output .= ' '; } } return $output; } /** * Taxonomies shortcode attribute type generator. * * @param $settings * @param $value * * @since 4.4 * @return string - html string. */ function vc_taxonomies_form_field( $settings, $value ) { $output = ''; $post_types = get_post_types( array( 'public' => false, 'name' => 'attachment' ), 'names', 'NOT' ); foreach ( $post_types as $type ) { $taxonomies = get_object_taxonomies( $type, '' ); foreach ( $taxonomies as $tax ) { $checked = ''; if ( in_array( $tax->name, explode( ',', $value ) ) ) { $checked = ' checked'; } $output .= ' '; } } return $output; } /** * Exploded textarea shortcode attribute type generator. * * Data saved and coma-separated values are merged with line breaks and returned in a textarea. * * @param $settings * @param $value * * @since 4.4 * @return string - html string. */ function vc_exploded_textarea_form_field( $settings, $value ) { $value = str_replace( ',', "\n", $value ); return ''; } /** * Safe Textarea shortcode attribute type generator. * * @param $settings * @param $value * * @since 4.8.2 * @return string - html string. */ function vc_exploded_textarea_safe_form_field( $settings, $value ) { $value = vc_value_from_safe( $value, true ); $value = str_replace( ',', "\n", $value ); return ''; } /** * Textarea raw html shortcode attribute type generator. * * This attribute type allows safely add custom html to your post/page. * * @param $settings * @param $value * * @since 4.4 * @return string - html string. */ function vc_textarea_raw_html_form_field( $settings, $value ) { return ''; } /** * Safe Textarea shortcode attribute type generator. * * @param $settings * @param $value * * @since 4.4 * @return string - html string. */ function vc_textarea_safe_form_field( $settings, $value ) { return ''; } /** * Textarea shortcode attribute type generator. * * @param $settings * @param $value * * @since 4.4 * @return string - html string. */ function vc_textarea_form_field( $settings, $value ) { return ''; } /** * Attach images shortcode attribute type generator. * * @param $settings * @param $value * * @since 4.4 * * @param $tag * @param bool $single * * @return string - html string. */ function vc_attach_images_form_field( $settings, $value, $tag, $single = false ) { $output = ''; $param_value = wpb_removeNotExistingImgIDs( $value ); $output .= ''; $output .= ''; $output .= ''; if ( true === $single ) { $output .= '' . __( 'Add image', 'js_composer' ) . ''; //class: button } else { $output .= '' . __( 'Add images', 'js_composer' ) . ''; //class: button } return $output; } /** * Attach image shortcode attribute type generator. * * @param $settings * @param $value * * @param $tag * * @since 4.4 * @return string - html string. */ function vc_attach_image_form_field( $settings, $value, $tag ) { return vc_attach_images_form_field( $settings, $value, $tag, true ); } /** * Widgetised sidebars shortcode attribute type generator. * * @param $settings * @param $value * * @since 4.4 * @return string - html string. */ function vc_widgetised_sidebars_form_field( $settings, $value ) { $output = ''; $sidebars = $GLOBALS['wp_registered_sidebars']; $output .= ''; return $output; } PK<\5[ include/params/hidden/hidden.phpnu['; } /** * Remove content before hidden field type input. * * @param $output * * @since 4.5 * * @return string */ function vc_edit_form_fields_render_field_hidden_before( $output ) { return '
    '; } /** * Remove content after hidden field type input. * * @param $output * * @since 4.5 * * @return string */ function vc_edit_form_fields_render_field_hidden_after( $output ) { return '
    '; } PK<\!include/params/hidden/.hidden.phpnu[PK<\Jn.include/params/textarea_html/textarea_html.phpnu[' . $value . ''; $output .= '

    ' . sprintf( __( 'Field type is changed from "textarea_html" to "textarea", because it is already used by %s field. Textarea_html field\'s type can be used only once per shortcode.', 'js_composer' ), $vc_html_editor_already_is_use ) . '

    '; } elseif ( function_exists( 'wp_editor' ) ) { $default_content = $value; // WP 3.3+ ob_start(); wp_editor( '', 'wpb_tinymce_' . $settings['param_name'], array( 'editor_class' => 'wpb-textarea visual_composer_tinymce ' . $settings['param_name'] . ' ' . $settings['type'], 'media_buttons' => true, 'wpautop' => false, ) ); $output_value = ob_get_contents(); ob_end_clean(); $output .= $output_value . ''; $vc_html_editor_already_is_use = $settings['param_name']; } return $output; } PK<\/include/params/textarea_html/.textarea_html.phpnu[PK<\p¯.include/params/params_preset/params_preset.phpnu['; foreach ( $settings['options'] as $option ) { $selected = ''; if ( isset( $option['value'] ) ) { $option_value_string = (string) $option['value']; $value_string = (string) $value; if ( '' !== $value && $option_value_string === $value_string ) { $selected = ' selected'; } $output .= ''; } } $output .= ''; return $output; } PK<\/include/params/params_preset/.params_preset.phpnu[PK<\9include/params/vc_grid_element/vc_grid_id/.vc_grid_id.phpnu[PK<\K8include/params/vc_grid_element/vc_grid_id/vc_grid_id.phpnu[' . '' . ''; } PK<\:\BS&&2include/params/vc_grid_element/vc_grid_element.phpnu[shortcodes; } function setTemplate( $template ) { $this->template = $template; $this->parseTemplate( $template ); } function template() { return $this->template; } public function parseTemplate( $template ) { $this->setShortcodes(); $this->html_template = do_shortcode( $template ); } function renderItem( WP_Post $post ) { $attributes = $this->attributes(); $pattern = array(); $replacement = array(); foreach ( $attributes as $attr ) { $pattern[] = '/\{\{' . preg_quote( $attr, '' ) . '\}\}/'; $replacement[] = $this->attribute( $attr, $post ); } $css_class_items = 'vc_grid-item ' . ( $this->isEnd() ? ' vc_grid-last-item ' : '' ) . ' vc_grid-thumb vc_theme-thumb-full-overlay vc_animation-slide-left vc_col-sm-' . $this->gridAttribute( 'element_width', 12 ); foreach ( $post->filter_terms as $t ) { $css_class_items .= ' vc_grid-term-' . $t; } return '
    ' . "\n" . preg_replace( $pattern, $replacement, $this->html_template ) . "\n" . '
    ' . "\n"; } public function renderParam() { $output = '
    ' . '' . __( 'Add row', 'js_composer' ) . ''; if ( false === self::$templates_added ) { foreach ( $this->shortcodes as $tag ) { $method = vc_camel_case( $tag . '_template' ); if ( method_exists( $this, $method ) ) { $content = $this->$method(); } else { $content = $this->vcDefaultTemplate( $tag ); } $output .= ''; $output .= ''; } self::$templates_added = true; } return $output; } public function setGridAttributes( $grid_atts ) { $this->grid_atts = $grid_atts; } public function gridAttribute( $name, $default = '' ) { return isset( $this->grid_atts[ $name ] ) ? $this->grid_atts[ $name ] : $default; } public function setAttribute( $name ) { $this->attributes[] = $name; } public function attributes() { return $this->attributes; } public function attribute( $name, $post ) { if ( method_exists( $this, 'attribute' . ucfirst( $name ) ) ) { $method_name = 'attribute' . ucfirst( $name ); return $this->$method_name( $post ); } if ( isset( $post->$name ) ) { return $post->$name; } return ''; } public function setIsEnd( $is_end = true ) { $this->is_end = $is_end; } public function isEnd() { return $this->is_end; } /** * Set elements templates. */ protected function setShortcodes() { foreach ( $this->shortcodes as $tag ) { add_shortcode( $tag, array( $this, vc_camel_case( $tag . '_shortcode' ) ) ); } } // Templates {{ public function vcGitemRowShortcode( $atts, $content = '' ) { return '
    ' . "\n" . do_shortcode( $content ) . "\n" . '
    '; } public function vcGitemRowTemplate() { $output = '
    '; $output .= '
    '; // Move control $output .= ''; // Layout control $output .= '' . '' // Destroy control . '' . '' . '' . ''; $output .= '
    '; $output .= '
    '; $output .= '
    '; return $output; } public function vcGitemColShortcode( $atts, $content = '' ) { $width = '12'; $atts = shortcode_atts( array( 'width' => '12', ), $atts ); extract( $atts ); return '
    ' . "\n" . do_shortcode( $content ) . "\n" . '
    '; } public function vcGitemColTemplate() { $output = '
    '; // Controls // Control "Add" $controls = '' . '' . ''; $output .= '
    ' . $controls . '
    '; // Content $output .= '
    ' . '
    '; /* $output .= '
    ' .$controls . '
    '; */ $output .= '
    '; return $output; } public function vcGitemPostTitleShortcode( $atts, $content = '' ) { $atts = shortcode_atts( array(), $atts ); extract( $atts ); $this->setAttribute( 'post_title' ); return '

    {{post_title}}

    '; } public function vcDefaultTemplate( $tag ) { $name = preg_replace( '/^vc_gitem_/', '', $tag ); $title = ucfirst( preg_replace( '/\_/', ' ', $name ) ); return '
    ' . $this->elementControls( $title, preg_match( '/^post/', $name ) ? 'orange' : 'green' ) . '
    '; } protected function elementControls( $title, $theme = null ) { return '
    ' // Move control . '' . '' . '' // Label . ' ' . $title . '' // Edit control . '' . '' . '' // Delete control . '' . '' . '' . '
    '; } // }} } function vc_vc_grid_element_form_field( $settings, $value ) { $grid_element = new Vc_Grid_Element(); return '
    ' . '' . $grid_element->renderParam() . '
    '; } function vc_load_vc_grid_element_param() { vc_add_shortcode_param( 'vc_grid_element', 'vc_vc_grid_element_form_field' ); } add_action( 'vc_load_default_params', 'vc_load_vc_grid_element_param' ); PK<\3include/params/vc_grid_element/.vc_grid_element.phpnu[PK<\/include/params/custom_markup/.custom_markup.phpnu[PK<\-.include/params/custom_markup/custom_markup.phpnu[ 'hidden_markup1', // all params must have a unique name 'type' => 'custom_markup', // this param type 'description' => __( 'Enter your content..', 'js_composer' ), // some description if needed 'value' => '
    aaa
    ', // your custom markup ), */ PK<\)include/params/css_editor/.css_editor.phpnu[PK<\,i(include/params/css_editor/css_editor.phpnu[settings = $settings; } return $this->settings; } /** * @param $key * * @return string */ function setting( $key ) { return isset( $this->settings[ $key ] ) ? $this->settings[ $key ] : ''; } /** * @param null $value * * @return string */ function value( $value = null ) { if ( is_string( $value ) ) { $this->value = $value; } return $this->value; } /** * @param null $values * * @return array */ function params( $values = null ) { if ( is_array( $values ) ) { $this->params = $values; } return $this->params; } // }} /** * vc_filter: vc_css_editor - hook to override output of this method * @return mixed|void */ function render() { $output = '
    '; $output .= $this->onionLayout(); $output .= '
    ' . ' ' . '
    ' . ' ' . '
    ' . ' ' . '
    ' . ' ' . '
    ' . '
    ' . $this->getBackgroundImageControl() . '
    ' . '
    ' . ' ' . ' ' . '
    '; $output .= ''; $output .= '
    '; $output .= ''; return apply_filters( 'vc_css_editor', $output ); } /** * @return string */ function getBackgroundImageControl() { return apply_filters( 'vc_css_editor_background_image_control', '
      ' . '
    ' . '' . __( 'Add image', 'js_composer' ) . '' ); } /** * @return string */ function getBorderRadiusOptions() { $radiuses = apply_filters( 'vc_css_editor_border_radius_options_data', array( '' => __( 'None', 'js_composer' ), '1px' => '1px', '2px' => '2px', '3px' => '3px', '4px' => '4px', '5px' => '5px', '10px' => '10px', '15px' => '15px', '20px' => '20px', '25px' => '25px', '30px' => '30px', '35px' => '35px', ) ); $output = ''; foreach ( $radiuses as $radius => $title ) { $output .= ''; } return $output; } /** * @return string */ function getBorderStyleOptions() { $output = ''; $styles = apply_filters( 'vc_css_editor_border_style_options_data', array( 'solid', 'dotted', 'dashed', 'none', 'hidden', 'double', 'groove', 'ridge', 'inset', 'outset', 'initial', 'inherit', ) ); foreach ( $styles as $style ) { $output .= ''; } return $output; } /** * @return string */ function getBackgroundStyleOptions() { $output = ''; $styles = apply_filters( 'vc_css_editor_background_style_options_data', array( __( 'Cover', 'js_composer' ) => 'cover', __( 'Contain', 'js_composer' ) => 'contain', __( 'No Repeat', 'js_composer' ) => 'no-repeat', __( 'Repeat', 'js_composer' ) => 'repeat', ) ); foreach ( $styles as $name => $style ) { $output .= ''; } return $output; } /** * @return string */ function onionLayout() { $output = '
    ' . '
    ' . $this->layerControls( 'margin' ) . '
    ' . $this->layerControls( 'border', 'width' ) . '
    ' . $this->layerControls( 'padding' ) . '
    ' . '
    ' . '
    ' . '
    ' . '
    '; return apply_filters( 'vc_css_editor_onion_layout', $output ); } /** * @param $name * @param string $prefix * * @return string */ protected function layerControls( $name, $prefix = '' ) { $output = ''; foreach ( $this->positions as $pos ) { $output .= ''; } return apply_filters( 'vc_css_editor_layer_controls', $output ); } } } /** * @param $settings * @param $value * * @return mixed|void */ function vc_css_editor_form_field( $settings, $value ) { $css_editor = new WPBakeryVisualComposerCssEditor(); $css_editor->settings( $settings ); $css_editor->value( $value ); return $css_editor->render(); } PK<\*include/params/sorted_list/sorted_list.phpnu[' . '' . '
    ' . vc_sorted_list_parts_list( $settings['options'] ) . '
    ' . '
      ' . ''; } /** * Teaser box meta box generator for post's edit page. * @since 4.2 * The instance of this class is called from */ class Vc_Teaser_Box { /** * @since 4.2 * @var string */ protected static $meta_data_name = 'vc_teaser'; /** * @since 4.4 (code inspection) * @var bool */ public $teaser_data = false; /** * Add action hook to create Meta box. On admin_init jsComposerEditPage method is called. * @since 4.2 */ public function init() { add_action( 'admin_init', array( $this, 'jsComposerEditPage' ), 6 ); } /** * Calls add_meta_box function for generating * @since 4.2 */ public function jsComposerEditPage() { $pt_array = vc_editor_post_types(); foreach ( $pt_array as $pt ) { add_meta_box( 'vc_teaser', __( 'VC: Custom Teaser', 'js_composer' ), array( $this, 'outputTeaser', ), $pt, 'side' ); } add_action( 'save_post', array( $this, 'saveTeaserMetaBox' ) ); } /** * Get teaser box data from database. * * @param $name * @param bool $id * * @since 4.2 * @return string */ public function getTeaserData( $name, $id = false ) { if ( false === $id ) { $id = get_the_ID(); } $this->teaser_data = get_post_meta( $id, self::$meta_data_name, true ); return isset( $this->teaser_data[ $name ] ) ? $this->teaser_data[ $name ] : ''; } /** * Outputs teaser box html content. * * @since 4.2 */ public function outputTeaser() { wp_enqueue_script( 'wpb_jscomposer_teaser_js' ); wp_localize_script( 'wpb_jscomposer_teaser_js', 'i18nVcTeaser', array( 'empty_title' => __( 'Empty title', 'js_composer' ), 'text_label' => __( 'Text', 'js_composer' ), 'image_label' => __( 'Image', 'js_composer' ), 'title_label' => __( 'Title', 'js_composer' ), 'link_label' => __( 'Link', 'js_composer' ), 'text_text' => __( 'Text', 'js_composer' ), 'text_excerpt' => __( 'Excerpt', 'js_composer' ), 'text_custom' => __( 'Custom', 'js_composer' ), 'image_featured' => __( 'Featered', 'js_composer' ), 'image_custom' => __( 'Custom', 'js_composer' ), 'link_label_text' => __( 'Link text', 'js_composer' ), 'no_link' => __( 'No link', 'js_composer' ), 'link_post' => __( 'Link to post', 'js_composer' ), 'link_big_image' => __( 'Link to big image', 'js_composer' ), 'add_custom_image' => __( 'Add custom image', 'js_composer' ), ) ); $output = '
      '; $output .= ''; $output .= '
      '; $output .= '

      ' . __( 'Customize teaser block design to overwrite default settings used in "Carousel" content element.', 'js_composer' ) . '

      '; $output .= '
      '; $output .= '
      '; $output .= '
      '; $output .= '
      '; $output .= ''; $output .= ''; $output .= '
      '; require_once vc_path_dir( 'TEMPLATES_DIR', 'teaser.html.php' ); echo $output; } /** * @param $post_id * * @since 4.2 */ public function saveTeaserMetaBox( $post_id ) { if ( isset( $_POST[ self::$meta_data_name ] ) ) { $options = isset( $_POST[ self::$meta_data_name ] ) ? $_POST[ self::$meta_data_name ] : ''; update_post_meta( (int) $post_id, self::$meta_data_name, $options ); } } } /** * @param $list * * @since 4.2 * @return string */ function vc_sorted_list_parts_list( $list ) { $output = ''; foreach ( $list as $control ) { $output .= '
      '; } return $output; } /** * @param $value * * @since 4.2 * @return array */ function vc_sorted_list_parse_value( $value ) { $data = array(); $split = preg_split( '/\,/', $value ); foreach ( $split as $v ) { $v_split = array_map( 'rawurldecode', preg_split( '/\|/', $v ) ); if ( count( $v_split ) > 0 ) { $data[] = array( $v_split[0], count( $v_split ) > 1 ? array_slice( $v_split, 1 ) : array() ); } } return $data; } global $vc_teaser_box; $vc_teaser_box = new Vc_Teaser_Box(); /** * @param $attributes * * @since 4.2 * @return mixed */ function vc_add_teaser_box_generator( $attributes ) { global $vc_teaser_box; $vc_teaser_box->init(); return $attributes; } add_filter( 'vc_mapper_attribute_sorted_list', 'vc_add_teaser_box_generator' ); PK<\+include/params/sorted_list/.sorted_list.phpnu[PK<\ǹVbUbUinclude/params/loop/loop.phpnu[getContent(); $loop_info = ''; if ( is_array( $params ) ) { foreach ( $params as $key => $param ) { $param_value = vc_loop_get_value( $param ); if ( ! empty( $param_value ) ) { $loop_info .= ' ' . $query_builder->getLabel( $key ) . ': ' . $param_value . ';'; } } } return '
      ' . '' . '' . __( 'Build query', 'js_composer' ) . '' . '
      ' . $loop_info . '
      ' . '
      '; } /** * @param $param * * @since 4.2 * @return string */ function vc_loop_get_value( $param ) { $value = array(); $selected_values = (array) $param['value']; if ( isset( $param['options'] ) && is_array( $param['options'] ) ) { foreach ( $param['options'] as $option ) { if ( is_array( $option ) && isset( $option['value'] ) ) { if ( in_array( ( ( '-' === $option['action'] ? '-' : '' ) . $option['value'] ), $selected_values ) ) { $value[] = $option['action'] . $option['name']; } } elseif ( is_array( $option ) && isset( $option[0] ) ) { if ( in_array( $option[0], $selected_values ) ) { $value[] = $option[1]; } } elseif ( in_array( $option, $selected_values ) ) { $value[] = $option; } } } else { $value[] = $param['value']; } return implode( ', ', $value ); } /** * Parses loop settings and creates WP_Query according to manual * @since 4.2 * @link http://codex.wordpress.org/Class_Reference/WP_Query */ class VcLoopQueryBuilder { /** * @since 4.2 * @var array */ protected $args = array( 'post_status' => 'publish', // show only published posts #1098 ); /** * @since 4.2 * * @param $data */ function __construct( $data ) { foreach ( $data as $key => $value ) { $method = 'parse_' . $key; if ( method_exists( $this, $method ) ) { $this->$method( $value ); } } } /** * Pages count * @since 4.2 * * @param $value */ protected function parse_size( $value ) { $this->args['posts_per_page'] = 'All' === $value ? - 1 : (int) $value; } /** * Sorting field * @since 4.2 * * @param $value */ protected function parse_order_by( $value ) { $this->args['orderby'] = $value; } /** * Sorting order * @since 4.2 * * @param $value */ protected function parse_order( $value ) { $this->args['order'] = $value; } /** * By post types * @since 4.2 * * @param $value */ protected function parse_post_type( $value ) { $this->args['post_type'] = $this->stringToArray( $value ); } /** * By author * @since 4.2 * * @param $value */ protected function parse_authors( $value ) { $this->args['author'] = $value; } /** * By categories * @since 4.2 * * @param $value */ protected function parse_categories( $value ) { $this->args['cat'] = $value; } /** * By taxonomies * @since 4.2 * * @param $value */ protected function parse_tax_query( $value ) { $terms = $this->stringToArray( $value ); if ( empty( $this->args['tax_query'] ) ) { $this->args['tax_query'] = array( 'relation' => 'AND' ); } $negative_term_list = array(); foreach ( $terms as $term ) { if ( (int) $term < 0 ) { $negative_term_list[] = abs( $term ); } } $not_in = array(); $in = array(); $terms = get_terms( VcLoopSettings::getTaxonomies(), array( 'include' => array_map( 'abs', $terms ) ) ); foreach ( $terms as $t ) { if ( in_array( (int) $t->term_id, $negative_term_list ) ) { $not_in[ $t->taxonomy ][] = $t->term_id; } else { $in[ $t->taxonomy ][] = $t->term_id; } } foreach ( $in as $taxonomy => $terms ) { $this->args['tax_query'][] = array( 'field' => 'term_id', 'taxonomy' => $taxonomy, 'terms' => $terms, 'operator' => 'IN', ); } foreach ( $not_in as $taxonomy => $terms ) { $this->args['tax_query'][] = array( 'field' => 'term_id', 'taxonomy' => $taxonomy, 'terms' => $terms, 'operator' => 'NOT IN', ); } } /** * By tags ids * @since 4.2 * * @param $value */ protected function parse_tags( $value ) { $in = $not_in = array(); $tags_ids = $this->stringToArray( $value ); foreach ( $tags_ids as $tag ) { $tag = (int) $tag; if ( $tag < 0 ) { $not_in[] = abs( $tag ); } else { $in[] = $tag; } } $this->args['tag__in'] = $in; $this->args['tag__not_in'] = $not_in; } /** * By posts ids * @since 4.2 * * @param $value */ protected function parse_by_id( $value ) { $in = $not_in = array(); $ids = $this->stringToArray( $value ); foreach ( $ids as $id ) { $id = (int) $id; if ( $id < 0 ) { $not_in[] = abs( $id ); } else { $in[] = $id; } } $this->args['post__in'] = $in; $this->args['post__not_in'] = $not_in; } /** * @since 4.2 * * @param $id */ public function excludeId( $id ) { if ( ! isset( $this->args['post__not_in'] ) ) { $this->args['post__not_in'] = array(); } if ( is_array( $id ) ) { $this->args['post__not_in'] = array_merge( $this->args['post__not_in'], $id ); } else { $this->args['post__not_in'][] = $id; } } /** * Converts string to array. Filters empty arrays values * @since 4.2 * * @param $value * * @return array */ protected function stringToArray( $value ) { $valid_values = array(); $list = preg_split( '/\,[\s]*/', $value ); foreach ( $list as $v ) { if ( strlen( $v ) > 0 ) { $valid_values[] = $v; } } return $valid_values; } /** * @return array */ public function build() { return array( $this->args, new WP_Query( $this->args ) ); } } /** * Class VcLoopSettings * @since 4.2 */ class VcLoopSettings { // Available parts of loop for WP_Query object. /** * @since 4.2 * @var array */ protected $content = array(); /** * @since 4.2 * @var array */ protected $parts; /** * @since 4.2 * @var array */ protected $query_parts = array( 'size', 'order_by', 'order', 'post_type', 'authors', 'categories', 'tags', 'tax_query', 'by_id', ); /** * @since 4.2 * * @param $value * @param array $settings */ function __construct( $value, $settings = array() ) { $this->parts = array( 'size' => __( 'Post count', 'js_composer' ), 'order_by' => __( 'Order by', 'js_composer' ), 'order' => __( 'Sort order', 'js_composer' ), 'post_type' => __( 'Post types', 'js_composer' ), 'authors' => __( 'Author', 'js_composer' ), 'categories' => __( 'Categories', 'js_composer' ), 'tags' => __( 'Tags', 'js_composer' ), 'tax_query' => __( 'Taxonomies', 'js_composer' ), 'by_id' => __( 'Individual posts/pages', 'js_composer' ), ); $this->settings = $settings; // Parse loop string $data = $this->parseData( $value ); foreach ( $this->query_parts as $part ) { $value = isset( $data[ $part ] ) ? $data[ $part ] : ''; $locked = 'true' === $this->getSettings( $part, 'locked' ); // Predefined value check. if ( ! is_null( $this->getSettings( $part, 'value' ) ) && $this->replaceLockedValue( $part ) && ( true === $locked || 0 === strlen( (string) $value ) ) ) { $value = $this->settings[ $part ]['value']; } elseif ( ! is_null( $this->getSettings( $part, 'value' ) ) && ! $this->replaceLockedValue( $part ) && ( true === $locked || 0 === strlen( (string) $value ) ) ) { $value = implode( ',', array_unique( explode( ',', $value . ',' . $this->settings[ $part ]['value'] ) ) ); } // Find custom method for parsing if ( method_exists( $this, 'parse_' . $part ) ) { $method = 'parse_' . $part; $this->content[ $part ] = $this->$method( $value ); } else { $this->content[ $part ] = $this->parseString( $value ); } // Set locked if value is locked by settings if ( $locked ) { $this->content[ $part ]['locked'] = true; } // if ( 'true' === $this->getSettings( $part, 'hidden' ) ) { $this->content[ $part ]['hidden'] = true; } } } /** * @param $part * * @since 4.2 * @return bool */ protected function replaceLockedValue( $part ) { return in_array( $part, array( 'size', 'order_by', 'order' ) ); } /** * @param $key * * @since 4.2 * @return mixed */ public function getLabel( $key ) { return isset( $this->parts[ $key ] ) ? $this->parts[ $key ] : $key; } /** * @param $part * @param $name * * @since 4.2 * @return null */ public function getSettings( $part, $name ) { $settings_exists = isset( $this->settings[ $part ] ) && is_array( $this->settings[ $part ] ); return $settings_exists && isset( $this->settings[ $part ][ $name ] ) ? $this->settings[ $part ][ $name ] : null; } /** * @param $value * * @since 4.2 * @return array */ public function parseString( $value ) { return array( 'value' => $value ); } /** * @param $value * @param array $options * * @since 4.2 * @return array */ protected function parseDropDown( $value, $options = array() ) { return array( 'value' => $value, 'options' => $options ); } /** * @param $value * @param array $options * * @since 4.2 * @return array */ protected function parseMultiSelect( $value, $options = array() ) { return array( 'value' => explode( ',', $value ), 'options' => $options ); } /** * @param $value * * @since 4.2 * @return array */ public function parse_order_by( $value ) { return $this->parseDropDown( $value, array( array( 'date', __( 'Date', 'js_composer' ) ), 'ID', array( 'author', __( 'Author', 'js_composer' ) ), array( 'title', __( 'Title', 'js_composer' ) ), array( 'modified', __( 'Modified', 'js_composer' ) ), array( 'rand', __( 'Random', 'js_composer' ) ), array( 'comment_count', __( 'Comment count', 'js_composer' ) ), array( 'menu_order', __( 'Menu order', 'js_composer' ) ), ) ); } /** * @param $value * * @since 4.2 * @return array */ public function parse_order( $value ) { return $this->parseDropDown( $value, array( array( 'ASC', __( 'Ascending', 'js_composer' ) ), array( 'DESC', __( 'Descending', 'js_composer' ) ), ) ); } /** * @param $value * * @since 4.2 * @return array */ public function parse_post_type( $value ) { $options = array(); $args = array( 'public' => true, ); $post_types = get_post_types( $args ); foreach ( $post_types as $post_type ) { if ( 'attachment' !== $post_type ) { $options[] = $post_type; } } return $this->parseMultiSelect( $value, $options ); } /** * @param $value * * @since 4.2 * @return array */ public function parse_authors( $value ) { $options = $not_in = array(); if ( empty( $value ) ) { return $this->parseMultiSelect( $value, $options ); } $list = explode( ',', $value ); foreach ( $list as $id ) { if ( (int) $id < 0 ) { $not_in[] = abs( $id ); } } $users = get_users( array( 'include' => array_map( 'abs', $list ) ) ); foreach ( $users as $user ) { $options[] = array( 'value' => (string) $user->ID, 'name' => $user->data->user_nicename, 'action' => in_array( (int) $user->ID, $not_in ) ? '-' : '+', ); } return $this->parseMultiSelect( $value, $options ); } /** * @param $value * * @since 4.2 * @return array */ public function parse_categories( $value ) { $options = $not_in = array(); if ( empty( $value ) ) { return $this->parseMultiSelect( $value, $options ); } $list = explode( ',', $value ); foreach ( $list as $id ) { if ( (int) $id < 0 ) { $not_in[] = abs( $id ); } } $list = get_categories( array( 'include' => array_map( 'abs', $list ) ) ); foreach ( $list as $obj ) { $options[] = array( 'value' => (string) $obj->cat_ID, 'name' => $obj->cat_name, 'action' => in_array( (int) $obj->cat_ID, $not_in ) ? '-' : '+', ); } return $this->parseMultiSelect( $value, $options ); } /** * @param $value * * @since 4.2 * @return array */ public function parse_tags( $value ) { $options = $not_in = array(); if ( empty( $value ) ) { return $this->parseMultiSelect( $value, $options ); } $list = explode( ',', $value ); foreach ( $list as $id ) { if ( (int) $id < 0 ) { $not_in[] = abs( $id ); } } $list = get_tags( array( 'include' => array_map( 'abs', $list ) ) ); foreach ( $list as $obj ) { $options[] = array( 'value' => (string) $obj->term_id, 'name' => $obj->name, 'action' => in_array( (int) $obj->term_id, $not_in ) ? '-' : '+', ); } return $this->parseMultiSelect( $value, $options ); } /** * @param $value * * @since 4.2 * @return array */ public function parse_tax_query( $value ) { $options = $not_in = array(); if ( empty( $value ) ) { return $this->parseMultiSelect( $value, $options ); } $list = explode( ',', $value ); foreach ( $list as $id ) { if ( (int) $id < 0 ) { $not_in[] = abs( $id ); } } $list = get_terms( self::getTaxonomies(), array( 'include' => array_map( 'abs', $list ) ) ); foreach ( $list as $obj ) { $options[] = array( 'value' => (string) $obj->term_id, 'name' => $obj->name, 'action' => in_array( (int) $obj->term_id, $not_in ) ? '-' : '+', ); } return $this->parseMultiSelect( $value, $options ); } /** * @param $value * * @since 4.2 * @return array */ public function parse_by_id( $value ) { $options = $not_in = array(); if ( empty( $value ) ) { return $this->parseMultiSelect( $value, $options ); } $list = explode( ',', $value ); foreach ( $list as $id ) { if ( (int) $id < 0 ) { $not_in[] = abs( $id ); } } $list = get_posts( array( 'post_type' => 'any', 'include' => array_map( 'abs', $list ) ) ); foreach ( $list as $obj ) { $options[] = array( 'value' => (string) $obj->ID, 'name' => $obj->post_title, 'action' => in_array( (int) $obj->ID, $not_in ) ? '-' : '+', ); } return $this->parseMultiSelect( $value, $options ); } /** * @since 4.2 */ public function render() { echo json_encode( $this->content ); } /** * @since 4.2 * @return array */ public function getContent() { return $this->content; } /** * get list of taxonomies which has no tags and categories items. * @since 4.2 * @static * @return array */ public static function getTaxonomies() { $taxonomy_exclude = (array) apply_filters( 'get_categories_taxonomy', 'category' ); $taxonomy_exclude[] = 'post_tag'; $taxonomies = array(); foreach ( get_taxonomies() as $taxonomy ) { if ( ! in_array( $taxonomy, $taxonomy_exclude ) ) { $taxonomies[] = $taxonomy; } } return $taxonomies; } /** * @param $settings * * @since 4.2 * @return string */ public static function buildDefault( $settings ) { if ( ! isset( $settings['settings'] ) || ! is_array( $settings['settings'] ) ) { return ''; } $value = ''; foreach ( $settings['settings'] as $key => $val ) { if ( isset( $val['value'] ) ) { $value .= ( empty( $value ) ? '' : '|' ) . $key . ':' . $val['value']; } } return $value; } /** * @param $query * @param bool $exclude_id * * @since 4.2 * @return array */ public static function buildWpQuery( $query, $exclude_id = false ) { $data = self::parseData( $query ); $query_builder = new VcLoopQueryBuilder( $data ); if ( $exclude_id ) { $query_builder->excludeId( $exclude_id ); } return $query_builder->build(); } /** * @param $value * * @since 4.2 * @return array */ public static function parseData( $value ) { $data = array(); $values_pairs = preg_split( '/\|/', $value ); foreach ( $values_pairs as $pair ) { if ( ! empty( $pair ) ) { list( $key, $value ) = preg_split( '/\:/', $pair ); $data[ $key ] = $value; } } return $data; } } /** * Suggestion list for wp_query field * Class VcLoopSuggestions * @since 4.2 */ class VcLoopSuggestions { /** * @since 4.2 * @var array */ protected $content = array(); /** * @since 4.2 * @var array */ protected $exclude = array(); /** * @since 4.2 * @var */ protected $field; /** * @param $field * @param $query * @param $exclude * * @since 4.2 */ function __construct( $field, $query, $exclude ) { $this->exclude = explode( ',', $exclude ); $method_name = 'get_' . preg_replace( '/_out$/', '', $field ); if ( method_exists( $this, $method_name ) ) { $this->$method_name( $query ); } } /** * @param $query * * @since 4.2 */ public function get_authors( $query ) { $args = ! empty( $query ) ? array( 'search' => '*' . $query . '*', 'search_columns' => array( 'user_nicename' ), ) : array(); if ( ! empty( $this->exclude ) ) { $args['exclude'] = $this->exclude; } $users = get_users( $args ); foreach ( $users as $user ) { $this->content[] = array( 'value' => (string) $user->ID, 'name' => (string) $user->data->user_nicename ); } } /** * @param $query * * @since 4.2 */ public function get_categories( $query ) { $args = ! empty( $query ) ? array( 'search' => $query ) : array(); if ( ! empty( $this->exclude ) ) { $args['exclude'] = $this->exclude; } $categories = get_categories( $args ); foreach ( $categories as $cat ) { $this->content[] = array( 'value' => (string) $cat->cat_ID, 'name' => $cat->cat_name ); } } /** * @param $query * * @since 4.2 */ public function get_tags( $query ) { $args = ! empty( $query ) ? array( 'search' => $query ) : array(); if ( ! empty( $this->exclude ) ) { $args['exclude'] = $this->exclude; } $tags = get_tags( $args ); foreach ( $tags as $tag ) { $this->content[] = array( 'value' => (string) $tag->term_id, 'name' => $tag->name ); } } /** * @param $query * * @since 4.2 */ public function get_tax_query( $query ) { $args = ! empty( $query ) ? array( 'search' => $query ) : array(); if ( ! empty( $this->exclude ) ) { $args['exclude'] = $this->exclude; } $tags = get_terms( VcLoopSettings::getTaxonomies(), $args ); foreach ( $tags as $tag ) { $this->content[] = array( 'value' => $tag->term_id, 'name' => $tag->name . ' (' . $tag->taxonomy . ')', ); } } /** * @param $query * * @since 4.2 */ public function get_by_id( $query ) { $args = ! empty( $query ) ? array( 's' => $query, 'post_type' => 'any' ) : array( 'post_type' => 'any' ); if ( ! empty( $this->exclude ) ) { $args['exclude'] = $this->exclude; } $posts = get_posts( $args ); foreach ( $posts as $post ) { $this->content[] = array( 'value' => $post->ID, 'name' => $post->post_title ); } } /** * @since 4.2 */ public function render() { echo json_encode( $this->content ); } } /** * Build WP_Query object from query string. * String created by loop controllers * * @param $query * @param bool $exclude_id * * @since 4.2 * @return string */ function vc_build_loop_query( $query, $exclude_id = false ) { return VcLoopSettings::buildWpQuery( $query, $exclude_id ); } /** * @since 4.2 */ function vc_get_loop_suggestion() { vc_user_access() ->checkAdminNonce() ->validateDie() ->wpAny( 'edit_posts', 'edit_pages' ) ->validateDie(); $loop_suggestions = new VcLoopSuggestions( vc_post_param( 'field' ), vc_post_param( 'query' ), vc_post_param( 'exclude' ) ); $loop_suggestions->render(); die(); } /** * @since 4.2 */ function vc_get_loop_settings_json() { vc_user_access() ->checkAdminNonce() ->validateDie() ->wpAny( 'edit_posts', 'edit_pages' ) ->validateDie(); $loop_settings = new VcLoopSettings( vc_post_param( 'value' ), vc_post_param( 'settings' ) ); $loop_settings->render(); die(); } add_action( 'wp_ajax_wpb_get_loop_suggestion', 'vc_get_loop_suggestion' ); add_action( 'wp_ajax_wpb_get_loop_settings', 'vc_get_loop_settings_json' ); /** * @since 4.2 */ function vc_loop_include_templates() { require_once vc_path_dir( 'TEMPLATES_DIR', 'params/loop/templates.html' ); } add_action( 'admin_footer', 'vc_loop_include_templates' ); /** * @param $param * * @since 4.2 * @return mixed */ function vc_set_loop_default_value( $param ) { if ( empty( $param['value'] ) && isset( $param['settings'] ) ) { $param['value'] = VcLoopSettings::buildDefault( $param ); } return $param; } add_filter( 'vc_mapper_attribute_loop', 'vc_set_loop_default_value' ); PK<\include/params/loop/.loop.phpnu[PK<\include/params/.params.phpnu[PK<\#include/params/load.phpnu[setSettings( $settings ); } /** * @param $param * @param $value * * @since 4.4 * @return mixed|void */ public function renderField( $param, $value ) { return parent::renderField( $param, $value ); } /** * Get shortcode attribute value wrapper for params group. * * This function checks if value isn't set then it uses std or value fields in param settings. * @since 5.2.1 * * @param $params_settings * @param null $value * * @return mixed; */ public function getParamGroupAttributeValue( $params_settings, $value = null ) { return $this->parseShortcodeAttributeValue( $params_settings, $value ); } } /** * Class Vc_ParamGroup * @since 4.4 */ class Vc_ParamGroup { /** * @since 4.4 * @var */ protected $settings; /** * @since 4.4 * @var array|mixed */ protected $value; /** * @since 4.4 * @var */ protected $map; /** * @since 4.4 * @var */ protected $atts; /** * @param $settings * @param $value * @param $tag * * @since 4.4 */ public function __construct( $settings, $value, $tag ) { $this->settings = $settings; $this->settings['base'] = $tag; $this->value = vc_param_group_parse_atts( $value ); $this->unparsed_value = $value; } /** * @param $param_name * @param $arr * * @since 4.4 * @return array */ public function params_to_arr( $param_name, $arr ) { $data = array(); foreach ( $arr as $param ) { $data[ $param_name . '_' . $param['param_name'] ] = $param['type']; } return $data; } /** * @since 4.4 * @return mixed|string */ public function render() { $output = ''; $edit_form = new Vc_ParamGroup_Edit_Form_Fields( $this->settings ); $settings = $this->settings; $output .= '
        '; $template = vc_include_template( 'params/param_group/content.tpl.php' ); // Parsing values if ( ! empty( $this->value ) ) { foreach ( $this->value as $values ) { $output .= $template; $value_block = "
        "; $data = $values; foreach ( $this->settings['params'] as $param ) { $param_value = isset( $data[ $param['param_name'] ] ) ? $data[ $param['param_name'] ] : ( isset( $param['value'] ) ? $param['value'] : null ); $param['param_name'] = $this->settings['param_name'] . '_' . $param['param_name']; $value = $edit_form->getParamGroupAttributeValue( $param, $param_value ); $value_block .= $edit_form->renderField( $param, $value ); } $value_block .= '
        '; $output = str_replace( '%content%', $value_block, $output ); } } else { $output .= $template; } // Empty fields wrapper and Add new fields wrapper $content = "
        "; foreach ( $this->settings['params'] as $param ) { $param['param_name'] = $this->settings['param_name'] . '_' . $param['param_name']; $value = $edit_form->getParamGroupAttributeValue( $param ); $content .= $edit_form->renderField( $param, $value ); } $content .= '
        '; $output = str_replace( '%content%', $content, $output ); // And button on bottom $output .= '
      '; $add_template = vc_include_template( 'params/param_group/add.tpl.php' ); $add_template = str_replace( '%content%', $content, $add_template ); $output .= ''; $output .= ''; return $output; } } /** * Function for rendering param in edit form (add element) * Parse settings from vc_map and entered values. * * @param $param_settings * @param $param_value * @param $tag * * @since 4.4 * * vc_filter: vc_param_group_render_filter * * @return mixed|void rendered template for params in edit form */ function vc_param_group_form_field( $param_settings, $param_value, $tag ) { $param_group = new Vc_ParamGroup( $param_settings, $param_value, $tag ); return apply_filters( 'vc_param_group_render_filter', $param_group->render() ); } add_action( 'wp_ajax_vc_param_group_clone', 'vc_param_group_clone' ); /** * @since 4.4 */ function vc_param_group_clone() { vc_user_access() ->checkAdminNonce() ->validateDie() ->wpAny( 'edit_posts', 'edit_pages' ) ->validateDie(); $param = vc_post_param( 'param' ); $value = vc_post_param( 'value' ); $tag = vc_post_param( 'shortcode' ); die( vc_param_group_clone_by_data( $tag, json_decode( urldecode( $param ), true ), json_decode( urldecode( $value ), true ) ) ); } /** * @param $tag * @param $params * @param $data * * @since 4.4 * @return mixed|string */ function vc_param_group_clone_by_data( $tag, $params, $data ) { $output = ''; $params['base'] = $tag; $edit_form = new Vc_ParamGroup_Edit_Form_Fields( $params ); $edit_form->loadDefaultParams(); $template = vc_include_template( 'params/param_group/content.tpl.php' ); $output .= $template; $value_block = "
      "; $data = $data[0]; if ( isset( $params['params'] ) && is_array( $params['params'] ) ) { foreach ( $params['params'] as $param ) { $param_data = isset( $data[ $param['param_name'] ] ) ? $data[ $param['param_name'] ] : ( isset( $param['value'] ) ? $param['value'] : '' ); $param['param_name'] = $params['param_name'] . '_' . $param['param_name']; $value_block .= $edit_form->renderField( $param, $param_data ); } } $value_block .= '
      '; $output = str_replace( '%content%', $value_block, $output ); return $output; } /** * @param $atts_string * * @since 4.4 * @return array|mixed */ function vc_param_group_parse_atts( $atts_string ) { $array = json_decode( urldecode( $atts_string ), true ); return $array; } add_filter( 'vc_map_get_param_defaults', 'vc_param_group_param_defaults', 10, 2 ); function vc_param_group_param_defaults( $value, $param ) { if ( 'param_group' === $param['type'] && isset( $param['params'] ) && empty( $value ) ) { $defaults = vc_map_get_params_defaults( $param['params'] ); $value = urlencode( json_encode( array( $defaults ) ) ); } return $value; } PK<\-include/params/google_fonts/.google_fonts.phpnu[PK<\س??,include/params/google_fonts/google_fonts.phpnu[ array( * array( * 'type' => 'google_fonts', * 'param_name' => 'google_fonts', * 'value' => '',// Not recommended, this will override 'settings'. Example: * 'font_family:'.rawurlencode('Exo:100,100italic,200,200italic,300,300italic,regular,italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic').'|font_style:'.rawurlencode('900 * bold italic:900:italic'), * 'settings' => array( * 'fields'=>array( * 'font_family'=>'Abril Fatface:regular',// * 'Exo:100,100italic,200,200italic,300,300italic,regular,italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic', * Default font family and all available styles to fetch * 'font_style'=>'400 regular:400:normal', // Default font style. Name:weight:style, example: * "800 bold regular:800:normal" * 'font_family_description' => __('Select font family.','js_composer'), * 'font_style_description' => __('Select font styling.','js_composer') * ) * ), * 'description' => __( 'Description for this group', 'js_composer' ), // Description for field group * ), * ) */ class Vc_Google_Fonts { public $fonts_list = '[{"font_family":"Abril Fatface","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"ABeeZee","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Abel","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Aclonica","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Acme","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Actor","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Adamina","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Advent Pro","font_styles":"100,200,300,regular,500,600,700","font_types":"100 light regular:100:normal,200 light regular:200:normal,300 light regular:300:normal,400 regular:400:normal,500 bold regular:500:normal,600 bold regular:600:normal,700 bold regular:700:normal"},{"font_family":"Aguafina Script","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Akronim","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Aladin","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Aldrich","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Alef","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Alegreya","font_styles":"regular,italic,700,700italic,900,900italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Alegreya SC","font_styles":"regular,italic,700,700italic,900,900italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Alegreya Sans","font_styles":"100,100italic,300,300italic,regular,italic,500,500italic,700,700italic,800,800italic,900,900italic","font_types":"100 light regular:100:normal,100 light italic:100:italic,300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,500 bold regular:500:normal,500 bold italic:500:italic,700 bold regular:700:normal,700 bold italic:700:italic,800 bold regular:800:normal,800 bold italic:800:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Alegreya Sans SC","font_styles":"100,100italic,300,300italic,regular,italic,500,500italic,700,700italic,800,800italic,900,900italic","font_types":"100 light regular:100:normal,100 light italic:100:italic,300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,500 bold regular:500:normal,500 bold italic:500:italic,700 bold regular:700:normal,700 bold italic:700:italic,800 bold regular:800:normal,800 bold italic:800:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Alex Brush","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Alfa Slab One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Alice","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Alike","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Alike Angular","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Allan","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Allerta","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Allerta Stencil","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Allura","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Almendra","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Almendra Display","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Almendra SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Amarante","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Amaranth","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Amatic SC","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Amethysta","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Anaheim","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Andada","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Andika","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Angkor","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Annie Use Your Telescope","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Anonymous Pro","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Antic","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Antic Didone","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Antic Slab","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Anton","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Arapey","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Arbutus","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Arbutus Slab","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Architects Daughter","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Archivo Black","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Archivo Narrow","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Arimo","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Arizonia","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Armata","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Artifika","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Arvo","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Asap","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Asset","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Astloch","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Asul","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Atomic Age","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Aubrey","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Audiowide","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Autour One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Average","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Average Sans","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Averia Gruesa Libre","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Averia Libre","font_styles":"300,300italic,regular,italic,700,700italic","font_types":"300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Averia Sans Libre","font_styles":"300,300italic,regular,italic,700,700italic","font_types":"300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Averia Serif Libre","font_styles":"300,300italic,regular,italic,700,700italic","font_types":"300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Bad Script","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Balthazar","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bangers","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Basic","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Battambang","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Baumans","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bayon","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Belgrano","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Belleza","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"BenchNine","font_styles":"300,regular,700","font_types":"300 light regular:300:normal,400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Bentham","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Berkshire Swash","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bevan","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bigelow Rules","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bigshot One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bilbo","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bilbo Swash Caps","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bitter","font_styles":"regular,italic,700","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal"},{"font_family":"Black Ops One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bokor","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bonbon","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Boogaloo","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bowlby One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bowlby One SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Brawler","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bree Serif","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bubblegum Sans","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bubbler One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Buda","font_styles":"300","font_types":"300 light regular:300:normal"},{"font_family":"Buenard","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Butcherman","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Butterfly Kids","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Cabin","font_styles":"regular,italic,500,500italic,600,600italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,500 bold regular:500:normal,500 bold italic:500:italic,600 bold regular:600:normal,600 bold italic:600:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Cabin Condensed","font_styles":"regular,500,600,700","font_types":"400 regular:400:normal,500 bold regular:500:normal,600 bold regular:600:normal,700 bold regular:700:normal"},{"font_family":"Cabin Sketch","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Caesar Dressing","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Cagliostro","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Calligraffitti","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Cambo","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Candal","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Cantarell","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Cantata One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Cantora One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Capriola","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Cardo","font_styles":"regular,italic,700","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal"},{"font_family":"Carme","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Carrois Gothic","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Carrois Gothic SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Carter One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Caudex","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Cedarville Cursive","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Ceviche One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Changa One","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Chango","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Chau Philomene One","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Chela One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Chelsea Market","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Chenla","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Cherry Cream Soda","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Cherry Swash","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Chewy","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Chicle","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Chivo","font_styles":"regular,italic,900,900italic","font_types":"400 regular:400:normal,400 italic:400:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Cinzel","font_styles":"regular,700,900","font_types":"400 regular:400:normal,700 bold regular:700:normal,900 bold regular:900:normal"},{"font_family":"Cinzel Decorative","font_styles":"regular,700,900","font_types":"400 regular:400:normal,700 bold regular:700:normal,900 bold regular:900:normal"},{"font_family":"Clicker Script","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Coda","font_styles":"regular,800","font_types":"400 regular:400:normal,800 bold regular:800:normal"},{"font_family":"Coda Caption","font_styles":"800","font_types":"800 bold regular:800:normal"},{"font_family":"Codystar","font_styles":"300,regular","font_types":"300 light regular:300:normal,400 regular:400:normal"},{"font_family":"Combo","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Comfortaa","font_styles":"300,regular,700","font_types":"300 light regular:300:normal,400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Coming Soon","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Concert One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Condiment","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Content","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Contrail One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Convergence","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Cookie","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Copse","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Corben","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Courgette","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Cousine","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Coustard","font_styles":"regular,900","font_types":"400 regular:400:normal,900 bold regular:900:normal"},{"font_family":"Covered By Your Grace","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Crafty Girls","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Creepster","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Crete Round","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Crimson Text","font_styles":"regular,italic,600,600italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,600 bold regular:600:normal,600 bold italic:600:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Croissant One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Crushed","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Cuprum","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Cutive","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Cutive Mono","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Damion","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Dancing Script","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Dangrek","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Dawning of a New Day","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Days One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Delius","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Delius Swash Caps","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Delius Unicase","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Della Respira","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Denk One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Devonshire","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Didact Gothic","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Diplomata","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Diplomata SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Domine","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Donegal One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Doppio One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Dorsa","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Dosis","font_styles":"200,300,regular,500,600,700,800","font_types":"200 light regular:200:normal,300 light regular:300:normal,400 regular:400:normal,500 bold regular:500:normal,600 bold regular:600:normal,700 bold regular:700:normal,800 bold regular:800:normal"},{"font_family":"Dr Sugiyama","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Droid Sans","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Droid Sans Mono","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Droid Serif","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Duru Sans","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Dynalight","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"EB Garamond","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Eagle Lake","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Eater","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Economica","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Electrolize","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Elsie","font_styles":"regular,900","font_types":"400 regular:400:normal,900 bold regular:900:normal"},{"font_family":"Elsie Swash Caps","font_styles":"regular,900","font_types":"400 regular:400:normal,900 bold regular:900:normal"},{"font_family":"Emblema One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Emilys Candy","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Engagement","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Englebert","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Enriqueta","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Erica One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Esteban","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Euphoria Script","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Ewert","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Exo","font_styles":"100,100italic,200,200italic,300,300italic,regular,italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic","font_types":"100 light regular:100:normal,100 light italic:100:italic,200 light regular:200:normal,200 light italic:200:italic,300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,500 bold regular:500:normal,500 bold italic:500:italic,600 bold regular:600:normal,600 bold italic:600:italic,700 bold regular:700:normal,700 bold italic:700:italic,800 bold regular:800:normal,800 bold italic:800:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Exo 2","font_styles":"100,100italic,200,200italic,300,300italic,regular,italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic","font_types":"100 light regular:100:normal,100 light italic:100:italic,200 light regular:200:normal,200 light italic:200:italic,300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,500 bold regular:500:normal,500 bold italic:500:italic,600 bold regular:600:normal,600 bold italic:600:italic,700 bold regular:700:normal,700 bold italic:700:italic,800 bold regular:800:normal,800 bold italic:800:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Expletus Sans","font_styles":"regular,italic,500,500italic,600,600italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,500 bold regular:500:normal,500 bold italic:500:italic,600 bold regular:600:normal,600 bold italic:600:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Fanwood Text","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Fascinate","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Fascinate Inline","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Faster One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Fasthand","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Fauna One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Federant","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Federo","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Felipa","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Fenix","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Finger Paint","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Fira Mono","font_styles":"400,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Fira Sans","font_styles":"300,300italic,400,400italic,500,500italic,700,700italic","font_types":"300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,500 bold regular:500:normal,500 bold italic:500:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Fjalla One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Fjord One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Flamenco","font_styles":"300,regular","font_types":"300 light regular:300:normal,400 regular:400:normal"},{"font_family":"Flavors","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Fondamento","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Fontdiner Swanky","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Forum","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Francois One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Freckle Face","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Fredericka the Great","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Fredoka One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Freehand","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Fresca","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Frijole","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Fruktur","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Fugaz One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"GFS Didot","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"GFS Neohellenic","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Gabriela","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Gafata","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Galdeano","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Galindo","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Gentium Basic","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Gentium Book Basic","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Geo","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Geostar","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Geostar Fill","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Germania One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Gilda Display","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Give You Glory","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Glass Antiqua","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Glegoo","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Gloria Hallelujah","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Goblin One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Gochi Hand","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Gorditas","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Goudy Bookletter 1911","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Graduate","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Grand Hotel","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Gravitas One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Great Vibes","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Griffy","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Gruppo","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Gudea","font_styles":"regular,italic,700","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal"},{"font_family":"Habibi","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Hammersmith One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Hanalei","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Hanalei Fill","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Handlee","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Hanuman","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Happy Monkey","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Headland One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Henny Penny","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Herr Von Muellerhoff","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Hind","font_styles":"300,regular,500,600,700","font_types":"300 light regular:300:normal,400 regular:400:normal,500 bold regular:500:normal,600 bold regular:600:normal,700 bold regular:700:normal"},{"font_family":"Holtwood One SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Homemade Apple","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Homenaje","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"IM Fell DW Pica","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"IM Fell DW Pica SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"IM Fell Double Pica","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"IM Fell Double Pica SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"IM Fell English","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"IM Fell English SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"IM Fell French Canon","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"IM Fell French Canon SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"IM Fell Great Primer","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"IM Fell Great Primer SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Iceberg","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Iceland","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Imprima","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Inconsolata","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Inder","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Indie Flower","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Inika","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Irish Grover","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Istok Web","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Italiana","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Italianno","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Jacques Francois","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Jacques Francois Shadow","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Jim Nightshade","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Jockey One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Jolly Lodger","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Josefin Sans","font_styles":"100,100italic,300,300italic,regular,italic,600,600italic,700,700italic","font_types":"100 light regular:100:normal,100 light italic:100:italic,300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,600 bold regular:600:normal,600 bold italic:600:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Josefin Slab","font_styles":"100,100italic,300,300italic,regular,italic,600,600italic,700,700italic","font_types":"100 light regular:100:normal,100 light italic:100:italic,300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,600 bold regular:600:normal,600 bold italic:600:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Joti One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Judson","font_styles":"regular,italic,700","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal"},{"font_family":"Julee","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Julius Sans One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Junge","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Jura","font_styles":"300,regular,500,600","font_types":"300 light regular:300:normal,400 regular:400:normal,500 bold regular:500:normal,600 bold regular:600:normal"},{"font_family":"Just Another Hand","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Just Me Again Down Here","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Kameron","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Kantumruy","font_styles":"300,regular,700","font_types":"300 light regular:300:normal,400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Karla","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Kaushan Script","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Kavoon","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Kdam Thmor","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Keania One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Kelly Slab","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Kenia","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Khmer","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Kite One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Knewave","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Kotta One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Koulen","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Kranky","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Kreon","font_styles":"300,regular,700","font_types":"300 light regular:300:normal,400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Kristi","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Krona One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"La Belle Aurore","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Lancelot","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Lato","font_styles":"100,100italic,300,300italic,regular,italic,700,700italic,900,900italic","font_types":"100 light regular:100:normal,100 light italic:100:italic,300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"League Script","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Leckerli One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Ledger","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Lekton","font_styles":"regular,italic,700","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal"},{"font_family":"Lemon","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Libre Baskerville","font_styles":"regular,italic,700","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal"},{"font_family":"Life Savers","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Lilita One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Lily Script One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Limelight","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Linden Hill","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Lobster","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Lobster Two","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Londrina Outline","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Londrina Shadow","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Londrina Sketch","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Londrina Solid","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Lora","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Love Ya Like A Sister","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Loved by the King","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Lovers Quarrel","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Luckiest Guy","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Lusitana","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Lustria","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Macondo","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Macondo Swash Caps","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Magra","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Maiden Orange","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Mako","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Marcellus","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Marcellus SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Marck Script","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Margarine","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Marko One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Marmelad","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Marvel","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Mate","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Mate SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Maven Pro","font_styles":"regular,500,700,900","font_types":"400 regular:400:normal,500 bold regular:500:normal,700 bold regular:700:normal,900 bold regular:900:normal"},{"font_family":"McLaren","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Meddon","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"MedievalSharp","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Medula One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Megrim","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Meie Script","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Merienda","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Merienda One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Merriweather","font_styles":"300,300italic,regular,italic,700,700italic,900,900italic","font_types":"300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Merriweather Sans","font_styles":"300,300italic,regular,italic,700,700italic,800,800italic","font_types":"300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic,800 bold regular:800:normal,800 bold italic:800:italic"},{"font_family":"Metal","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Metal Mania","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Metamorphous","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Metrophobic","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Michroma","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Milonga","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Miltonian","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Miltonian Tattoo","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Miniver","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Miss Fajardose","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Modern Antiqua","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Molengo","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Molle","font_styles":"italic","font_types":"400 italic:400:italic"},{"font_family":"Monda","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Monofett","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Monoton","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Monsieur La Doulaise","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Montaga","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Montez","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Montserrat","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Montserrat Alternates","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Montserrat Subrayada","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Moul","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Moulpali","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Mountains of Christmas","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Mouse Memoirs","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Mr Bedfort","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Mr Dafoe","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Mr De Haviland","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Mrs Saint Delafield","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Mrs Sheppards","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Muli","font_styles":"300,300italic,regular,italic","font_types":"300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic"},{"font_family":"Mystery Quest","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Neucha","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Neuton","font_styles":"200,300,regular,italic,700,800","font_types":"200 light regular:200:normal,300 light regular:300:normal,400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,800 bold regular:800:normal"},{"font_family":"New Rocker","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"News Cycle","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Niconne","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Nixie One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Nobile","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Nokora","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Norican","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Nosifer","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Nothing You Could Do","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Noticia Text","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Noto Sans","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Noto Serif","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Nova Cut","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Nova Flat","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Nova Mono","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Nova Oval","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Nova Round","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Nova Script","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Nova Slim","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Nova Square","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Numans","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Nunito","font_styles":"300,regular,700","font_types":"300 light regular:300:normal,400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Odor Mean Chey","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Offside","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Old Standard TT","font_styles":"regular,italic,700","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal"},{"font_family":"Oldenburg","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Oleo Script","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Oleo Script Swash Caps","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Open Sans","font_styles":"300,300italic,regular,italic,600,600italic,700,700italic,800,800italic","font_types":"300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,600 bold regular:600:normal,600 bold italic:600:italic,700 bold regular:700:normal,700 bold italic:700:italic,800 bold regular:800:normal,800 bold italic:800:italic"},{"font_family":"Open Sans Condensed","font_styles":"300,300italic,700","font_types":"300 light regular:300:normal,300 light italic:300:italic,700 bold regular:700:normal"},{"font_family":"Oranienbaum","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Orbitron","font_styles":"regular,500,700,900","font_types":"400 regular:400:normal,500 bold regular:500:normal,700 bold regular:700:normal,900 bold regular:900:normal"},{"font_family":"Oregano","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Orienta","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Original Surfer","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Oswald","font_styles":"300,regular,700","font_types":"300 light regular:300:normal,400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Over the Rainbow","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Overlock","font_styles":"regular,italic,700,700italic,900,900italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Overlock SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Ovo","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Oxygen","font_styles":"300,regular,700","font_types":"300 light regular:300:normal,400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Oxygen Mono","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"PT Mono","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"PT Sans","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"PT Sans Caption","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"PT Sans Narrow","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"PT Serif","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"PT Serif Caption","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Pacifico","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Paprika","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Parisienne","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Passero One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Passion One","font_styles":"regular,700,900","font_types":"400 regular:400:normal,700 bold regular:700:normal,900 bold regular:900:normal"},{"font_family":"Pathway Gothic One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Patrick Hand","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Patrick Hand SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Patua One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Paytone One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Peralta","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Permanent Marker","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Petit Formal Script","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Petrona","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Philosopher","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Piedra","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Pinyon Script","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Pirata One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Plaster","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Play","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Playball","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Playfair Display","font_styles":"regular,italic,700,700italic,900,900italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Playfair Display SC","font_styles":"regular,italic,700,700italic,900,900italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Podkova","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Poiret One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Poller One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Poly","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Pompiere","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Pontano Sans","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Port Lligat Sans","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Port Lligat Slab","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Prata","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Preahvihear","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Press Start 2P","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Princess Sofia","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Prociono","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Prosto One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Puritan","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Purple Purse","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Quando","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Quantico","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Quattrocento","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Quattrocento Sans","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Questrial","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Quicksand","font_styles":"300,regular,700","font_types":"300 light regular:300:normal,400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Quintessential","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Qwigley","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Racing Sans One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Radley","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Raleway","font_styles":"100,200,300,regular,500,600,700,800,900","font_types":"100 light regular:100:normal,200 light regular:200:normal,300 light regular:300:normal,400 regular:400:normal,500 bold regular:500:normal,600 bold regular:600:normal,700 bold regular:700:normal,800 bold regular:800:normal,900 bold regular:900:normal"},{"font_family":"Raleway Dots","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Rambla","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Rammetto One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Ranchers","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Rancho","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Rationale","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Redressed","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Reenie Beanie","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Revalia","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Ribeye","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Ribeye Marrow","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Righteous","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Risque","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Roboto","font_styles":"100,100italic,300,300italic,regular,italic,500,500italic,700,700italic,900,900italic","font_types":"100 light regular:100:normal,100 light italic:100:italic,300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,500 bold regular:500:normal,500 bold italic:500:italic,700 bold regular:700:normal,700 bold italic:700:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Roboto Condensed","font_styles":"300,300italic,regular,italic,700,700italic","font_types":"300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Roboto Slab","font_styles":"100,300,regular,700","font_types":"100 light regular:100:normal,300 light regular:300:normal,400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Rochester","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Rock Salt","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Rokkitt","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Romanesco","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Ropa Sans","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Rosario","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Rosarivo","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Rouge Script","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Rubik Mono One","font_styles":"400","font_types":"400 regular:400:normal"},{"font_family":"Rubik One","font_styles":"400","font_types":"400 regular:400:normal"},{"font_family":"Ruda","font_styles":"regular,700,900","font_types":"400 regular:400:normal,700 bold regular:700:normal,900 bold regular:900:normal"},{"font_family":"Rufina","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Ruge Boogie","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Ruluko","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Rum Raisin","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Ruslan Display","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Russo One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Ruthie","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Rye","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sacramento","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sail","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Salsa","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sanchez","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Sancreek","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sansita One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sarina","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Satisfy","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Scada","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Schoolbell","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Seaweed Script","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sevillana","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Seymour One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Shadows Into Light","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Shadows Into Light Two","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Shanti","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Share","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Share Tech","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Share Tech Mono","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Shojumaru","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Short Stack","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Siemreap","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sigmar One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Signika","font_styles":"300,regular,600,700","font_types":"300 light regular:300:normal,400 regular:400:normal,600 bold regular:600:normal,700 bold regular:700:normal"},{"font_family":"Signika Negative","font_styles":"300,regular,600,700","font_types":"300 light regular:300:normal,400 regular:400:normal,600 bold regular:600:normal,700 bold regular:700:normal"},{"font_family":"Simonetta","font_styles":"regular,italic,900,900italic","font_types":"400 regular:400:normal,400 italic:400:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Sintony","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Sirin Stencil","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Six Caps","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Skranji","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Slackey","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Smokum","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Smythe","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sniglet","font_styles":"regular,800","font_types":"400 regular:400:normal,800 bold regular:800:normal"},{"font_family":"Snippet","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Snowburst One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sofadi One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sofia","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sonsie One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sorts Mill Goudy","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Source Code Pro","font_styles":"200,300,regular,500,600,700,900","font_types":"200 light regular:200:normal,300 light regular:300:normal,400 regular:400:normal,500 bold regular:500:normal,600 bold regular:600:normal,700 bold regular:700:normal,900 bold regular:900:normal"},{"font_family":"Source Sans Pro","font_styles":"200,200italic,300,300italic,regular,italic,600,600italic,700,700italic,900,900italic","font_types":"200 light regular:200:normal,200 light italic:200:italic,300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,600 bold regular:600:normal,600 bold italic:600:italic,700 bold regular:700:normal,700 bold italic:700:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Source Serif Pro","font_styles":"400,600,700","font_types":"400 regular:400:normal,600 bold regular:600:normal,700 bold regular:700:normal"},{"font_family":"Special Elite","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Spicy Rice","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Spinnaker","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Spirax","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Squada One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Stalemate","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Stalinist One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Stardos Stencil","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Stint Ultra Condensed","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Stint Ultra Expanded","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Stoke","font_styles":"300,regular","font_types":"300 light regular:300:normal,400 regular:400:normal"},{"font_family":"Strait","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sue Ellen Francisco","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sunshiney","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Supermercado One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Suwannaphum","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Swanky and Moo Moo","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Syncopate","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Tangerine","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Taprom","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Tauri","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Telex","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Tenor Sans","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Text Me One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"The Girl Next Door","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Tienne","font_styles":"regular,700,900","font_types":"400 regular:400:normal,700 bold regular:700:normal,900 bold regular:900:normal"},{"font_family":"Tinos","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Titan One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Titillium Web","font_styles":"200,200italic,300,300italic,regular,italic,600,600italic,700,700italic,900","font_types":"200 light regular:200:normal,200 light italic:200:italic,300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,600 bold regular:600:normal,600 bold italic:600:italic,700 bold regular:700:normal,700 bold italic:700:italic,900 bold regular:900:normal"},{"font_family":"Trade Winds","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Trocchi","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Trochut","font_styles":"regular,italic,700","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal"},{"font_family":"Trykker","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Tulpen One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Ubuntu","font_styles":"300,300italic,regular,italic,500,500italic,700,700italic","font_types":"300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,500 bold regular:500:normal,500 bold italic:500:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Ubuntu Condensed","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Ubuntu Mono","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Ultra","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Uncial Antiqua","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Underdog","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Unica One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"UnifrakturCook","font_styles":"700","font_types":"700 bold regular:700:normal"},{"font_family":"UnifrakturMaguntia","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Unkempt","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Unlock","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Unna","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"VT323","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Vampiro One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Varela","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Varela Round","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Vast Shadow","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Vibur","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Vidaloka","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Viga","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Voces","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Volkhov","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Vollkorn","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Voltaire","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Waiting for the Sunrise","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Wallpoet","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Walter Turncoat","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Warnes","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Wellfleet","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Wendy One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Wire One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Yanone Kaffeesatz","font_styles":"200,300,regular,700","font_types":"200 light regular:200:normal,300 light regular:300:normal,400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Yellowtail","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Yeseva One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Yesteryear","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Zeyada","font_styles":"regular","font_types":"400 regular:400:normal"}]'; /** * @param $settings * @param $value * * @since 4.3 * @return string */ public function render( $settings, $value ) { $fields = array(); $values = array(); $set = isset( $settings['settings'], $settings['settings']['fields'] ) ? $settings['settings']['fields'] : array(); extract( $this->_vc_google_fonts_parse_attributes( $set, $value ) ); ob_start(); include vc_path_dir( 'TEMPLATES_DIR', 'params/google_fonts/template.php' ); return ob_get_clean(); } /** * * Load google fonts list for param * To change this list use add_filters('vc_google_fonts_get_fonts_filter','your_custom_function'); and change array * vc_filter: vc_google_fonts_get_fonts_filter * @since 4.3 * @return array List of available fonts as array of objects. {"font_family":"Abril * Fatface","font_styles":"regular","font_types":"400 regular:400:normal"} * * @return array */ public function _vc_google_fonts_get_fonts() { return apply_filters( 'vc_google_fonts_get_fonts_filter', json_decode( $this->fonts_list ) ); } /** * @param $attr * @param $value * * @since 4.3 * @return array */ public function _vc_google_fonts_parse_attributes( $attr, $value ) { $fields = array(); if ( is_array( $attr ) && ! empty( $attr ) ) { foreach ( $attr as $key => $val ) { if ( is_numeric( $key ) ) { $fields[ $val ] = ''; } else { $fields[ $key ] = $val; } } } $values = vc_parse_multi_attribute( $value, array( 'font_family' => isset( $fields['font_family'] ) ? $fields['font_family'] : '', 'font_style' => isset( $fields['font_style'] ) ? $fields['font_style'] : '', 'font_family_description' => isset( $fields['font_family_description'] ) ? $fields['font_family_description'] : '', 'font_style_description' => isset( $fields['font_style_description'] ) ? $fields['font_style_description'] : '', ) ); return array( 'fields' => $fields, 'values' => $values ); } } /** * Function for rendering param in edit form (add element) * Parse settings from vc_map and entered values. * * @param $settings * @param $value * * @since 4.3 * vc_filter: vc_google_fonts_render_filter * @return mixed|void rendered template for params in edit form * */ function vc_google_fonts_form_field( $settings, $value ) { $google_fonts = new Vc_Google_Fonts(); return apply_filters( 'vc_google_fonts_render_filter', $google_fonts->render( $settings, $value ) ); } PK<\|^"^",include/params/autocomplete/autocomplete.phpnu[tag = $tag; $this->settings = $settings; $this->value = $value; } /** * @since 4.4 * vc_filter: vc_autocomplete_{shortcode_tag}_{param_name}_render - hook to define output for autocomplete item * @return string */ public function render() { $output = '
      ' . '
        '; if ( isset( $this->value ) && strlen( $this->value ) > 0 ) { $values = explode( ',', $this->value ); foreach ( $values as $key => $val ) { $value = array( 'value' => trim( $val ), 'label' => trim( $val ), ); if ( isset( $this->settings['settings'], $this->settings['settings']['values'] ) && ! empty( $this->settings['settings']['values'] ) ) { foreach ( $this->settings['settings']['values'] as $data ) { if ( trim( $data['value'] ) == trim( $val ) ) { $value['label'] = $data['label']; break; } } } else { // Magic is here. this filter is used to render value correctly ( must return array with 'value', 'label' keys ) $value = apply_filters( 'vc_autocomplete_' . $this->tag . '_' . $this->settings['param_name'] . '_render', $value, $this->settings, $this->tag ); } if ( is_array( $value ) && isset( $value['value'], $value['label'] ) ) { $output .= '
      • ' . $value['label'] . ' ×
      • '; } } } $output .= '
      • ' . '
      • ' . '
      '; $output .= 'settings['settings'] ) && ! empty( $this->settings['settings'] ) ) ? ' data-settings="' . htmlentities( json_encode( $this->settings['settings'] ), ENT_QUOTES, 'utf-8' ) . '" ' : '' ) . ' />
      '; return $output; } } /** * @action wp_ajax_vc_get_autocomplete_suggestion - since 4.4 used to hook ajax requests for autocomplete suggestions */ add_action( 'wp_ajax_vc_get_autocomplete_suggestion', 'vc_get_autocomplete_suggestion' ); /** * @since 4.4 */ function vc_get_autocomplete_suggestion() { vc_user_access() ->checkAdminNonce() ->validateDie() ->wpAny( 'edit_posts', 'edit_pages' ) ->validateDie(); $query = vc_post_param( 'query' ); $tag = strip_tags( vc_post_param( 'shortcode' ) ); $param_name = vc_post_param( 'param' ); vc_render_suggestion( $query, $tag, $param_name ); } /** * @since 4.4 * * @param $query * @param $tag * @param $param_name * * vc_filter: vc_autocomplete_{tag}_{param_name}_callback - hook to get suggestions from ajax. (here you need to hook). */ function vc_render_suggestion( $query, $tag, $param_name ) { $suggestions = apply_filters( 'vc_autocomplete_' . stripslashes( $tag ) . '_' . stripslashes( $param_name ) . '_callback', $query, $tag, $param_name ); if ( is_array( $suggestions ) && ! empty( $suggestions ) ) { die( json_encode( $suggestions ) ); } die( '' ); // if nothing found.. } /** * Function for rendering param in edit form (add element) * Parse settings from vc_map and entered values. * * @param $settings * @param $value * @param $tag * * @since 4.4 * vc_filter: vc_autocomplete_render_filter - hook to override output of edit for field "autocomplete" * @return mixed|void rendered template for params in edit form */ function vc_autocomplete_form_field( $settings, $value, $tag ) { $auto_complete = new Vc_AutoComplete( $settings, $value, $tag ); return apply_filters( 'vc_autocomplete_render_filter', $auto_complete->render() ); } // Some examples /* vc_map( array( 'name' => __( 'Check autocomplete', 'js_composer' ), 'base' => 'vc_some_autocomplete', 'icon' => 'icon-wpb-empty_space', 'category' => __( 'New Elements', 'js_composer' ), 'description' => __( 'Something cool and best', 'js_composer' ), 'params' => array( array( 'type' => 'autocomplete', 'heading' => __( 'Type a for example', 'js_composer' ), 'param_name' => 'ids', 'settings' => array( 'multiple' => true, 'sortable' => true, 'min_length' => 1, 'no_hide' => true, // In UI after select doesn't hide an select list 'groups' => true, // In UI show results grouped by groups 'unique_values' => true, // In UI show results except selected. NB! You should manually check values in backend 'display_inline' => true, // In UI show results inline view 'values' => array( // Using key 'values' will disable an AJAX requests on autocomplete input and also any filter for suggestions array( 'label' => 'Abrams', 'value' => 1, 'group' => 'category' ), array( 'label' => 'Brama', 'value' => 2, 'group' => 'category' ), array( 'label' => 'Dron', 'value' => 3, 'group' => 'tags' ), array( 'label' => 'Akelloam', 'value' => 4, 'group' => 'tags' ), // Label will show when adding // Value will saved in input // Group only used if groups=>true, this will group data in select dropdown by groups ), ), 'description' => __( '', 'js_composer' ), ), ), ) ); // Or with AJAX suggester: See \js_composer\include\classes\vendors\plugins\class-vc-vendor-woocommerce.php vc_map( array( 'name' => __( 'Product', 'js_composer' ), 'base' => 'product', 'icon' => 'icon-wpb-woocommerce', 'category' => __( 'WooCommerce', 'js_composer' ), 'description' => __( 'Show a single product by ID or SKU', 'js_composer' ), 'params' => array( array( 'type' => 'autocomplete', 'heading' => __( 'Select identificator', 'js_composer' ), 'param_name' => 'id', 'description' => __( 'Input product ID or product SKU or product title to see suggestions', 'js_composer' ), ), array( 'type' => 'hidden', // This will not show on render, but will be used when defining value for autocomplete 'param_name' => 'sku', ), ) ) ); //Filters For autocomplete param: //For suggestion: vc_autocomplete_[shortcode_name]_[param_name]_callback add_filter( 'vc_autocomplete_product_id_callback', array( $this, 'productIdAutocompleteSuggester' ), 10, 1 ); // Get suggestion(find). Must return an array add_filter( 'vc_autocomplete_product_id_render', array( $this, 'productIdAutocompleteRender' ), 10, 1 ); // Render exact item. Must return an array (label,value) function productIdAutocompleteSuggester($query) -> should proccess your request, and return an multi-dimension associative array with keys 'label', 'value' and if necessary 'group' function productIdAutocompleteRender($value) -> should proccess your request (for 1 exact item from "value") and return an associative array with keys 'label','value' and if necessary 'group' */ PK<\-include/params/autocomplete/.autocomplete.phpnu[PK<\" --include/helpers/helpers.phpnu[ null, 'attach_id' => null, 'thumb_size' => 'thumbnail', 'class' => '', ), $params ); if ( ! $params['thumb_size'] ) { $params['thumb_size'] = 'thumbnail'; } if ( ! $params['attach_id'] && ! $params['post_id'] ) { return false; } $post_id = $params['post_id']; $attach_id = $post_id ? get_post_thumbnail_id( $post_id ) : $params['attach_id']; $attach_id = apply_filters( 'vc_object_id', $attach_id ); $thumb_size = $params['thumb_size']; $thumb_class = ( isset( $params['class'] ) && '' !== $params['class'] ) ? $params['class'] . ' ' : ''; global $_wp_additional_image_sizes; $thumbnail = ''; if ( is_string( $thumb_size ) && ( ( ! empty( $_wp_additional_image_sizes[ $thumb_size ] ) && is_array( $_wp_additional_image_sizes[ $thumb_size ] ) ) || in_array( $thumb_size, array( 'thumbnail', 'thumb', 'medium', 'large', 'full', ) ) ) ) { $attributes = array( 'class' => $thumb_class . 'attachment-' . $thumb_size ); $thumbnail = wp_get_attachment_image( $attach_id, $thumb_size, false, $attributes ); } elseif ( $attach_id ) { if ( is_string( $thumb_size ) ) { preg_match_all( '/\d+/', $thumb_size, $thumb_matches ); if ( isset( $thumb_matches[0] ) ) { $thumb_size = array(); $count = count( $thumb_matches[0] ); if ( $count > 1 ) { $thumb_size[] = $thumb_matches[0][0]; // width $thumb_size[] = $thumb_matches[0][1]; // height } elseif ( 1 === $count ) { $thumb_size[] = $thumb_matches[0][0]; // width $thumb_size[] = $thumb_matches[0][0]; // height } else { $thumb_size = false; } } } if ( is_array( $thumb_size ) ) { // Resize image to custom size $p_img = wpb_resize( $attach_id, null, $thumb_size[0], $thumb_size[1], true ); $alt = trim( strip_tags( get_post_meta( $attach_id, '_wp_attachment_image_alt', true ) ) ); $attachment = get_post( $attach_id ); if ( ! empty( $attachment ) ) { $title = trim( strip_tags( $attachment->post_title ) ); if ( empty( $alt ) ) { $alt = trim( strip_tags( $attachment->post_excerpt ) ); // If not, Use the Caption } if ( empty( $alt ) ) { $alt = $title; } // Finally, use the title if ( $p_img ) { $attributes = vc_stringify_attributes( array( 'class' => $thumb_class, 'src' => $p_img['url'], 'width' => $p_img['width'], 'height' => $p_img['height'], 'alt' => $alt, 'title' => $title, ) ); $thumbnail = ''; } } } } $p_img_large = wp_get_attachment_image_src( $attach_id, 'large' ); return apply_filters( 'vc_wpb_getimagesize', array( 'thumbnail' => $thumbnail, 'p_img_large' => $p_img_large, ), $attach_id, $params ); } function vc_get_image_by_size( $id, $size ) { global $_wp_additional_image_sizes; if ( is_string( $size ) && ( ( ! empty( $_wp_additional_image_sizes[ $size ] ) && is_array( $_wp_additional_image_sizes[ $size ] ) ) || in_array( $size, array( 'thumbnail', 'thumb', 'medium', 'large', 'full', ) ) ) ) { return wp_get_attachment_image_src( $id, $size ); } else { if ( is_string( $size ) ) { preg_match_all( '/\d+/', $size, $thumb_matches ); if ( isset( $thumb_matches[0] ) ) { $size = array(); $count = count( $thumb_matches[0] ); if ( $count > 1 ) { $size[] = $thumb_matches[0][0]; // width $size[] = $thumb_matches[0][1]; // height } elseif ( 1 === $count ) { $size[] = $thumb_matches[0][0]; // width $size[] = $thumb_matches[0][0]; // height } else { $size = false; } } } if ( is_array( $size ) ) { // Resize image to custom size $p_img = wpb_resize( $id, null, $size[0], $size[1], true ); return $p_img['url']; } } return ''; } /* Convert vc_col-sm-3 to 1/4 ---------------------------------------------------------- */ /** * @param $width * * @since 4.2 * @return string */ function wpb_translateColumnWidthToFractional( $width ) { switch ( $width ) { case 'vc_col-sm-2' : $w = '1/6'; break; case 'vc_col-sm-3' : $w = '1/4'; break; case 'vc_col-sm-4' : $w = '1/3'; break; case 'vc_col-sm-6' : $w = '1/2'; break; case 'vc_col-sm-8' : $w = '2/3'; break; case 'vc_col-sm-9' : $w = '3/4'; break; case 'vc_col-sm-12' : $w = '1/1'; break; default : $w = is_string( $width ) ? $width : '1/1'; } return $w; } /** * @param $width * * @since 4.2 * @return bool|string */ function wpb_translateColumnWidthToSpan( $width ) { preg_match( '/(\d+)\/(\d+)/', $width, $matches ); if ( ! empty( $matches ) ) { $part_x = (int) $matches[1]; $part_y = (int) $matches[2]; if ( $part_x > 0 && $part_y > 0 ) { $value = ceil( $part_x / $part_y * 12 ); if ( $value > 0 && $value <= 12 ) { $width = 'vc_col-sm-' . $value; } } } return $width; } /** * @param $content * @param bool $autop * * @since 4.2 * @return string */ function wpb_js_remove_wpautop( $content, $autop = false ) { if ( $autop ) { // Possible to use !preg_match('('.WPBMap::getTagsRegexp().')', $content) $content = wpautop( preg_replace( '/<\/?p\>/', "\n", $content ) . "\n" ); } return do_shortcode( shortcode_unautop( $content ) ); } if ( ! function_exists( 'shortcode_exists' ) ) { /** * Check if a shortcode is registered in WordPress. * * Examples: shortcode_exists( 'caption' ) - will return true. * shortcode_exists( 'blah' ) - will return false. * * @param bool $shortcode * * @since 4.2 * @return bool */ function shortcode_exists( $shortcode = false ) { global $shortcode_tags; if ( ! $shortcode ) { return false; } if ( array_key_exists( $shortcode, $shortcode_tags ) ) { return true; } return false; } } /* Helper function which returns list of site attached images, and if image is attached to the current post it adds class 'added' ---------------------------------------------------------- */ if ( ! function_exists( 'vc_siteAttachedImages' ) ) { /** * @param array $att_ids * * @since 4.11 * @return string */ function vc_siteAttachedImages( $att_ids = array() ) { $output = ''; $limit = (int) apply_filters( 'vc_site_attached_images_query_limit', - 1 ); $media_images = get_posts( 'post_type=attachment&orderby=ID&numberposts=' . $limit ); foreach ( $media_images as $image_post ) { $thumb_src = wp_get_attachment_image_src( $image_post->ID, 'thumbnail' ); $thumb_src = $thumb_src[0]; $class = ( in_array( $image_post->ID, $att_ids ) ) ? ' class="added"' : ''; $output .= ' ' . __( 'Added', 'js_composer' ) . ' '; } if ( '' !== $output ) { $output = ''; } return $output; } } /** * @param array $images IDs or srcs of images * * @since 4.2 * @return string */ function fieldAttachedImages( $images = array() ) { $output = ''; foreach ( $images as $image ) { if ( is_numeric( $image ) ) { $thumb_src = wp_get_attachment_image_src( $image, 'thumbnail' ); $thumb_src = isset( $thumb_src[0] ) ? $thumb_src[0] : ''; } else { $thumb_src = $image; } if ( $thumb_src ) { $output .= '
    • '; } } return $output; } /** * @param $param_value * * @since 4.2 * @return array */ function wpb_removeNotExistingImgIDs( $param_value ) { $tmp = explode( ',', $param_value ); $return_ar = array(); foreach ( $tmp as $id ) { if ( wp_get_attachment_image( $id ) ) { $return_ar[] = $id; } } $tmp = implode( ',', $return_ar ); return $tmp; } /* * Resize images dynamically using wp built in functions * Victor Teixeira * * php 5.2+ * * Exemplo de uso: * * * * */ if ( ! function_exists( 'wpb_resize' ) ) { /** * @param int $attach_id * @param string $img_url * @param int $width * @param int $height * @param bool $crop * * @since 4.2 * @return array */ function wpb_resize( $attach_id = null, $img_url = null, $width, $height, $crop = false ) { // this is an attachment, so we have the ID $image_src = array(); if ( $attach_id ) { $image_src = wp_get_attachment_image_src( $attach_id, 'full' ); $actual_file_path = get_attached_file( $attach_id ); // this is not an attachment, let's use the image url } elseif ( $img_url ) { $file_path = parse_url( $img_url ); $actual_file_path = rtrim( ABSPATH, '/' ) . $file_path['path']; $orig_size = getimagesize( $actual_file_path ); $image_src[0] = $img_url; $image_src[1] = $orig_size[0]; $image_src[2] = $orig_size[1]; } if ( ! empty( $actual_file_path ) ) { $file_info = pathinfo( $actual_file_path ); $extension = '.' . $file_info['extension']; // the image path without the extension $no_ext_path = $file_info['dirname'] . '/' . $file_info['filename']; $cropped_img_path = $no_ext_path . '-' . $width . 'x' . $height . $extension; // checking if the file size is larger than the target size // if it is smaller or the same size, stop right here and return if ( $image_src[1] > $width || $image_src[2] > $height ) { // the file is larger, check if the resized version already exists (for $crop = true but will also work for $crop = false if the sizes match) if ( file_exists( $cropped_img_path ) ) { $cropped_img_url = str_replace( basename( $image_src[0] ), basename( $cropped_img_path ), $image_src[0] ); $vt_image = array( 'url' => $cropped_img_url, 'width' => $width, 'height' => $height, ); return $vt_image; } if ( false == $crop ) { // calculate the size proportionaly $proportional_size = wp_constrain_dimensions( $image_src[1], $image_src[2], $width, $height ); $resized_img_path = $no_ext_path . '-' . $proportional_size[0] . 'x' . $proportional_size[1] . $extension; // checking if the file already exists if ( file_exists( $resized_img_path ) ) { $resized_img_url = str_replace( basename( $image_src[0] ), basename( $resized_img_path ), $image_src[0] ); $vt_image = array( 'url' => $resized_img_url, 'width' => $proportional_size[0], 'height' => $proportional_size[1], ); return $vt_image; } } // no cache files - let's finally resize it $img_editor = wp_get_image_editor( $actual_file_path ); if ( is_wp_error( $img_editor ) || is_wp_error( $img_editor->resize( $width, $height, $crop ) ) ) { return array( 'url' => '', 'width' => '', 'height' => '', ); } $new_img_path = $img_editor->generate_filename(); if ( is_wp_error( $img_editor->save( $new_img_path ) ) ) { return array( 'url' => '', 'width' => '', 'height' => '', ); } if ( ! is_string( $new_img_path ) ) { return array( 'url' => '', 'width' => '', 'height' => '', ); } $new_img_size = getimagesize( $new_img_path ); $new_img = str_replace( basename( $image_src[0] ), basename( $new_img_path ), $image_src[0] ); // resized output $vt_image = array( 'url' => $new_img, 'width' => $new_img_size[0], 'height' => $new_img_size[1], ); return $vt_image; } // default output - without resizing $vt_image = array( 'url' => $image_src[0], 'width' => $image_src[1], 'height' => $image_src[2], ); return $vt_image; } return false; } } if ( ! function_exists( 'wpb_debug' ) ) { /** * Returns bool if wpb_debug is provided in url - set WPBakery Page Builder debug mode. * Used for example in shortcodes (end block comment for example) * @since 4.2 * @return bool */ function wpb_debug() { if ( ( isset( $_GET['wpb_debug'] ) && 'true' === $_GET['wpb_debug'] ) || ( isset( $_GET['vc_debug'] ) && 'true' === $_GET['vc_debug'] ) ) { return true; } else { return false; } } } /** * Method adds css class to body tag. * * Hooked class method by body_class WP filter. Method adds custom css class to body tag of the page to help * identify and build design specially for VC shortcodes. * Used in wp-content/plugins/js_composer/include/classes/core/class-vc-base.php\Vc_Base\bodyClass * * @param $classes * * @since 4.2 * @return array */ function js_composer_body_class( $classes ) { $classes[] = 'wpb-js-composer js-comp-ver-' . WPB_VC_VERSION; $disable_responsive = vc_settings()->get( 'not_responsive_css' ); if ( '1' !== $disable_responsive ) { $classes[] = 'vc_responsive'; } else { $classes[] = 'vc_non_responsive'; } return $classes; } /** * @param $m * * @since 4.2 * @return string */ function vc_convert_shortcode( $m ) { list( $output, $m_one, $tag, $attr_string, $m_four, $content ) = $m; if ( 'vc_row' === $tag || 'vc_section' === $tag ) { return $output; } $result = $width = $el_position = ''; $shortcode_attr = shortcode_parse_atts( $attr_string ); extract( shortcode_atts( array( 'width' => '1/1', 'el_class' => '', 'el_position' => '', ), $shortcode_attr ) ); // Start if ( preg_match( '/first/', $el_position ) || empty( $shortcode_attr['width'] ) || '1/1' === $shortcode_attr['width'] ) { $result = '[vc_row]'; } if ( 'vc_column' !== $tag ) { $result .= '[vc_column width="' . $width . '"]'; } // Tag $pattern = get_shortcode_regex(); if ( 'vc_column' === $tag ) { $result .= "[{$m_one}{$tag} {$attr_string}]" . preg_replace_callback( "/{$pattern}/s", 'vc_convert_inner_shortcode', $content ) . "[/{$tag}{$m_four}]"; } elseif ( 'vc_tabs' === $tag || 'vc_accordion' === $tag || 'vc_tour' === $tag ) { $result .= "[{$m_one}{$tag} {$attr_string}]" . preg_replace_callback( "/{$pattern}/s", 'vc_convert_tab_inner_shortcode', $content ) . "[/{$tag}{$m_four}]"; } else { $result .= preg_replace( '/(\"\d\/\d\")/', '"1/1"', $output ); } // End if ( 'vc_column' !== $tag ) { $result .= '[/vc_column]'; } if ( preg_match( '/last/', $el_position ) || empty( $shortcode_attr['width'] ) || '1/1' === $shortcode_attr['width'] ) { $result .= '[/vc_row]' . "\n"; } return trim( $result ); } /** * @param $m * * @since 4.2 * @return string */ function vc_convert_tab_inner_shortcode( $m ) { list( $output, $m_one, $tag, $attr_string, $m_four, $content ) = $m; $result = $width = $el_position = ''; extract( shortcode_atts( array( 'width' => '1/1', 'el_class' => '', 'el_position' => '', ), shortcode_parse_atts( $attr_string ) ) ); $pattern = get_shortcode_regex(); $result .= "[{$m_one}{$tag} {$attr_string}]" . preg_replace_callback( "/{$pattern}/s", 'vc_convert_inner_shortcode', $content ) . "[/{$tag}{$m_four}]"; return $result; } /** * @param $m * * @since 4.2 * @return string */ function vc_convert_inner_shortcode( $m ) { list( $output, $m_one, $tag, $attr_string, $m_four, $content ) = $m; $result = $width = $el_position = ''; extract( shortcode_atts( array( 'width' => '1/1', 'el_class' => '', 'el_position' => '', ), shortcode_parse_atts( $attr_string ) ) ); if ( '1/1' !== $width ) { if ( preg_match( '/first/', $el_position ) ) { $result .= '[vc_row_inner]'; } $result .= "\n" . '[vc_column_inner width="' . esc_attr( $width ) . '" el_position="' . esc_attr( $el_position ) . '"]'; $attr = ''; foreach ( shortcode_parse_atts( $attr_string ) as $key => $value ) { if ( 'width' === $key ) { $value = '1/1'; } elseif ( 'el_position' === $key ) { $value = 'first last'; } $attr .= ' ' . $key . '="' . $value . '"'; } $result .= "[{$m_one}{$tag} {$attr}]" . $content . "[/{$tag}{$m_four}]"; $result .= '[/vc_column_inner]'; if ( preg_match( '/last/', $el_position ) ) { $result .= '[/vc_row_inner]' . "\n"; } } else { $result = $output; } return $result; } global $vc_row_layouts; $vc_row_layouts = array( /* * How to count mask? * mask = column_count . sum of all numbers. Example layout 12_12 mask = (column count=2)(1+2+1+2=6)= 26 */ array( 'cells' => '11', 'mask' => '12', 'title' => '1/1', 'icon_class' => '1-1', ), array( 'cells' => '12_12', 'mask' => '26', 'title' => '1/2 + 1/2', 'icon_class' => '1-2_1-2', ), array( 'cells' => '23_13', 'mask' => '29', 'title' => '2/3 + 1/3', 'icon_class' => '2-3_1-3', ), array( 'cells' => '13_13_13', 'mask' => '312', 'title' => '1/3 + 1/3 + 1/3', 'icon_class' => '1-3_1-3_1-3', ), array( 'cells' => '14_14_14_14', 'mask' => '420', 'title' => '1/4 + 1/4 + 1/4 + 1/4', 'icon_class' => '1-4_1-4_1-4_1-4', ), array( 'cells' => '14_34', 'mask' => '212', 'title' => '1/4 + 3/4', 'icon_class' => '1-4_3-4', ), array( 'cells' => '14_12_14', 'mask' => '313', 'title' => '1/4 + 1/2 + 1/4', 'icon_class' => '1-4_1-2_1-4', ), array( 'cells' => '56_16', 'mask' => '218', 'title' => '5/6 + 1/6', 'icon_class' => '5-6_1-6', ), array( 'cells' => '16_16_16_16_16_16', 'mask' => '642', 'title' => '1/6 + 1/6 + 1/6 + 1/6 + 1/6 + 1/6', 'icon_class' => '1-6_1-6_1-6_1-6_1-6_1-6', ), array( 'cells' => '16_23_16', 'mask' => '319', 'title' => '1/6 + 4/6 + 1/6', 'icon_class' => '1-6_2-3_1-6', ), array( 'cells' => '16_16_16_12', 'mask' => '424', 'title' => '1/6 + 1/6 + 1/6 + 1/2', 'icon_class' => '1-6_1-6_1-6_1-2', ), ); /** * @param $width * * @since 4.2 * @return string */ function wpb_vc_get_column_width_indent( $width ) { $identy = '11'; if ( 'vc_col-sm-6' === $width ) { $identy = '12'; } elseif ( 'vc_col-sm-3' === $width ) { $identy = '14'; } elseif ( 'vc_col-sm-4' === $width ) { $identy = '13'; } elseif ( 'vc_col-sm-8' === $width ) { $identy = '23'; } elseif ( 'vc_col-sm-9' === $width ) { $identy = '34'; } elseif ( 'vc_col-sm-2' === $width ) { $identy = '16'; // TODO: check why there is no "vc_col-sm-1, -5, -6, -7, -11, -12. } elseif ( 'vc_col-sm-10' === $width ) { $identy = '56'; } return $identy; } /* Make any HEX color lighter or darker ---------------------------------------------------------- */ /** * @param $colour * @param $per * * @since 4.2 * @return string */ function vc_colorCreator( $colour, $per = 10 ) { require_once 'class-vc-color-helper.php'; $color = $colour; if ( stripos( $colour, 'rgba(' ) !== false ) { $rgb = str_replace( array( 'rgba', 'rgb', '(', ')', ), '', $colour ); $rgb = explode( ',', $rgb ); $rgb_array = array( 'R' => $rgb[0], 'G' => $rgb[1], 'B' => $rgb[2], ); $alpha = $rgb[3]; try { $color = Vc_Color_Helper::rgbToHex( $rgb_array ); $color_obj = new Vc_Color_Helper( $color ); if ( $per >= 0 ) { $color = $color_obj->lighten( $per ); } else { $color = $color_obj->darken( abs( $per ) ); } $rgba = $color_obj->hexToRgb( $color ); $rgba[] = $alpha; $css_rgba_color = 'rgba(' . implode( ', ', $rgba ) . ')'; return $css_rgba_color; } catch ( Exception $e ) { // In case of error return same as given return $colour; } } else if ( stripos( $colour, 'rgb(' ) !== false ) { $rgb = str_replace( array( 'rgba', 'rgb', '(', ')', ), '', $colour ); $rgb = explode( ',', $rgb ); $rgb_array = array( 'R' => $rgb[0], 'G' => $rgb[1], 'B' => $rgb[2], ); try { $color = Vc_Color_Helper::rgbToHex( $rgb_array ); } catch ( Exception $e ) { // In case of error return same as given return $colour; } } try { $color_obj = new Vc_Color_Helper( $color ); if ( $per >= 0 ) { $color = $color_obj->lighten( $per ); } else { $color = $color_obj->darken( abs( $per ) ); } return '#' . $color; } catch ( Exception $e ) { return $colour; } } /* HEX to RGB converter ---------------------------------------------------------- */ /** * @param $color * * @since 4.2 * @return array|bool */ function vc_hex2rgb( $color ) { $color = str_replace( '#', '', $color ); if ( strlen( $color ) === 6 ) { list( $r, $g, $b ) = array( $color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5], ); } elseif ( strlen( $color ) === 3 ) { list( $r, $g, $b ) = array( $color[0] . $color[0], $color[1] . $color[1], $color[2] . $color[2], ); } else { return false; } $r = hexdec( $r ); $g = hexdec( $g ); $b = hexdec( $b ); return array( $r, $g, $b, ); } /** * Parse string like "title:Hello world|weekday:Monday" to array('title' => 'Hello World', 'weekday' => 'Monday') * * @param $value * @param array $default * * @since 4.2 * @return array */ function vc_parse_multi_attribute( $value, $default = array() ) { $result = $default; $params_pairs = explode( '|', $value ); if ( ! empty( $params_pairs ) ) { foreach ( $params_pairs as $pair ) { $param = preg_split( '/\:/', $pair ); if ( ! empty( $param[0] ) && isset( $param[1] ) ) { $result[ $param[0] ] = rawurldecode( $param[1] ); } } } return $result; } /** * @param $v * * @since 4.2 * @return string */ function vc_param_options_parse_values( $v ) { return rawurldecode( $v ); } /** * @param $name * @param $settings * * @since 4.2 * @return bool */ function vc_param_options_get_settings( $name, $settings ) { if ( is_array( $settings ) ) { foreach ( $settings as $params ) { if ( isset( $params['name'] ) && $params['name'] === $name && isset( $params['type'] ) ) { return $params; } } } return false; } /** * @param $atts * * @since 4.2 * @return string */ function vc_convert_atts_to_string( $atts ) { $output = ''; foreach ( $atts as $key => $value ) { $output .= ' ' . $key . '="' . $value . '"'; } return $output; } /** * @param $string * @param $tag * @param $param * * @since 4.2 * @return array */ function vc_parse_options_string( $string, $tag, $param ) { $options = $option_settings_list = array(); $settings = WPBMap::getParam( $tag, $param ); foreach ( preg_split( '/\|/', $string ) as $value ) { if ( preg_match( '/\:/', $value ) ) { $split = preg_split( '/\:/', $value ); $option_name = $split[0]; $option_settings = $option_settings_list[ $option_name ] = vc_param_options_get_settings( $option_name, $settings['options'] ); if ( isset( $option_settings['type'] ) && 'checkbox' === $option_settings['type'] ) { $option_value = array_map( 'vc_param_options_parse_values', preg_split( '/\,/', $split[1] ) ); } else { $option_value = rawurldecode( $split[1] ); } $options[ $option_name ] = $option_value; } } if ( isset( $settings['options'] ) ) { foreach ( $settings['options'] as $setting_option ) { if ( 'separator' !== $setting_option['type'] && isset( $setting_option['value'] ) && empty( $options[ $setting_option['name'] ] ) ) { $options[ $setting_option['name'] ] = 'checkbox' === $setting_option['type'] ? preg_split( '/\,/', $setting_option['value'] ) : $setting_option['value']; } if ( isset( $setting_option['name'] ) && isset( $options[ $setting_option['name'] ] ) && isset( $setting_option['value_type'] ) ) { if ( 'integer' === $setting_option['value_type'] ) { $options[ $setting_option['name'] ] = (int) $options[ $setting_option['name'] ]; } elseif ( 'float' === $setting_option['value_type'] ) { $options[ $setting_option['name'] ] = (float) $options[ $setting_option['name'] ]; } elseif ( 'boolean' === $setting_option['value_type'] ) { $options[ $setting_option['name'] ] = (boolean) $options[ $setting_option['name'] ]; } } } } return $options; } /** * Convert string to a valid css class name. * * @since 4.3 * * @param string $class * * @return string */ function vc_build_safe_css_class( $class ) { return preg_replace( '/\W+/', '', strtolower( str_replace( ' ', '_', strip_tags( $class ) ) ) ); } /** * Include template from templates dir. * * @since 4.3 * * @param $template * @param array $variables - passed variables to the template. * * @param bool $once * * @return mixed */ function vc_include_template( $template, $variables = array(), $once = false ) { is_array( $variables ) && extract( $variables ); if ( $once ) { return require_once vc_template( $template ); } else { return require vc_template( $template ); } } /** * Output template from templates dir. * * @since 4.4 * * @param $template * @param array $variables - passed variables to the template. * * @param bool $once * * @return string */ function vc_get_template( $template, $variables = array(), $once = false ) { ob_start(); vc_include_template( $template, $variables, $once ); return ob_get_clean(); } /** * if php version < 5.3 this function is required. */ if ( ! function_exists( 'lcfirst' ) ) { /** * @param $str * * @since 4.3, fix #1093 * @return mixed */ function lcfirst( $str ) { $str[0] = function_exists( 'mb_strtolower' ) ? mb_strtolower( $str[0] ) : strtolower( $str[0] ); return $str; } } /** * VC Convert a value to studly caps case. * * @since 4.3 * * @param string $value * * @return string */ function vc_studly( $value ) { $value = ucwords( str_replace( array( '-', '_', ), ' ', $value ) ); return str_replace( ' ', '', $value ); } /** * VC Convert a value to camel case. * * @since 4.3 * * @param string $value * * @return string */ function vc_camel_case( $value ) { return lcfirst( vc_studly( $value ) ); } /** * Enqueue icon element font * @todo move to separate folder * @since 4.4 * * @param $font */ function vc_icon_element_fonts_enqueue( $font ) { switch ( $font ) { case 'fontawesome': wp_enqueue_style( 'font-awesome' ); break; case 'openiconic': wp_enqueue_style( 'vc_openiconic' ); break; case 'typicons': wp_enqueue_style( 'vc_typicons' ); break; case 'entypo': wp_enqueue_style( 'vc_entypo' ); break; case 'linecons': wp_enqueue_style( 'vc_linecons' ); break; case 'monosocial': wp_enqueue_style( 'vc_monosocialiconsfont' ); break; case 'material': wp_enqueue_style( 'vc_material' ); break; default: do_action( 'vc_enqueue_font_icon_element', $font ); // hook to custom do enqueue style } } /** * Function merges defaults attributes in attributes by keeping it values * * Example * array defaults | array attributes | result array * 'color'=>'black', - 'color'=>'black', * 'target'=>'_self', 'target'=>'_blank', 'target'=>'_blank', * - 'link'=>'google.com' 'link'=>'google.com' * * @since 4.4 * * @param array $defaults * @param array $attributes * * @return array - merged attributes * * @see vc_map_get_attributes */ function vc_shortcode_attribute_parse( $defaults = array(), $attributes = array() ) { $atts = $attributes + shortcode_atts( $defaults, $attributes ); return $atts; } function vc_get_shortcode_regex( $tagregexp = '' ) { if ( 0 === strlen( $tagregexp ) ) { return get_shortcode_regex(); } return '\\[' // Opening bracket . '(\\[?)' // 1: Optional second opening bracket for escaping shortcodes: [[tag]] . "($tagregexp)" // 2: Shortcode name . '(?![\\w-])' // Not followed by word character or hyphen . '(' // 3: Unroll the loop: Inside the opening shortcode tag . '[^\\]\\/]*' // Not a closing bracket or forward slash . '(?:' . '\\/(?!\\])' // A forward slash not followed by a closing bracket . '[^\\]\\/]*' // Not a closing bracket or forward slash . ')*?' . ')' . '(?:' . '(\\/)' // 4: Self closing tag ... . '\\]' // ... and closing bracket . '|' . '\\]' // Closing bracket . '(?:' . '(' // 5: Unroll the loop: Optionally, anything between the opening and closing shortcode tags . '[^\\[]*+' // Not an opening bracket . '(?:' . '\\[(?!\\/\\2\\])' // An opening bracket not followed by the closing shortcode tag . '[^\\[]*+' // Not an opening bracket . ')*+' . ')' . '\\[\\/\\2\\]' // Closing shortcode tag . ')?' . ')' . '(\\]?)'; } /** * Used to send warning message * * @since 4.5 * * @param $message * * @return string */ function vc_message_warning( $message ) { return '

      ' . $message . '

      '; } /** * Extract video ID from youtube url * * @param string $url Youtube url * * @return string */ function vc_extract_youtube_id( $url ) { parse_str( parse_url( $url, PHP_URL_QUERY ), $vars ); if ( ! isset( $vars['v'] ) ) { return ''; } return $vars['v']; } function vc_taxonomies_types() { global $vc_taxonomies_types; if ( is_null( $vc_taxonomies_types ) ) { $vc_taxonomies_types = get_taxonomies( array( 'public' => true ), 'objects' ); } return $vc_taxonomies_types; } /** * Since * * @since 4.5.3 * * @param $term * * @return array */ function vc_get_term_object( $term ) { $vc_taxonomies_types = vc_taxonomies_types(); return array( 'label' => $term->name, 'value' => $term->term_id, 'group_id' => $term->taxonomy, 'group' => isset( $vc_taxonomies_types[ $term->taxonomy ], $vc_taxonomies_types[ $term->taxonomy ]->labels, $vc_taxonomies_types[ $term->taxonomy ]->labels->name ) ? $vc_taxonomies_types[ $term->taxonomy ]->labels->name : __( 'Taxonomies', 'js_composer' ), ); } /** * Extract width/height from string * * @param string $dimensions WxH * * @since 4.7 * * @return mixed array(width, height) or false */ function vcExtractDimensions( $dimensions ) { $dimensions = str_replace( ' ', '', $dimensions ); $matches = null; if ( preg_match( '/(\d+)x(\d+)/', $dimensions, $matches ) ) { return array( $matches[1], $matches[2], ); } return false; } /** * Check if element has specific class * * E.g. f('foo', 'foo bar baz') -> true * * @param string $class Class to check for * @param string $classes Classes separated by space(s) * * @return bool */ function vc_has_class( $class, $classes ) { return in_array( $class, explode( ' ', strtolower( $classes ) ) ); } /** * Remove specific class from classes string * * E.g. f('foo', 'foo bar baz') -> 'bar baz' * * @param string $class Class to remove * @param string $classes Classes separated by space(s) * * @return string */ function vc_remove_class( $class, $classes ) { $list_classes = explode( ' ', strtolower( $classes ) ); $key = array_search( $class, $list_classes, true ); if ( false === $key ) { return $classes; } unset( $list_classes[ $key ] ); return implode( ' ', $list_classes ); } /** * Convert array of named params to string version * All values will be escaped * * E.g. f(array('name' => 'foo', 'id' => 'bar')) -> 'name="foo" id="bar"' * * @param $attributes * * @return string */ function vc_stringify_attributes( $attributes ) { $atts = array(); foreach ( $attributes as $name => $value ) { $atts[] = $name . '="' . esc_attr( $value ) . '"'; } return implode( ' ', $atts ); } function vc_is_responsive_disabled() { $disable_responsive = vc_settings()->get( 'not_responsive_css' ); return '1' === $disable_responsive; } /** * Do shortcode single render point * * @param $atts * @param null $content * @param null $tag * * @return string */ function vc_do_shortcode( $atts, $content = null, $tag = null ) { return Vc_Shortcodes_Manager::getInstance()->getElementClass( $tag )->output( $atts, $content ); } /** * Return random string * * @param int $length * * @return string */ function vc_random_string( $length = 10 ) { $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $len = strlen( $characters ); $str = ''; for ( $i = 0; $i < $length; $i ++ ) { $str .= $characters[ rand( 0, $len - 1 ) ]; } return $str; } function vc_slugify( $str ) { $str = strtolower( $str ); $str = html_entity_decode( $str ); $str = preg_replace( '/[^\w ]+/', '', $str ); $str = preg_replace( '/ +/', '-', $str ); return $str; } PK<\߉?b.b.)include/helpers/class-vc-color-helper.phpnu[ * Info: http://mexitek.github.io/phpColors/ * License: http://arlo.mit-license.org/ * * @modified by js_composer * @since 4.8 */ class Vc_Color_Helper { /** * A color utility that helps manipulate HEX colors */ private $_hex; private $_hsl; private $_rgb; /** * Auto darkens/lightens by 10% for sexily-subtle gradients. * Set this to FALSE to adjust automatic shade to be between given color * and black (for darken) or white (for lighten) */ const DEFAULT_ADJUST = 10; /** * Instantiates the class with a HEX value * * @param string $hex * * @throws Exception "Bad color format" */ function __construct( $hex ) { // Strip # sign is present $color = str_replace( '#', '', $hex ); // Make sure it's 6 digits if ( strlen( $color ) === 3 ) { $color = $color[0] . $color[0] . $color[1] . $color[1] . $color[2] . $color[2]; } else if ( strlen( $color ) != 6 ) { throw new Exception( 'HEX color needs to be 6 or 3 digits long' ); } $this->_hsl = self::hexToHsl( $color ); $this->_hex = $color; $this->_rgb = self::hexToRgb( $color ); } public static function clamp( $val, $max = 1 ) { return min( max( $val, 0 ), $max ); } // ==================== // = Public Interface = // ==================== /** * Given a HEX string returns a HSL array equivalent. * * @param string $color * * @return array HSL associative array */ public static function hexToHsl( $color ) { // Sanity check $color = self::_checkHex( $color ); // Convert HEX to DEC $R = hexdec( $color[0] . $color[1] ); $G = hexdec( $color[2] . $color[3] ); $B = hexdec( $color[4] . $color[5] ); $HSL = array(); $var_R = ( $R / 255.0 ); $var_G = ( $G / 255.0 ); $var_B = ( $B / 255.0 ); $var_Min = min( $var_R, $var_G, $var_B ); $var_Max = max( $var_R, $var_G, $var_B ); $del_Max = floatval( $var_Max - $var_Min ); $L = ( $var_Max + $var_Min ) / 2.0; $H = 0.0; $S = 0.0; if ( 0 != $del_Max ) { if ( $L < 0.5 ) { $S = $del_Max / ( $var_Max + $var_Min ); } else { $S = $del_Max / ( 2 - $var_Max - $var_Min ); } switch ( $var_Max ) { case $var_R: $H = ( $var_G - $var_B ) / $del_Max + ( $var_G < $var_B ? 6 : 0 ); break; case $var_G: $H = ( $var_B - $var_R ) / $del_Max + 2; break; case $var_B: $H = ( $var_R - $var_G ) / $del_Max + 4; break; } $H /= 6; } $HSL['H'] = ( $H * 360.0 ); $HSL['S'] = $S; $HSL['L'] = $L; return $HSL; } /** * Given a HSL associative array returns the equivalent HEX string * * @param array $hsl * * @return string HEX string * @throws Exception "Bad HSL Array" */ public static function hslToHex( $hsl = array() ) { // Make sure it's HSL if ( empty( $hsl ) || ! isset( $hsl['H'] ) || ! isset( $hsl['S'] ) || ! isset( $hsl['L'] ) ) { throw new Exception( 'Param was not an HSL array' ); } list( $H, $S, $L ) = array( fmod( $hsl['H'], 360 ) / 360.0, $hsl['S'], $hsl['L'], ); if ( 0 == $S ) { $r = $L * 255.0; $g = $L * 255.0; $b = $L * 255.0; } else { if ( $L < 0.5 ) { $var_2 = $L * ( 1.0 + $S ); } else { $var_2 = ( $L + $S ) - ( $S * $L ); } $var_1 = 2.0 * $L - $var_2; $r = self::clamp( round( 255.0 * self::_huetorgb( $var_1, $var_2, $H + ( 1 / 3 ) ) ), 255 ); $g = self::clamp( round( 255.0 * self::_huetorgb( $var_1, $var_2, $H ) ), 255 ); $b = self::clamp( round( 255.0 * self::_huetorgb( $var_1, $var_2, $H - ( 1 / 3 ) ) ), 255 ); } // Convert to hex $r = dechex( $r ); $g = dechex( $g ); $b = dechex( $b ); // Make sure we get 2 digits for decimals $r = ( strlen( '' . $r ) === 1 ) ? '0' . $r : $r; $g = ( strlen( '' . $g ) === 1 ) ? '0' . $g : $g; $b = ( strlen( '' . $b ) === 1 ) ? '0' . $b : $b; return $r . $g . $b; } /** * Given a HEX string returns a RGB array equivalent. * * @param string $color * * @return array RGB associative array */ public static function hexToRgb( $color ) { // Sanity check $color = self::_checkHex( $color ); // Convert HEX to DEC $R = hexdec( $color[0] . $color[1] ); $G = hexdec( $color[2] . $color[3] ); $B = hexdec( $color[4] . $color[5] ); $RGB['R'] = $R; $RGB['G'] = $G; $RGB['B'] = $B; return $RGB; } /** * Given an RGB associative array returns the equivalent HEX string * * @param array $rgb * * @return string RGB string * @throws Exception "Bad RGB Array" */ public static function rgbToHex( $rgb = array() ) { // Make sure it's RGB if ( empty( $rgb ) || ! isset( $rgb['R'] ) || ! isset( $rgb['G'] ) || ! isset( $rgb['B'] ) ) { throw new Exception( 'Param was not an RGB array' ); } // Convert RGB to HEX $hex[0] = dechex( $rgb['R'] ); if ( 1 === strlen( $hex[0] ) ) { $hex[0] .= $hex[0]; } $hex[1] = dechex( $rgb['G'] ); if ( 1 === strlen( $hex[1] ) ) { $hex[1] .= $hex[1]; } $hex[2] = dechex( $rgb['B'] ); if ( 1 === strlen( $hex[2] ) ) { $hex[2] .= $hex[2]; } return implode( '', $hex ); } /** * Given a HEX value, returns a darker color. If no desired amount provided, then the color halfway between * given HEX and black will be returned. * * @param int $amount * * @return string Darker HEX value */ public function darken( $amount = self::DEFAULT_ADJUST ) { // Darken $darkerHSL = $this->_darken( $this->_hsl, $amount ); // Return as HEX return self::hslToHex( $darkerHSL ); } /** * Given a HEX value, returns a lighter color. If no desired amount provided, then the color halfway between * given HEX and white will be returned. * * @param int $amount * * @return string Lighter HEX value */ public function lighten( $amount = self::DEFAULT_ADJUST ) { // Lighten $lighterHSL = $this->_lighten( $this->_hsl, $amount ); // Return as HEX return self::hslToHex( $lighterHSL ); } /** * Given a HEX value, returns a mixed color. If no desired amount provided, then the color mixed by this ratio * * @param string $hex2 Secondary HEX value to mix with * @param int $amount = -100..0..+100 * * @return string mixed HEX value */ public function mix( $hex2, $amount = 0 ) { $rgb2 = self::hexToRgb( $hex2 ); $mixed = $this->_mix( $this->_rgb, $rgb2, $amount ); // Return as HEX return self::rgbToHex( $mixed ); } /** * Creates an array with two shades that can be used to make a gradient * * @param int $amount Optional percentage amount you want your contrast color * * @return array An array with a 'light' and 'dark' index */ public function makeGradient( $amount = self::DEFAULT_ADJUST ) { // Decide which color needs to be made if ( $this->isLight() ) { $lightColor = $this->_hex; $darkColor = $this->darken( $amount ); } else { $lightColor = $this->lighten( $amount ); $darkColor = $this->_hex; } // Return our gradient array return array( 'light' => $lightColor, 'dark' => $darkColor ); } /** * Returns whether or not given color is considered "light" * * @param string|Boolean $color * * @return boolean */ public function isLight( $color = false ) { // Get our color $color = ( $color ) ? $color : $this->_hex; // Calculate straight from rbg $r = hexdec( $color[0] . $color[1] ); $g = hexdec( $color[2] . $color[3] ); $b = hexdec( $color[4] . $color[5] ); return ( ( $r * 299 + $g * 587 + $b * 114 ) / 1000 > 130 ); } /** * Returns whether or not a given color is considered "dark" * * @param string|Boolean $color * * @return boolean */ public function isDark( $color = false ) { // Get our color $color = ( $color ) ? $color : $this->_hex; // Calculate straight from rbg $r = hexdec( $color[0] . $color[1] ); $g = hexdec( $color[2] . $color[3] ); $b = hexdec( $color[4] . $color[5] ); return ( ( $r * 299 + $g * 587 + $b * 114 ) / 1000 <= 130 ); } /** * Returns the complimentary color * @return string Complementary hex color * */ public function complementary() { // Get our HSL $hsl = $this->_hsl; // Adjust Hue 180 degrees $hsl['H'] += ( $hsl['H'] > 180 ) ? - 180 : 180; // Return the new value in HEX return self::hslToHex( $hsl ); } /** * Returns your color's HSL array */ public function getHsl() { return $this->_hsl; } /** * Returns your original color */ public function getHex() { return $this->_hex; } /** * Returns your color's RGB array */ public function getRgb() { return $this->_rgb; } // =========================== // = Private Functions Below = // =========================== /** * Darkens a given HSL array * * @param array $hsl * @param int $amount * * @return array $hsl */ private function _darken( $hsl, $amount = self::DEFAULT_ADJUST ) { // Check if we were provided a number if ( $amount ) { $hsl['L'] = ( $hsl['L'] * 100 ) - $amount; $hsl['L'] = ( $hsl['L'] < 0 ) ? 0 : $hsl['L'] / 100; } else { // We need to find out how much to darken $hsl['L'] = $hsl['L'] / 2; } return $hsl; } /** * Lightens a given HSL array * * @param array $hsl * @param int $amount * * @return array $hsl */ private function _lighten( $hsl, $amount = self::DEFAULT_ADJUST ) { // Check if we were provided a number if ( $amount ) { $hsl['L'] = ( $hsl['L'] * 100.0 ) + $amount; $hsl['L'] = ( $hsl['L'] > 100.0 ) ? 1.0 : $hsl['L'] / 100.0; } else { // We need to find out how much to lighten $hsl['L'] += ( 1.0 - $hsl['L'] ) / 2.0; } return $hsl; } /** * Mix 2 rgb colors and return an rgb color * * @param array $rgb1 * @param array $rgb2 * @param int $amount ranged -100..0..+100 * * @return array $rgb * * ported from http://phpxref.pagelines.com/nav.html?includes/class.colors.php.source.html */ private function _mix( $rgb1, $rgb2, $amount = 0 ) { $r1 = ( $amount + 100 ) / 100; $r2 = 2 - $r1; $rmix = ( ( $rgb1['R'] * $r1 ) + ( $rgb2['R'] * $r2 ) ) / 2; $gmix = ( ( $rgb1['G'] * $r1 ) + ( $rgb2['G'] * $r2 ) ) / 2; $bmix = ( ( $rgb1['B'] * $r1 ) + ( $rgb2['B'] * $r2 ) ) / 2; return array( 'R' => $rmix, 'G' => $gmix, 'B' => $bmix ); } /** * Given a Hue, returns corresponding RGB value * * @param int $v1 * @param int $v2 * @param int $vH * * @return int */ private static function _huetorgb( $v1, $v2, $vH ) { if ( $vH < 0 ) { $vH += 1; } if ( $vH > 1 ) { $vH -= 1; } if ( ( 6 * $vH ) < 1 ) { return ( $v1 + ( $v2 - $v1 ) * 6 * $vH ); } if ( ( 2 * $vH ) < 1 ) { return $v2; } if ( ( 3 * $vH ) < 2 ) { return ( $v1 + ( $v2 - $v1 ) * ( ( 2 / 3 ) - $vH ) * 6 ); } return $v1; } /** * You need to check if you were given a good hex string * * @param string $hex * * @return string Color * @throws Exception "Bad color format" */ private static function _checkHex( $hex ) { // Strip # sign is present $color = str_replace( '#', '', $hex ); // Make sure it's 6 digits if ( strlen( $color ) == 3 ) { $color = $color[0] . $color[0] . $color[1] . $color[1] . $color[2] . $color[2]; } else if ( strlen( $color ) != 6 ) { throw new Exception( 'HEX color needs to be 6 or 3 digits long' ); } return $color; } } PK<\ɧinclude/helpers/filters.phpnu['.$params['title'].''; * } * * @param array $params * * @return mixed|string|void */ function wpb_widget_title( $params = array( 'title' => '' ) ) { if ( '' === $params['title'] ) { return ''; } $extraclass = ( isset( $params['extraclass'] ) ) ? ' ' . $params['extraclass'] : ''; $output = '

      ' . $params['title'] . '

      '; return apply_filters( 'wpb_widget_title', $output, $params ); } /* Available filters in default.php wpb_toggle_heading Available filters in buttons.php wpb_cta_text Available filters in teaser_grid.php vc_teaser_grid_title vc_teaser_grid_thumbnail vc_teaser_grid_content vc_teaser_grid_carousel_arrows */ PK<\include/helpers/.helpers.phpnu[PK<\~F~Finclude/helpers/helpers_api.phpnu[setIsAsTheme( true ); } } if ( ! function_exists( 'vc_is_as_theme' ) ) { /** * Is VC as-theme-plugin. * @since 4.2 * @return bool */ function vc_is_as_theme() { return vc_manager()->isAsTheme(); } } if ( ! function_exists( 'vc_is_updater_disabled' ) ) { /** * @since 4.2 * @return bool */ function vc_is_updater_disabled() { return vc_manager()->isUpdaterDisabled(); } } if ( ! function_exists( 'vc_default_editor_post_types' ) ) { /** * Returns list of default post type. * @since 4.2 * @return array */ function vc_default_editor_post_types() { return vc_manager()->editorDefaultPostTypes(); } } if ( ! function_exists( 'vc_set_default_editor_post_types' ) ) { /** * Set post types for VC editor. * @since 4.2 * * @param array $list - list of valid post types to set */ function vc_set_default_editor_post_types( array $list ) { vc_manager()->setEditorDefaultPostTypes( $list ); } } if ( ! function_exists( ( 'vc_editor_post_types' ) ) ) { /** * Returns list of post types where VC editor is enabled. * @since 4.2 * @return array */ function vc_editor_post_types() { return vc_manager()->editorPostTypes(); } } if ( ! function_exists( ( 'vc_editor_set_post_types' ) ) ) { /** * Set list of post types where VC editor is enabled. * @since 4.4 * * @param array $post_types * */ function vc_editor_set_post_types( array $post_types ) { vc_manager()->setEditorPostTypes( $post_types ); } } if ( ! function_exists( 'vc_mode' ) ) { /** * Return current VC mode. * @since 4.2 * @see Vc_Mapper::$mode * @return string */ function vc_mode() { return vc_manager()->mode(); } } if ( ! function_exists( 'vc_set_shortcodes_templates_dir' ) ) { /** * Sets directory where WPBakery Page Builder should look for template files for content elements. * @since 4.2 * * @param string - full directory path to new template directory with trailing slash */ function vc_set_shortcodes_templates_dir( $dir ) { vc_manager()->setCustomUserShortcodesTemplateDir( $dir ); } } if ( ! function_exists( 'vc_shortcodes_theme_templates_dir' ) ) { /** * Get custom theme template path * @since 4.2 * * @param $template - filename for template * * @return string */ function vc_shortcodes_theme_templates_dir( $template ) { return vc_manager()->getShortcodesTemplateDir( $template ); } } /** * @param bool $value * * @todo check usage. * * @since 4.3 */ function set_vc_is_inline( $value = true ) { _deprecated_function( 'set_vc_is_inline', '5.2 (will be removed in 5.3)' ); global $vc_is_inline; $vc_is_inline = $value; } /** * Disable frontend editor for VC * @since 4.3 * * @param bool $disable */ function vc_disable_frontend( $disable = true ) { vc_frontend_editor()->disableInline( $disable ); } /** * Check is front end enabled. * @since 4.3 * @return bool */ function vc_enabled_frontend() { return vc_frontend_editor()->frontendEditorEnabled(); } if ( ! function_exists( 'vc_add_default_templates' ) ) { /** * Add custom template in default templates list * * @param array $data | template data (name, content, custom_class, image_path) * * @since 4.3 * @return bool */ function vc_add_default_templates( $data ) { return visual_composer() ->templatesPanelEditor() ->addDefaultTemplates( $data ); } } function vc_map_integrate_shortcode( $shortcode, $field_prefix = '', $group_prefix = '', $change_fields = null, $dependency = null ) { if ( is_string( $shortcode ) ) { $shortcode_data = WPBMap::getShortCode( $shortcode ); } else { $shortcode_data = $shortcode; } if ( is_array( $shortcode_data ) && ! empty( $shortcode_data ) ) { /** * @var $shortcode WPBakeryShortCodeFishBones */ $params = isset( $shortcode_data['params'] ) && ! empty( $shortcode_data['params'] ) ? $shortcode_data['params'] : false; if ( is_array( $params ) && ! empty( $params ) ) { $keys = array_keys( $params ); for ( $i = 0; $i < count( $keys ); $i ++ ) { $param = &$params[ $keys[ $i ] ]; // Note! passed by reference to automatically update data if ( isset( $change_fields ) ) { $param = vc_map_integrate_include_exclude_fields( $param, $change_fields ); if ( empty( $param ) ) { continue; } } if ( ! empty( $group_prefix ) ) { if ( isset( $param['group'] ) ) { $param['group'] = $group_prefix . ': ' . $param['group']; } else { $param['group'] = $group_prefix; } } if ( ! empty( $field_prefix ) && isset( $param['param_name'] ) ) { $param['param_name'] = $field_prefix . $param['param_name']; if ( isset( $param['dependency'] ) && is_array( $param['dependency'] ) && isset( $param['dependency']['element'] ) ) { $param['dependency']['element'] = $field_prefix . $param['dependency']['element']; } $param = vc_map_integrate_add_dependency( $param, $dependency ); } elseif ( ! empty( $dependency ) ) { $param = vc_map_integrate_add_dependency( $param, $dependency ); } $param['integrated_shortcode'] = is_array( $shortcode ) ? $shortcode['base'] : $shortcode; $param['integrated_shortcode_field'] = $field_prefix; } } return is_array( $params ) ? array_filter( $params ) : array(); } return array(); } /** * Used to filter params (include/exclude) * * @internal * * @param $param * @param $change_fields * * @return array|null */ function vc_map_integrate_include_exclude_fields( $param, $change_fields ) { if ( is_array( $change_fields ) ) { if ( isset( $change_fields['exclude'] ) && in_array( $param['param_name'], $change_fields['exclude'] ) ) { $param = null; return $param; // to prevent group adding to $param } elseif ( isset( $change_fields['exclude_regex'] ) ) { if ( is_array( $change_fields['exclude_regex'] ) && ! empty( $change_fields['exclude_regex'] ) ) { $break_foreach = false; foreach ( $change_fields['exclude_regex'] as $regex ) { if ( false === @preg_match( $regex, null ) ) { // Regular expression is invalid, (don't remove @). } else { if ( preg_match( $regex, $param['param_name'] ) ) { $param = null; $break_foreach = true; } } if ( $break_foreach ) { break; } } if ( $break_foreach ) { return $param; // to prevent group adding to $param } } elseif ( is_string( $change_fields['exclude_regex'] ) && strlen( $change_fields['exclude_regex'] ) > 0 ) { if ( false === @preg_match( $change_fields['exclude_regex'], null ) ) { // Regular expression is invalid, (don't remove @). } else { if ( preg_match( $change_fields['exclude_regex'], $param['param_name'] ) ) { $param = null; return $param; // to prevent group adding to $param } } } } if ( isset( $change_fields['include_only'] ) && ! in_array( $param['param_name'], $change_fields['include_only'] ) ) { // if we want to enclude only some fields $param = null; return $param; // to prevent group adding to $param } elseif ( isset( $change_fields['include_only_regex'] ) ) { if ( is_array( $change_fields['include_only_regex'] ) && ! empty( $change_fields['include_only_regex'] ) ) { $break_foreach = false; foreach ( $change_fields['include_only_regex'] as $regex ) { if ( false === @preg_match( $regex, null ) ) { // Regular expression is invalid, (don't remove @). } else { if ( ! preg_match( $regex, $param['param_name'] ) ) { $param = null; $break_foreach = true; } } if ( $break_foreach ) { break; } } if ( $break_foreach ) { return $param; // to prevent group adding to $param } } elseif ( is_string( $change_fields['include_only_regex'] ) && strlen( $change_fields['include_only_regex'] ) > 0 ) { if ( false === @preg_match( $change_fields['include_only_regex'], null ) ) { // Regular expression is invalid, (don't remove @). } else { if ( ! preg_match( $change_fields['include_only_regex'], $param['param_name'] ) ) { $param = null; return $param; // to prevent group adding to $param } } } } } return $param; } /** * @internal used to add dependency to existed param * * @param $param * @param $dependency * * @return array */ function vc_map_integrate_add_dependency( $param, $dependency ) { // activator must be used for all elements who doesn't have 'dependency' if ( ! empty( $dependency ) && ( ! isset( $param['dependency'] ) || empty( $param['dependency'] ) ) ) { if ( is_array( $dependency ) ) { $param['dependency'] = $dependency; } } return $param; } function vc_map_integrate_get_params( $base_shortcode, $integrated_shortcode, $field_prefix = '' ) { $shortcode_data = WPBMap::getShortCode( $base_shortcode ); $params = array(); if ( is_array( $shortcode_data ) && is_array( $shortcode_data['params'] ) && ! empty( $shortcode_data['params'] ) ) { foreach ( $shortcode_data['params'] as $param ) { if ( is_array( $param ) && isset( $param['integrated_shortcode'] ) && $integrated_shortcode === $param['integrated_shortcode'] ) { if ( ! empty( $field_prefix ) ) { if ( isset( $param['integrated_shortcode_field'] ) && $field_prefix === $param['integrated_shortcode_field'] ) { $params[] = $param; } } else { $params[] = $param; } } } } return $params; } function vc_map_integrate_get_atts( $base_shortcode, $integrated_shortcode, $field_prefix = '' ) { $params = vc_map_integrate_get_params( $base_shortcode, $integrated_shortcode, $field_prefix ); $atts = array(); if ( is_array( $params ) && ! empty( $params ) ) { foreach ( $params as $param ) { $value = ''; if ( isset( $param['value'] ) ) { if ( isset( $param['std'] ) ) { $value = $param['std']; } elseif ( is_array( $param['value'] ) ) { reset( $param['value'] ); $value = current( $param['value'] ); } else { $value = $param['value']; } } $atts[ $param['param_name'] ] = $value; } } return $atts; } function vc_map_integrate_parse_atts( $base_shortcode, $integrated_shortcode, $atts, $field_prefix = '' ) { $params = vc_map_integrate_get_params( $base_shortcode, $integrated_shortcode, $field_prefix ); $data = array(); if ( is_array( $params ) && ! empty( $params ) ) { foreach ( $params as $param ) { if ( isset( $atts[ $param['param_name'] ] ) ) { $value = $atts[ $param['param_name'] ]; } if ( isset( $value ) ) { $key = $param['param_name']; if ( strlen( $field_prefix ) > 0 ) { $key = substr( $key, strlen( $field_prefix ) ); } $data[ $key ] = $value; } } } return $data; } function vc_map_add_css_animation( $label = true ) { $data = array( 'type' => 'animation_style', 'heading' => __( 'CSS Animation', 'js_composer' ), 'param_name' => 'css_animation', 'admin_label' => $label, 'value' => '', 'settings' => array( 'type' => 'in', 'custom' => array( array( 'label' => __( 'Default', 'js_composer' ), 'values' => array( __( 'Top to bottom', 'js_composer' ) => 'top-to-bottom', __( 'Bottom to top', 'js_composer' ) => 'bottom-to-top', __( 'Left to right', 'js_composer' ) => 'left-to-right', __( 'Right to left', 'js_composer' ) => 'right-to-left', __( 'Appear from center', 'js_composer' ) => 'appear', ), ), ), ), 'description' => __( 'Select type of animation for element to be animated when it "enters" the browsers viewport (Note: works only in modern browsers).', 'js_composer' ), ); /* array( 'label' => __( 'Slide Exits', 'js_composer' ), 'values' => array( __( 'slideOutDown', 'js_composer' ) => array( 'value' => 'slideOutDown', 'type' => 'out', ), __( 'slideOutLeft', 'js_composer' ) => array( 'value' => 'slideOutLeft', 'type' => 'out', ), __( 'slideOutRight', 'js_composer' ) => array( 'value' => 'slideOutRight', 'type' => 'out', ), __( 'slideOutUp', 'js_composer' ) => array( 'value' => 'slideOutUp', 'type' => 'out', ), ), ) */ return apply_filters( 'vc_map_add_css_animation', $data, $label ); } /** * Get settings of the mapped shortcode. * * @param $tag * * @since 4.4.3 * @return array|null - settings or null if shortcode not mapped */ function vc_get_shortcode( $tag ) { return WPBMap::getShortCode( $tag ); } /** * Remove all mapped shortcodes and the moment when function is called. * * @since 4.5 */ function vc_remove_all_elements() { WPBMap::dropAllShortcodes(); } /** * Function to get defaults values for shortcode. * @since 4.6 * * @param $tag - shortcode tag * * @return array - list of param=>default_value */ function vc_map_get_defaults( $tag ) { $shortcode = vc_get_shortcode( $tag ); $params = array(); if ( is_array( $shortcode ) && isset( $shortcode['params'] ) && ! empty( $shortcode['params'] ) ) { $params = vc_map_get_params_defaults( $shortcode['params'] ); } return $params; } /** * @param $params * * @since 4.12 * @return array */ function vc_map_get_params_defaults( $params ) { $resultParams = array(); foreach ( $params as $param ) { if ( isset( $param['param_name'] ) && 'content' !== $param['param_name'] ) { $value = ''; if ( isset( $param['std'] ) ) { $value = $param['std']; } elseif ( isset( $param['value'] ) ) { if ( is_array( $param['value'] ) ) { $value = current( $param['value'] ); if ( is_array( $value ) ) { // in case if two-dimensional array provided (vc_basic_grid) $value = current( $value ); } // return first value from array (by default) } else { $value = $param['value']; } } $resultParams[ $param['param_name'] ] = apply_filters( 'vc_map_get_param_defaults', $value, $param ); } } return $resultParams; } /** * @param $tag - shortcode tag3 * @param $atts - shortcode attributes * * @return array - return merged values with provided attributes ( * 'a'=>1,'b'=>2 + 'b'=>3,'c'=>4 --> 'a'=>1,'b'=>3 ) * * @see vc_shortcode_attribute_parse - return union of provided attributes ( * 'a'=>1,'b'=>2 + 'b'=>3,'c'=>4 --> 'a'=>1, * 'b'=>3, 'c'=>4 ) */ function vc_map_get_attributes( $tag, $atts = array() ) { return shortcode_atts( vc_map_get_defaults( $tag ), $atts, $tag ); } function vc_convert_vc_color( $name ) { $colors = array( 'blue' => '#5472d2', 'turquoise' => '#00c1cf', 'pink' => '#fe6c61', 'violet' => '#8d6dc4', 'peacoc' => '#4cadc9', 'chino' => '#cec2ab', 'mulled-wine' => '#50485b', 'vista-blue' => '#75d69c', 'orange' => '#f7be68', 'sky' => '#5aa1e3', 'green' => '#6dab3c', 'juicy-pink' => '#f4524d', 'sandy-brown' => '#f79468', 'purple' => '#b97ebb', 'black' => '#2a2a2a', 'grey' => '#ebebeb', 'white' => '#ffffff', ); $name = str_replace( '_', '-', $name ); if ( isset( $colors[ $name ] ) ) { return $colors[ $name ]; } return ''; } PK<\w%%&include/helpers/helpers_deprecated.phpnu[get( 'row_css_class' ); return ! empty( $custom ) ? $custom : 'vc_row-fluid'; } /* Backwards compatibility **/ /** * @param $attributes * * @deprecated, use vc_map instead */ function wpb_map( $attributes ) { _deprecated_function( 'wpb_map', '4.2 (will be removed in 6.0)', 'vc_map' ); vc_map( $attributes ); } PK<\A8787#include/helpers/helpers_factory.phpnu[vc(); } } if ( ! function_exists( 'vc_mapper' ) ) { /** * Shorthand for Vc Mapper. * @since 4.2 * @return Vc_Mapper */ function vc_mapper() { return vc_manager()->mapper(); } } if ( ! function_exists( 'vc_settings' ) ) { /** * Shorthand for WPBakery Page Builder settings. * @since 4.2 * @return Vc_Settings */ function vc_settings() { return vc_manager()->settings(); } } if ( ! function_exists( 'vc_license' ) ) { /** * Get License manager * @since 4.2 * @return Vc_License */ function vc_license() { return vc_manager()->license(); } } if ( ! function_exists( 'vc_automapper' ) ) { /** * @since 4.2 * @return Vc_Automapper */ function vc_automapper() { return vc_manager()->automapper(); } } if ( ! function_exists( 'vc_frontend_editor' ) ) { /** * Shorthand for VC frontend editor * @since 4.2 * @return Vc_Frontend_Editor */ function vc_frontend_editor() { return vc_manager()->frontendEditor(); } } if ( ! function_exists( 'vc_backend_editor' ) ) { /** * Shorthand for VC frontend editor * @since 4.2 * @return Vc_Backend_Editor */ function vc_backend_editor() { return vc_manager()->backendEditor(); } } if ( ! function_exists( 'vc_updater' ) ) { /** * @since 4.2 * @return Vc_Updater */ function vc_updater() { return vc_manager()->updater(); } } if ( ! function_exists( 'vc_is_network_plugin' ) ) { /** * Vc is network plugin or not. * @since 4.2 * @return bool */ function vc_is_network_plugin() { return vc_manager()->isNetworkPlugin(); } } if ( ! function_exists( 'vc_path_dir' ) ) { /** * Get file/directory path in Vc. * * @param string $name - path name * @param string $file * * @since 4.2 * @return string */ function vc_path_dir( $name, $file = '' ) { return vc_manager()->path( $name, $file ); } } if ( ! function_exists( 'vc_asset_url' ) ) { /** * Get full url for assets. * * @param string $file * * @since 4.2 * @return string */ function vc_asset_url( $file ) { return vc_manager()->assetUrl( $file ); } } if ( ! function_exists( 'vc_upload_dir' ) ) { /** * Temporary files upload dir; * @since 4.2 * @return string */ function vc_upload_dir() { return vc_manager()->uploadDir(); } } if ( ! function_exists( 'vc_template' ) ) { /** * @param $file * * @since 4.2 * @return string */ function vc_template( $file ) { return vc_path_dir( 'TEMPLATES_DIR', $file ); } } if ( ! function_exists( 'vc_post_param' ) ) { /** * Get param value from $_POST if exists. * * @param $param * @param $default * * @since 4.2 * @return null|string - null for undefined param. */ function vc_post_param( $param, $default = null ) { return isset( $_POST[ $param ] ) ? $_POST[ $param ] : $default; } } if ( ! function_exists( 'vc_get_param' ) ) { /** * Get param value from $_GET if exists. * * @param string $param * @param $default * * @since 4.2 * @return null|string - null for undefined param. */ function vc_get_param( $param, $default = null ) { return isset( $_GET[ $param ] ) ? $_GET[ $param ] : $default; } } if ( ! function_exists( 'vc_request_param' ) ) { /** * Get param value from $_REQUEST if exists. * * @param $param * @param $default * * @since 4.4 * @return null|string - null for undefined param. */ function vc_request_param( $param, $default = null ) { return isset( $_REQUEST[ $param ] ) ? $_REQUEST[ $param ] : $default; } } if ( ! function_exists( 'vc_is_frontend_editor' ) ) { /** * @since 4.2 * @return bool */ function vc_is_frontend_editor() { return 'admin_frontend_editor' === vc_mode(); } } if ( ! function_exists( 'vc_is_page_editable' ) ) { /** * @since 4.2 * @return bool */ function vc_is_page_editable() { return 'page_editable' === vc_mode(); } } if ( ! function_exists( 'vc_action' ) ) { /** * Get VC special action param. * @since 4.2 * @return string|null */ function vc_action() { $vc_action = null; if ( isset( $_GET['vc_action'] ) ) { $vc_action = $_GET['vc_action']; } elseif ( isset( $_POST['vc_action'] ) ) { $vc_action = $_POST['vc_action']; } return $vc_action; } } if ( ! function_exists( 'vc_is_inline' ) ) { /** * Get is inline or not. * @since 4.2 * @return bool */ function vc_is_inline() { global $vc_is_inline; if ( is_null( $vc_is_inline ) ) { $vc_is_inline = ( current_user_can( 'edit_posts' ) || current_user_can( 'edit_pages' ) ) && 'vc_inline' === vc_action() || ! is_null( vc_request_param( 'vc_inline' ) ) || 'true' === vc_request_param( 'vc_editable' ); } return $vc_is_inline; } } if ( ! function_exists( 'vc_is_frontend_ajax' ) ) { /** * @since 4.2 * @return bool */ function vc_is_frontend_ajax() { return 'true' === vc_post_param( 'vc_inline' ) || vc_get_param( 'vc_inline' ); } } /** * @depreacted since 4.8 ( use vc_is_frontend_editor ) * @since 4.2 * @return bool */ function vc_is_editor() { return vc_is_frontend_editor(); } /** * @param $value * @param bool $encode * * @since 4.2 * @return string */ function vc_value_from_safe( $value, $encode = false ) { $value = preg_match( '/^#E\-8_/', $value ) ? rawurldecode( base64_decode( preg_replace( '/^#E\-8_/', '', $value ) ) ) : $value; if ( $encode ) { $value = htmlentities( $value, ENT_COMPAT, 'UTF-8' ); } return $value; } /** * @since 4.2 * * @param bool $disable */ function vc_disable_automapper( $disable = true ) { vc_automapper()->setDisabled( $disable ); } /** * @since 4.2 * @return bool */ function vc_automapper_is_disabled() { return vc_automapper()->disabled(); } /** * @param $param * @param $value * * @since 4.2 * @return mixed|string */ function vc_get_dropdown_option( $param, $value ) { if ( '' === $value && is_array( $param['value'] ) ) { $value = array_shift( $param['value'] ); } if ( is_array( $value ) ) { reset( $value ); $value = isset( $value['value'] ) ? $value['value'] : current( $value ); } $value = preg_replace( '/\s/', '_', $value ); return ( '' !== $value ? $value : '' ); } /** * @param $prefix * @param $color * * @since 4.2 * @return string */ function vc_get_css_color( $prefix, $color ) { $rgb_color = preg_match( '/rgba/', $color ) ? preg_replace( array( '/\s+/', '/^rgba\((\d+)\,(\d+)\,(\d+)\,([\d\.]+)\)$/', ), array( '', 'rgb($1,$2,$3)', ), $color ) : $color; $string = $prefix . ':' . $rgb_color . ';'; if ( $rgb_color !== $color ) { $string .= $prefix . ':' . $color . ';'; } return $string; } /** * @param $param_value * @param string $prefix * * @since 4.2 * @return string */ function vc_shortcode_custom_css_class( $param_value, $prefix = '' ) { $css_class = preg_match( '/\s*\.([^\{]+)\s*\{\s*([^\}]+)\s*\}\s*/', $param_value ) ? $prefix . preg_replace( '/\s*\.([^\{]+)\s*\{\s*([^\}]+)\s*\}\s*/', '$1', $param_value ) : ''; return $css_class; } /** * @param $subject * @param $property * @param bool|false $strict * * @since 4.9 * @return bool */ function vc_shortcode_custom_css_has_property( $subject, $property, $strict = false ) { $styles = array(); $pattern = '/\{([^\}]*?)\}/i'; preg_match( $pattern, $subject, $styles ); if ( array_key_exists( 1, $styles ) ) { $styles = explode( ';', $styles[1] ); } $new_styles = array(); foreach ( $styles as $val ) { $val = explode( ':', $val ); if ( is_array( $property ) ) { foreach ( $property as $prop ) { $pos = strpos( $val[0], $prop ); $full = ( $strict ) ? ( 0 === $pos && strlen( $val[0] ) === strlen( $prop ) ) : true; if ( false !== $pos && $full ) { $new_styles[] = $val; } } } else { $pos = strpos( $val[0], $property ); $full = ( $strict ) ? ( 0 === $pos && strlen( $val[0] ) === strlen( $property ) ) : true; if ( false !== $pos && $full ) { $new_styles[] = $val; } } } return ! empty( $new_styles ); } /** * Plugin name for VC. * * @since 4.2 * @return string */ function vc_plugin_name() { return vc_manager()->pluginName(); } /** * @since 4.4.3 used in vc_base when getting an custom css output * * @param $filename * * @param bool $partial * * @return bool|mixed|string */ function vc_file_get_contents( $filename, $partial = false ) { global $wp_filesystem; if ( empty( $wp_filesystem ) ) { require_once( ABSPATH . '/wp-admin/includes/file.php' ); WP_Filesystem( false, false, true ); } /** @var $wp_filesystem WP_Filesystem_Base */ if ( ! is_object( $wp_filesystem ) || ! $output = $wp_filesystem->get_contents( $filename ) ) { /*if ( is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) { } elseif ( ! $wp_filesystem->connect() ) { } elseif ( ! $wp_filesystem->is_writable( $filename ) ) { } else { }*/ $output = file_get_contents( $filename ); } return $output; } /** * HowTo: vc_role_access()->who('administrator')->with('editor')->can('frontend_editor'); * @since 4.8 * @return Vc_Role_Access; */ function vc_role_access() { return vc_manager()->getRoleAccess(); } /** * Get access manager for current user. * HowTo: vc_user_access()->->with('editor')->can('frontend_editor'); * @since 4.8 * @return Vc_Current_User_Access; */ function vc_user_access() { return vc_manager()->getCurrentUserAccess(); } function vc_user_roles_get_all() { require_once vc_path_dir( 'SETTINGS_DIR', 'class-vc-roles.php' ); $vc_roles = new Vc_Roles(); $capabilities = array(); foreach ( $vc_roles->getParts() as $part ) { $partObj = vc_user_access()->part( $part ); $capabilities[ $part ] = array( 'state' => $partObj->getState(), 'state_key' => $partObj->getStateKey(), 'capabilities' => $partObj->getAllCaps(), ); } return $capabilities; } /** * Return a $_GET action param for ajax * @since 4.8 * @return bool */ function vc_wp_action() { return isset( $_REQUEST['action'] ) ? $_REQUEST['action'] : false; } /** * @param $data * * @return string */ function vc_generate_nonce( $data ) { return wp_create_nonce( is_array( $data ) ? ( 'vc-nonce-' . implode( '|', $data ) ) : ( 'vc-nonce-' . $data ) ); } /** * @param $nonce * @param $data * * @return bool */ function vc_verify_nonce( $nonce, $data ) { return (bool) wp_verify_nonce( $nonce, ( is_array( $data ) ? ( 'vc-nonce-' . implode( '|', $data ) ) : ( 'vc-nonce-' . $data ) ) ); } /** * @param $nonce * * @return bool */ function vc_verify_admin_nonce( $nonce = '' ) { return (bool) vc_verify_nonce( ! empty( $nonce ) ? $nonce : vc_request_param( '_vcnonce' ), 'vc-admin-nonce' ); } /** * @param $nonce * * @return bool */ function vc_verify_public_nonce( $nonce = '' ) { return (bool) vc_verify_nonce( ( ! empty( $nonce ) ? $nonce : vc_request_param( '_vcnonce' ) ), 'vc-public-nonce' ); } function vc_check_post_type( $type ) { if ( empty( $type ) ) { $type = get_post_type(); } $valid = apply_filters( 'vc_check_post_type_validation', null, $type ); if ( is_null( $valid ) ) { if ( is_multisite() && is_super_admin() ) { return true; } $state = vc_user_access()->part( 'post_types' )->getState(); if ( null === $state ) { return in_array( $type, vc_default_editor_post_types() ); } else if ( true === $state && ! in_array( $type, vc_default_editor_post_types() ) ) { $valid = false; } else { $valid = vc_user_access()->part( 'post_types' )->can( $type )->get(); } } return $valid; } function vc_user_access_check_shortcode_edit( $shortcode ) { $do_check = apply_filters( 'vc_user_access_check-shortcode_edit', null, $shortcode ); if ( is_null( $do_check ) ) { $state_check = vc_user_access()->part( 'shortcodes' )->checkStateAny( true, 'edit', null )->get(); if ( $state_check ) { return true; } else { return vc_user_access()->part( 'shortcodes' )->canAny( $shortcode . '_all', $shortcode . '_edit' )->get(); } } else { return $do_check; } } function vc_user_access_check_shortcode_all( $shortcode ) { $do_check = apply_filters( 'vc_user_access_check-shortcode_all', null, $shortcode ); if ( is_null( $do_check ) ) { return vc_user_access()->part( 'shortcodes' )->checkStateAny( true, 'custom', null )->can( $shortcode . '_all' )->get(); } else { return $do_check; } } /** * htmlspecialchars_decode_deep * Call the htmlspecialchars_decode to a gived multilevel array * * @since 4.8 * * @param mixed $value The value to be stripped. * * @return mixed Stripped value. */ function vc_htmlspecialchars_decode_deep( $value ) { if ( is_array( $value ) ) { $value = array_map( 'vc_htmlspecialchars_decode_deep', $value ); } elseif ( is_object( $value ) ) { $vars = get_object_vars( $value ); foreach ( $vars as $key => $data ) { $value->{$key} = vc_htmlspecialchars_decode_deep( $data ); } } elseif ( is_string( $value ) ) { $value = htmlspecialchars_decode( $value ); } return $value; } function vc_str_remove_protocol( $str ) { return str_replace( array( 'https://', 'http://', ), '//', $str ); } PK<\ include/templates/.templates.phpnu[PK<\bJ{k3include/templates/pages/vc-welcome/vc-resources.phpnu[

      support page and open Support ticket. To open a support ticket you should have a valid support subscription in case if your support has expired you can purchase support extension on CodeCanyon.', 'js_composer' ), 'http://support.wpbakery.com', 'http://bit.ly/vcomposer' ); ?>

      Support Policy in order to get your issues solved as soon as possible.', 'js_composer' ), 'http://go.wpbakery.com/support-policy' ); ?>

      PK<\2include/templates/pages/vc-welcome/.vc-welcome.phpnu[PK<\ 'T-include/templates/pages/vc-welcome/vc-faq.phpnu[

      kb.wpbakery.com which covers everything related to WPBakery Page Builder starting from Installation and up to more advanced features based on our Inner API.', 'js_composer' ), 'http://kb.wpbakery.com' ); ?>

      WPBakery Page Builder "How To's"

      In this section, you will find quick tips in form of video tutorials on how to operate with WPBakery Page Builder.

      FAQ

      Here you can find answers to the Frequently Asked Question about WPBakery Page Builder.

      Theme Integration

      See how you can integrate WPBakery Page Builder within your WordPress theme.

      Inner API

      Inner API section describes capabilities of interaction with WPBakery Page Builder.

      PK<\H7kk,include/templates/pages/vc-welcome/index.phpnu[

      wpAny( 'manage_options' ) ->part( 'settings' ) ->can( 'vc-general-tab' ) ->get() && ( ! is_multisite() || ! is_main_site() ) ) : ?>

      $page->getSlug(), 'active_tab' => $active_page->getSlug(), 'tabs' => $pages, ) ); ?> render(); ?>
      PK<\ ?1include/templates/pages/vc-welcome/vc-welcome.phpnu[

      Thank you for choosing WPBakery Page Builder,
      Michael M, CEO at WPBakery

      PK<\}yFinclude/templates/pages/vc-settings/default-template-post-type.tpl.phpnu[
      labels->name : $post_type[0] ) ?>
      PK<\4include/templates/pages/vc-settings/.vc-settings.phpnu[PK<\ф;+include/templates/pages/vc-settings/tab.phpnu[getSlug() ); $use_custom = get_option( vc_settings()->getFieldPrefix() . 'use_custom' ); $css = ( ( 'color' === $tab ) && $use_custom ) ? ' color_enabled' : ''; $dev_environment = vc_license()->isDevEnvironment(); $license_key = vc_license()->getLicenseKey(); $classes = 'vc_settings-tab-content vc_settings-tab-content-active ' . esc_attr( $css ); ?> isActivated() ) : ?>

      > getOptionGroup() . '_' . $tab ) ?> page() . '_' . $tab ) ?>

      isActivated() ) : ?>


      spinner

      direct plugin updates, access to template library and official support.', 'js_composer' ) ?>


      spinner

      Purchase WPBakery Page Builder license.', 'js_composer' ), esc_url( 'http://bit.ly/vcomposer' ) ) ?>

      PK<\ 4include/templates/pages/vc-settings/tab-vc-roles.phpnu[getSlug() ) ); $editable_roles = get_editable_roles(); require_once vc_path_dir( 'SETTINGS_DIR', 'class-vc-roles.php' ); $vc_role = new Vc_Roles(); ?>
      data-vc-roles="form">

      $details ) : $name = translate_user_role( $details['name'] ); $unique_id = 'vc_role-' . $role; $valid_roles = array(); foreach ( $vc_role->getParts() as $part ) { if ( $vc_role->hasRoleCapability( $role, $vc_role->getPartCapability( $part ) ) ) { $valid_roles[] = $part; } } if ( count( $valid_roles ) > 0 ) : ?>
      $part, 'role' => $role, 'vc_role' => $vc_role, ) ); } ?>
      PK<\=:!-include/templates/pages/vc-settings/index.phpnu[

      $active_page->getSlug(), 'tabs' => $pages, ) ); ?> render(); ?>
      PK<\H╅5include/templates/pages/vc-settings/vc-automapper.phpnu[
      > renderHtml(); ?>
      PK<\iכ*include/templates/pages/partials/_tabs.phpnu[ PK<\j3include/templates/pages/partials/_settings_tabs.phpnu[ PK<\.include/templates/pages/partials/.partials.phpnu[PK<\-1puuHinclude/templates/pages/partials/vc-roles-parts/_frontend_editor.tpl.phpnu[inlineEnabled() ) { vc_include_template( 'pages/partials/vc-roles-parts/_part.tpl.php', array( 'part' => $part, 'role' => $role, 'params_prefix' => 'vc_roles[' . $role . '][' . $part . ']', 'controller' => vc_role_access()->who( $role )->part( $part ), 'custom_value' => 'custom', 'options' => array( array( true, __( 'Enabled', 'js_composer' ) ), array( false, __( 'Disabled', 'js_composer' ) ), ), 'main_label' => __( 'Frontend editor', 'js_composer' ), 'custom_label' => __( 'Frontend editor', 'js_composer' ), ) ); } PK<\8*Finclude/templates/pages/partials/vc-roles-parts/_post_settings.tpl.phpnu[ $part, 'role' => $role, 'params_prefix' => 'vc_roles[' . $role . '][' . $part . ']', 'controller' => vc_role_access()->who( $role )->part( $part ), 'options' => array( array( true, __( 'Enabled', 'js_composer' ) ), array( false, __( 'Disabled', 'js_composer' ) ), ), 'main_label' => __( 'Page settings', 'js_composer' ), 'description' => __( 'Control access to WPBakery Page Builder page settings. Note: Disable page settings to restrict editing of Custom CSS through page.', 'js_composer' ), ) ); PK<\ Cinclude/templates/pages/partials/vc-roles-parts/_shortcodes.tpl.phpnu[ $part, 'role' => $role, 'params_prefix' => 'vc_roles[' . $role . '][' . $part . ']', 'controller' => vc_role_access()->who( $role )->part( $part ), 'custom_value' => 'custom', 'capabilities' => WPBMap::getSortedAllShortCodes(), 'ignore_capabilities' => array( 'vc_gitem', 'vc_gitem_animated_block', 'vc_gitem_zone', 'vc_gitem_zone_a', 'vc_gitem_zone_b', 'vc_gitem_zone_c', 'vc_column', 'vc_row_inner', 'vc_column_inner', 'vc_posts_grid', ), 'categories' => WPBMap::getCategories(), 'cap_types' => array( array( 'all', __( 'All', 'js_composer' ) ), array( 'edit', __( 'Edit', 'js_composer' ) ), ), 'item_header_name' => __( 'Element', 'js_composer' ), 'options' => array( array( true, __( 'All', 'js_composer' ) ), array( 'edit', __( 'Edit only', 'js_composer' ) ), array( 'custom', __( 'Custom', 'js_composer' ) ), ), 'main_label' => __( 'Elements', 'js_composer' ), 'custom_label' => __( 'Elements', 'js_composer' ), 'description' => __( 'Control user access to content elements.', 'js_composer' ), 'use_table' => true, ) ); PK<\Cinclude/templates/pages/partials/vc-roles-parts/.vc-roles-parts.phpnu[PK<\>cBinclude/templates/pages/partials/vc-roles-parts/_templates.tpl.phpnu[ $part, 'role' => $role, 'params_prefix' => 'vc_roles[' . $role . '][' . $part . ']', 'controller' => vc_role_access()->who( $role )->part( $part ), 'options' => array( array( true, __( 'All', 'js_composer' ) ), array( 'add', __( 'Apply templates only', 'js_composer' ) ), array( false, __( 'Disabled', 'js_composer' ) ), ), 'main_label' => __( 'Templates', 'js_composer' ), 'description' => __( 'Control access rights to templates and predefined templates. Note: "Apply templates only" restricts users from saving new templates and deleting existing.', 'js_composer' ), ) ); PK<\8;Ginclude/templates/pages/partials/vc-roles-parts/_backend_editor.tpl.phpnu[ $part, 'role' => $role, 'params_prefix' => 'vc_roles[' . $role . '][' . $part . ']', 'controller' => vc_role_access()->who( $role )->part( $part ), // 'custom_value' => array(true, 'default'), 'capabilities' => array( array( 'disabled_ce_editor', __( 'Disable Classic editor', 'js_composer' ) ), ), 'options' => array( array( true, __( 'Enabled', 'js_composer' ) ), array( 'default', __( 'Enabled and default', 'js_composer' ) ), array( false, __( 'Disabled', 'js_composer' ) ), ), 'main_label' => __( 'Backend editor', 'js_composer' ), 'custom_label' => __( 'Backend editor', 'js_composer' ), ) ); PK<\e||Einclude/templates/pages/partials/vc-roles-parts/_grid_builder.tpl.phpnu[ $part, 'role' => $role, 'params_prefix' => 'vc_roles[' . $role . '][' . $part . ']', 'controller' => vc_role_access()->who( $role )->part( $part ), 'options' => array( array( true, __( 'Enabled', 'js_composer' ) ), array( false, __( 'Disabled', 'js_composer' ) ), ), 'main_label' => __( 'Grid Builder', 'js_composer' ), 'custom_label' => __( 'Grid Builder', 'js_composer' ), 'description' => __( 'Control user access to Grid Builder and Grid Builder Elements.', 'js_composer' ), ) ); PK<\]DDCinclude/templates/pages/partials/vc-roles-parts/_post_types.tpl.phpnu[ $part, 'role' => $role, 'params_prefix' => 'vc_roles[' . $role . '][' . $part . ']', 'controller' => vc_role_access()->who( $role )->part( $part ), 'custom_value' => 'custom', 'capabilities' => $vc_role->getPostTypes(), 'options' => array( array( true, __( 'Pages only', 'js_composer' ) ), array( 'custom', __( 'Custom', 'js_composer' ) ), array( false, __( 'Disabled', 'js_composer' ) ), ), 'main_label' => __( 'Post types', 'js_composer' ), 'custom_label' => __( 'Post types', 'js_composer' ), 'description' => __( 'Enable WPBakery Page Builder for pages, posts and custom post types. Note: By default WPBakery Page Builder is available for pages only.', 'js_composer' ), ) ); PK<\'gNNBinclude/templates/pages/partials/vc-roles-parts/_dragndrop.tpl.phpnu[ $part, 'role' => $role, 'params_prefix' => 'vc_roles[' . $role . '][' . $part . ']', 'controller' => vc_role_access()->who( $role )->part( $part ), 'options' => array( array( true, __( 'Enabled', 'js_composer' ) ), array( false, __( 'Disabled', 'js_composer' ) ), ), 'main_label' => __( 'Drag and Drop', 'js_composer' ), 'description' => __( 'Control access rights to drag and drop functionality within the editor.', 'js_composer' ), ) ); PK<\=include/templates/pages/partials/vc-roles-parts/_part.tpl.phpnu[

      $categories, ) ) ?> > >
      renderIcon( $cap ) ?>
      ' . esc_html( $cap['description'] ) . '' : '' ?>
      PK<\t@include/templates/pages/partials/vc-roles-parts/_presets.tpl.phpnu[ $part, 'role' => $role, 'params_prefix' => 'vc_roles[' . $role . '][' . $part . ']', 'controller' => vc_role_access()->who( $role )->part( $part ), 'options' => array( array( true, __( 'All', 'js_composer' ) ), array( 'add', __( 'Apply presets only', 'js_composer' ) ), array( false, __( 'Disabled', 'js_composer' ) ), ), 'main_label' => __( 'Element Presets', 'js_composer' ), 'description' => __( 'Control access rights to element presets in element edit form. Note: "Apply presets only" restricts users from saving new presets and deleting existing.', 'js_composer' ), ) ); PK<\D{J:Ainclude/templates/pages/partials/vc-roles-parts/_settings.tpl.phpnu[getTabs() as $tab => $title ) { $tabs[] = array( $tab . '-tab', $title ); } vc_include_template( 'pages/partials/vc-roles-parts/_part.tpl.php', array( 'part' => $part, 'role' => $role, 'params_prefix' => 'vc_roles[' . $role . '][' . $part . ']', 'controller' => vc_role_access()->who( $role )->part( $part ), 'custom_value' => 'custom', 'capabilities' => $tabs, 'options' => array( array( true, __( 'All', 'js_composer' ) ), array( 'custom', __( 'Custom', 'js_composer' ) ), array( false, __( 'Disabled', 'js_composer' ) ), ), 'main_label' => __( 'Settings options', 'js_composer' ), 'custom_label' => __( 'Settings options', 'js_composer' ), 'description' => __( 'Control access rights to WPBakery Page Builder admin settings tabs (e.g. General Settings, Shortcode Mapper, ...)', 'js_composer' ), ) ); PK<\z@  !include/templates/teaser.html.phpnu[ PK<\Xy-include/templates/shortcodes/vc_gitem_row.phpnu[ '', 'el_class' => '', 'position' => 'top', ), $atts ) ); $css_class = 'vc_gitem_row vc_row' . ( strlen( $el_class ) ? ' ' . $el_class : '' ) . vc_shortcode_custom_css_class( $css, ' ' ) . ( $position ? ' vc_gitem-row-position-' . $position : '' ); if ( ! vc_gitem_has_content( $content ) ) { return; } echo '
      ' . do_shortcode( $content ) . '
      '; PK<\ 'include/templates/shortcodes/vc_pie.phpnu[convertOldColorsToNew( $atts ); $atts = vc_map_get_attributes( $this->getShortcode(), $atts ); extract( $atts ); wp_enqueue_script( 'vc_pie' ); $colors = array( 'blue' => '#5472d2', 'turquoise' => '#00c1cf', 'pink' => '#fe6c61', 'violet' => '#8d6dc4', 'peacoc' => '#4cadc9', 'chino' => '#cec2ab', 'mulled-wine' => '#50485b', 'vista-blue' => '#75d69c', 'orange' => '#f7be68', 'sky' => '#5aa1e3', 'green' => '#6dab3c', 'juicy-pink' => '#f4524d', 'sandy-brown' => '#f79468', 'purple' => '#b97ebb', 'black' => '#2a2a2a', 'grey' => '#ebebeb', 'white' => '#ffffff', ); if ( 'custom' === $color ) { $color = $custom_color; } else { $color = isset( $colors[ $color ] ) ? $colors[ $color ] : ''; } if ( ! $color ) { $color = $colors['grey']; } $class_to_filter = 'vc_pie_chart wpb_content_element'; $class_to_filter .= vc_shortcode_custom_css_class( $css, ' ' ) . $this->getExtraClass( $el_class ) . $this->getCSSAnimation( $css_animation ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts ); $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $output = '
      '; $output .= '
      '; $output .= '
      '; $output .= ''; $output .= ''; $output .= ''; $output .= '
      '; if ( '' !== $title ) { $output .= '

      ' . $title . '

      '; } $output .= '
      '; $output .= '
      '; echo $output; PK<\|OZZ/include/templates/shortcodes/vc_tta_section.phpnu[getShortcode(), $atts ); $this->resetVariables( $atts, $content ); WPBakeryShortCode_VC_Tta_Section::$self_count ++; WPBakeryShortCode_VC_Tta_Section::$section_info[] = $atts; $isPageEditable = vc_is_page_editable(); $output = ''; $output .= '
      getTemplateVariable( 'tab_id' ) ) . '"'; $output .= ' data-vc-content=".vc_tta-panel-body">'; $output .= '
      '; $output .= $this->getTemplateVariable( 'heading' ); $output .= '
      '; $output .= '
      '; if ( $isPageEditable ) { $output .= '
      '; // fix for fe - shortcodes container, not required in b.e. } $output .= $this->getTemplateVariable( 'content' ); if ( $isPageEditable ) { $output .= '
      '; } $output .= '
      '; $output .= '
      '; echo $output; PK<\} 'include/templates/shortcodes/vc_btn.phpnu[getShortcode(), $atts ); extract( $atts ); //parse link $link = ( '||' === $link ) ? '' : $link; $link = vc_build_link( $link ); $use_link = false; if ( strlen( $link['url'] ) > 0 ) { $use_link = true; $a_href = $link['url']; $a_href = apply_filters( 'vc_btn_a_href', $a_href ); $a_title = $link['title']; $a_title = apply_filters( 'vc_btn_a_title', $a_title ); $a_target = $link['target']; $a_rel = $link['rel']; } $wrapper_classes = array( 'vc_btn3-container', $this->getExtraClass( $el_class ), $this->getCSSAnimation( $css_animation ), 'vc_btn3-' . $align, ); $button_classes = array( 'vc_general', 'vc_btn3', 'vc_btn3-size-' . $size, 'vc_btn3-shape-' . $shape, 'vc_btn3-style-' . $style, ); $button_html = $title; if ( '' === trim( $title ) ) { $button_classes[] = 'vc_btn3-o-empty'; $button_html = ' '; } if ( 'true' === $button_block && 'inline' !== $align ) { $button_classes[] = 'vc_btn3-block'; } if ( 'true' === $add_icon ) { $button_classes[] = 'vc_btn3-icon-' . $i_align; vc_icon_element_fonts_enqueue( $i_type ); if ( isset( ${'i_icon_' . $i_type} ) ) { if ( 'pixelicons' === $i_type ) { $icon_wrapper = true; } $icon_class = ${'i_icon_' . $i_type}; } else { $icon_class = 'fa fa-adjust'; } if ( $icon_wrapper ) { $icon_html = ''; } else { $icon_html = ''; } if ( 'left' === $i_align ) { $button_html = $icon_html . ' ' . $button_html; } else { $button_html .= ' ' . $icon_html; } } if ( 'custom' === $style ) { if ( $custom_background ) { $styles[] = vc_get_css_color( 'background-color', $custom_background ); } if ( $custom_text ) { $styles[] = vc_get_css_color( 'color', $custom_text ); } if ( ! $custom_background && ! $custom_text ) { $button_classes[] = 'vc_btn3-color-grey'; } } elseif ( 'outline-custom' === $style ) { if ( $outline_custom_color ) { $styles[] = vc_get_css_color( 'border-color', $outline_custom_color ); $styles[] = vc_get_css_color( 'color', $outline_custom_color ); $attributes[] = 'onmouseleave="this.style.borderColor=\'' . $outline_custom_color . '\'; this.style.backgroundColor=\'transparent\'; this.style.color=\'' . $outline_custom_color . '\'"'; } else { $attributes[] = 'onmouseleave="this.style.borderColor=\'\'; this.style.backgroundColor=\'transparent\'; this.style.color=\'\'"'; } $onmouseenter = array(); if ( $outline_custom_hover_background ) { $onmouseenter[] = 'this.style.borderColor=\'' . $outline_custom_hover_background . '\';'; $onmouseenter[] = 'this.style.backgroundColor=\'' . $outline_custom_hover_background . '\';'; } if ( $outline_custom_hover_text ) { $onmouseenter[] = 'this.style.color=\'' . $outline_custom_hover_text . '\';'; } if ( $onmouseenter ) { $attributes[] = 'onmouseenter="' . implode( ' ', $onmouseenter ) . '"'; } if ( ! $outline_custom_color && ! $outline_custom_hover_background && ! $outline_custom_hover_text ) { $button_classes[] = 'vc_btn3-color-inverse'; foreach ( $button_classes as $k => $v ) { if ( 'vc_btn3-style-outline-custom' === $v ) { unset( $button_classes[ $k ] ); break; } } $button_classes[] = 'vc_btn3-style-outline'; } } elseif ( 'gradient' === $style || 'gradient-custom' === $style ) { $gradient_color_1 = vc_convert_vc_color( $gradient_color_1 ); $gradient_color_2 = vc_convert_vc_color( $gradient_color_2 ); $button_text_color = '#fff'; if ( 'gradient-custom' === $style ) { $gradient_color_1 = $gradient_custom_color_1; $gradient_color_2 = $gradient_custom_color_2; $button_text_color = $gradient_text_color; } $gradient_css = array(); $gradient_css[] = 'color: ' . $button_text_color; $gradient_css[] = 'border: none'; $gradient_css[] = 'background-color: ' . $gradient_color_1; $gradient_css[] = 'background-image: -webkit-linear-gradient(left, ' . $gradient_color_1 . ' 0%, ' . $gradient_color_2 . ' 50%,' . $gradient_color_1 . ' 100%)'; $gradient_css[] = 'background-image: linear-gradient(to right, ' . $gradient_color_1 . ' 0%, ' . $gradient_color_2 . ' 50%,' . $gradient_color_1 . ' 100%)'; $gradient_css[] = '-webkit-transition: all .2s ease-in-out'; $gradient_css[] = 'transition: all .2s ease-in-out'; $gradient_css[] = 'background-size: 200% 100%'; // hover css $gradient_css_hover = array(); $gradient_css_hover[] = 'color: ' . $button_text_color; $gradient_css_hover[] = 'background-color: ' . $gradient_color_2; $gradient_css_hover[] = 'border: none'; $gradient_css_hover[] = 'background-position: 100% 0'; $uid = uniqid(); echo ''; echo ''; $button_classes[] = 'vc_btn-gradient-btn-' . $uid; $attributes[] = 'data-vc-gradient-1="' . $gradient_color_1 . '"'; $attributes[] = 'data-vc-gradient-2="' . $gradient_color_2 . '"'; } else { $button_classes[] = 'vc_btn3-color-' . $color; } if ( $styles ) { $attributes[] = 'style="' . implode( ' ', $styles ) . '"'; } $class_to_filter = implode( ' ', array_filter( $wrapper_classes ) ); $class_to_filter .= vc_shortcode_custom_css_class( $css, ' ' ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts ); if ( $button_classes ) { $button_classes = esc_attr( apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, implode( ' ', array_filter( $button_classes ) ), $this->settings['base'], $atts ) ); $attributes[] = 'class="' . trim( $button_classes ) . '"'; } if ( $use_link ) { $attributes[] = 'href="' . trim( $a_href ) . '"'; $attributes[] = 'title="' . esc_attr( trim( $a_title ) ) . '"'; if ( ! empty( $a_target ) ) { $attributes[] = 'target="' . esc_attr( trim( $a_target ) ) . '"'; } if ( ! empty( $a_rel ) ) { $attributes[] = 'rel="' . esc_attr( trim( $a_rel ) ) . '"'; } } if ( ! empty( $custom_onclick ) && $custom_onclick_code ) { $attributes[] = 'onclick="' . esc_attr( $custom_onclick_code ) . '"'; } $attributes = implode( ' ', $attributes ); $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } ?>
      > ' . $button_html . ''; } else { echo ''; } ?>
      PK<\g=</include/templates/shortcodes/vc_gitem_block.phpnu[getShortcode(), $atts ); extract( $atts ); if ( ! empty( $background_color ) ) { $background_color = ' vc_bg-' . $background_color; } echo '
      ' . do_shortcode( $content ) . '
      '; PK<\!!-include/templates/shortcodes/vc_pinterest.phpnu[getShortcode(), $atts ); extract( $atts ); $url = rawurlencode( get_permalink() ); if ( has_post_thumbnail() ) { $img_url = wp_get_attachment_image_src( get_post_thumbnail_id(), 'large' ); $media = ( is_array( $img_url ) ) ? '&media=' . rawurlencode( $img_url[0] ) : ''; } else { $media = ''; } $excerpt = is_object( $post ) && isset( $post->post_excerpt ) ? $post->post_excerpt : ''; $description = ( '' !== $excerpt ) ? '&description=' . rawurlencode( strip_tags( $excerpt ) ) : ''; $el_class = isset( $el_class ) ? $el_class : ''; $class_to_filter = 'wpb_pinterest wpb_content_element wpb_pinterest_type_' . $type; $class_to_filter .= vc_shortcode_custom_css_class( $css, ' ' ) . $this->getExtraClass( $el_class ) . $this->getCSSAnimation( $css_animation ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts ); $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $output .= '
      '; $output .= ''; $output .= '
      '; echo $output; PK<\ +include/templates/shortcodes/vc_wp_text.phpnu[getShortcode(), $atts ); $atts['filter'] = true; //Hack to make sure that

      added extract( $atts ); $el_class = $this->getExtraClass( $el_class ); $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $output = '

      '; $type = 'WP_Widget_Text'; $args = array(); if ( strlen( $content ) > 0 ) { $atts['text'] = $content; } global $wp_widget_factory; // to avoid unwanted warnings let's check before using widget if ( is_object( $wp_widget_factory ) && isset( $wp_widget_factory->widgets, $wp_widget_factory->widgets[ $type ] ) ) { ob_start(); the_widget( $type, $atts, $args ); $output .= ob_get_clean(); $output .= '
      '; echo $output; } else { echo $this->debugComment( 'Widget ' . esc_attr( $type ) . 'Not found in : vc_wp_text' ); } PK<\m)include/templates/shortcodes/vc_gitem.phpnu[ '', 'width' => '12', 'is_end' => '', 'css' => '', 'c_zone_position' => '', 'bgimage' => '', 'height' => '', ), $atts ) ); $css_class = 'vc_grid-item vc_clearfix' . ( 'true' === $is_end ? ' vc_grid-last-item' : '' ) . ( strlen( $el_class ) ? ' ' . $el_class : '' ) . ' vc_col-sm-' . $width . ( ! empty( $c_zone_position ) ? ' vc_grid-item-zone-c-' . $c_zone_position : '' ); $css_class_mini = 'vc_grid-item-mini vc_clearfix ' . vc_shortcode_custom_css_class( $css, ' ' ); $css_class .= '{{ filter_terms_css_classes }}'; $css_style = ''; if ( 'featured' === $bgimage ) { $css_style = 'background-image: url(\'{{ post_image_url }}\');'; $css_class .= ' vc_grid-item-background-cover'; } if ( strlen( $height ) > 0 ) { $css_style .= 'height: ' . $height . ';'; } $output = '
      ' . do_shortcode( $content ) . '
      '; echo $output; PK<\[*hh8include/templates/shortcodes/vc_gitem_animated_block.phpnu[ '', // unmapped 'animation' => '', ), $atts ) ); $css_style = ''; $css_class = 'vc_gitem-animated-block ' . vc_shortcode_custom_css_class( $css, ' ' ); if ( ! empty( $animation ) ) { $css_class .= ' vc_gitem-animate vc_gitem-animate-' . $animation; $animation_attr .= ' data-vc-animation="' . esc_attr( $animation ) . '"'; } elseif ( 'vc_gitem_preview' !== vc_request_param( 'action' ) && vc_verify_admin_nonce() && ( current_user_can( 'edit_posts' ) || current_user_can( 'edit_pages' ) ) ) { $content = preg_replace( '/(?<=\[)(vc_gitem_zone_b\b)/', '$1 render="no"', $content ); } ?>
      >
      PK<\HOO/include/templates/shortcodes/layerslider_vc.phpnu[getShortcode(), $atts ); extract( $atts ); $el_class = $this->getExtraClass( $el_class ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, 'wpb_layerslider_element wpb_content_element' . $el_class, $this->settings['base'], $atts ); $output .= '
      '; $output .= wpb_widget_title( array( 'title' => $title, 'extraclass' => 'wpb_layerslider_heading' ) ); $output .= apply_filters( 'vc_layerslider_shortcode', do_shortcode( '[layerslider id="' . $id . '"]' ) ); $output .= '
      '; echo $output; PK<\n*include/templates/shortcodes/vc_toggle.phpnu[getShortcode(), $atts ); extract( $atts ); // checking is color inverted $style = str_replace( '_outline', '', $style, $inverted ); /** * @since 4.4 */ $elementClass = array( 'base' => apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, 'vc_toggle', $this->settings['base'], $atts ), // TODO: check this code, don't know how to get base class names from params 'style' => 'vc_toggle_' . $style, 'color' => ( $color ) ? 'vc_toggle_color_' . $color : '', 'inverted' => ( $inverted ) ? 'vc_toggle_color_inverted' : '', 'size' => ( $size ) ? 'vc_toggle_size_' . $size : '', 'open' => ( 'true' === $open ) ? 'vc_toggle_active' : '', 'extra' => $this->getExtraClass( $el_class ), 'css_animation' => $this->getCSSAnimation( $css_animation ), // TODO: remove getCssAnimation as function in helpers ); $class_to_filter = trim( implode( ' ', $elementClass ) ); $class_to_filter .= vc_shortcode_custom_css_class( $css, ' ' ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts ); ?>
      class="">
      getHeading( $atts ), array( 'title' => $title, 'open' => $open, ) ); ?>
      PK<\^ 5include/templates/shortcodes/vc_basic_grid_filter.phpnu[ 0 ? get_terms( $atts['filter_source'], array( 'include' => implode( ',', $terms_ids ), ) ) : array(); $filter_default = $atts['filter_default_title']; if ( empty( $filter_default ) ) { $filter_default = __( 'All', 'js_composer' ); } if ( 'dropdown' !== $atts['filter_style'] ) { echo '
      • '; echo esc_attr( $filter_default );; echo '
      • '; foreach ( $terms as $term ) { echo '
      • '; echo esc_attr( $term->name ); echo '
      • '; } echo '
      '; } ?>
      getShortcode(), $atts ); extract( $atts ); $css_class = 'vc_gitem-post-meta-field-' . $key . ( strlen( $el_class ) ? ' ' . $el_class : '' ) . ( strlen( $align ) ? ' vc_gitem-align-' . $align : '' ); if ( strlen( $label ) ) { $label_html = ''; } if ( strlen( $key ) ) : ?>
      {{ post_meta_value: }}
      PK<\GG*include/templates/shortcodes/vc_button.phpnu[getShortcode(), $atts ); extract( $atts ); $a_class = ''; if ( '' !== $el_class ) { $tmp_class = explode( ' ', strtolower( $el_class ) ); $tmp_class = str_replace( '.', '', $tmp_class ); if ( in_array( 'prettyphoto', $tmp_class ) ) { wp_enqueue_script( 'prettyphoto' ); wp_enqueue_style( 'prettyphoto' ); $a_class .= ' prettyphoto'; $el_class = str_ireplace( 'prettyphoto', '', $el_class ); } if ( in_array( 'pull-right', $tmp_class ) && '' !== $href ) { $a_class .= ' pull-right'; $el_class = str_ireplace( 'pull-right', '', $el_class ); } if ( in_array( 'pull-left', $tmp_class ) && '' !== $href ) { $a_class .= ' pull-left'; $el_class = str_ireplace( 'pull-left', '', $el_class ); } } if ( 'same' === $target || '_self' === $target ) { $target = ''; } $target = ( '' !== $target ) ? ' target="' . esc_attr( $target ) . '"' : ''; $color = ( '' !== $color ) ? ' wpb_' . $color : ''; $size = ( '' !== $size && 'wpb_regularsize' !== $size ) ? ' wpb_' . $size : ' ' . $size; $icon = ( '' !== $icon && 'none' !== $icon ) ? ' ' . $icon : ''; $i_icon = ( '' !== $icon ) ? ' ' : ''; $el_class = $this->getExtraClass( $el_class ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, 'wpb_button ' . $color . $size . $icon . $el_class, $this->settings['base'], $atts ); if ( '' !== $href ) { $output .= '' . $title . $i_icon . ''; $output = '' . $output . ''; } else { $output .= ''; } echo $output; PK<\]4-include/templates/shortcodes/vc_tweetmeme.phpnu[getShortcode(), $atts ); $tweet_btn_text = ''; $type = $atts['type']; switch ( $type ) { case 'follow': $tweet_btn_text = __( 'Follow', 'js_composer' ); break; case 'mention': $tweet_btn_text = __( 'Tweet to', 'js_composer' ); break; case 'share': case 'hashtag': $tweet_btn_text = __( 'Tweet', 'js_composer' ); break; default: $type = 'share'; $tweet_btn_text = __( 'Tweet', 'js_composer' ); break; } $data = array(); $classes = array(); $class_to_filter = 'vc_tweetmeme-element' . vc_shortcode_custom_css_class( $atts['css'], ' ' ) . $this->getCSSAnimation( $atts['css_animation'] ) . $this->getExtraClass( $atts['el_class'] ); $el_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->getShortcode(), $atts ); if ( ! empty( $atts['large_button'] ) ) { $data['data-size'] = 'large'; } $url = 'https://twitter.com/'; if ( 'share' === $type ) { $url = 'https://twitter.com/share'; $classes[] = 'twitter-share-button'; if ( 'page_url' !== $atts['share_use_page_url'] ) { $data['data-url'] = $atts['share_use_custom_url']; } if ( 'page_title' !== $atts['share_text_page_title'] ) { $data['data-text'] = $atts['share_text_custom_text']; } if ( ! empty( $atts['share_via'] ) ) { $data['data-via'] = $atts['share_via']; } if ( ! empty( $atts['share_recommend'] ) ) { $data['data-related'] = $atts['share_recommend']; } if ( ! empty( $atts['share_hashtag'] ) ) { $data['data-hashtags'] = $atts['share_hashtag']; } } else if ( 'follow' === $type ) { $url = 'https://twitter.com/'; $classes[] = 'twitter-follow-button'; if ( ! empty( $atts['follow_user'] ) ) { $url .= esc_attr( $atts['follow_user'] ); $tweet_btn_text .= ' @' . esc_attr( $atts['follow_user'] ); } if ( 'yes' != $atts['follow_show_username'] ) { $data['data-show-screen-name'] = 'false'; } $data['data-show-count'] = ( ! ! $atts['show_followers_count'] ) ? 'true' : 'false'; } else if ( 'hashtag' === $type ) { $url = 'https://twitter.com/intent/tweet?'; $classes[] = 'twitter-hashtag-button'; $url_atts = array(); if ( ! empty( $atts['hashtag_hash'] ) ) { $url_atts[] = 'button_hashtag=' . esc_attr( $atts['hashtag_hash'] ); $tweet_btn_text .= ' #' . esc_attr( $atts['hashtag_hash'] ); } if ( 'yes' !== $atts['hashtag_no_default'] ) { $url_atts[] = 'text=' . esc_attr( $atts['hashtag_custom_tweet_text'] ); } $url .= implode( '&', $url_atts ); $rel = array(); if ( ! empty( $atts['hashtag_recommend_1'] ) ) { $rel[] = $atts['hashtag_recommend_1']; } if ( ! empty( $atts['hashtag_recommend_1'] ) ) { $rel[] = $atts['hashtag_recommend_2']; } if ( ! empty( $rel ) ) { $data['data-related'] = implode( ',', $rel ); } if ( 'yes' !== $atts['hashtag_no_url'] ) { $data['data-url'] = $atts['hashtag_custom_tweet_url']; } } else if ( 'mention' === $type ) { $url = 'https://twitter.com/intent/tweet?'; $classes[] = 'twitter-mention-button'; $url_atts = array(); if ( ! empty( $atts['mention_tweet_to'] ) ) { $url_atts[] = 'screen_name=' . esc_attr( $atts['mention_tweet_to'] ); $tweet_btn_text .= ' @' . esc_attr( $atts['mention_tweet_to'] ); } if ( 'yes' !== $atts['mention_no_default'] ) { $url_atts[] = 'text=' . esc_attr( $atts['mention_custom_tweet_text'] ); } $url .= implode( '&', $url_atts ); $rel = array(); if ( ! empty( $atts['mention_recommend_1'] ) ) { $rel[] = $atts['mention_recommend_1']; } if ( ! empty( $atts['mention_recommend_1'] ) ) { $rel[] = $atts['mention_recommend_1']; } if ( ! empty( $rel ) ) { $data['data-related'] = implode( ',', $rel ); } } if ( ! empty( $atts['lang'] ) ) { $data['data-lang'] = $atts['lang']; } $data_imploded = array(); foreach ( $data as $k => $v ) { $data_imploded[] = $k . '="' . esc_attr( $v ) . '"'; } $wrapper_attributes = array(); if ( ! empty( $atts['el_id'] ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $atts['el_id'] ) . '"'; } $wrapper = '
      '; $template = '' . $tweet_btn_text . ''; $template .= ''; $wrapper .= $template; $wrapper .= '
      '; echo $wrapper; PK<\|88'include/templates/shortcodes/vc_cta.phpnu[getShortcode(), $atts ); $this->buildTemplate( $atts, $content ); $containerClass = trim( 'vc_cta3-container ' . esc_attr( implode( ' ', $this->getTemplateVariable( 'container-class' ) ) ) ); $cssClass = trim( 'vc_general ' . esc_attr( implode( ' ', $this->getTemplateVariable( 'css-class' ) ) ) ); $wrapper_attributes = array(); if ( ! empty( $atts['el_id'] ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $atts['el_id'] ) . '"'; } ?>
      >
      getTemplateVariable( 'inline-css' ) ) { echo ' style="' . esc_attr( implode( ' ', $this->getTemplateVariable( 'inline-css' ) ) ) . '"'; } ?>> getTemplateVariable( 'icons-top' ); ?> getTemplateVariable( 'icons-left' ); ?>
      getTemplateVariable( 'actions-top' ); ?> getTemplateVariable( 'actions-left' ); ?>
      getTemplateVariable( 'heading1' ); ?> getTemplateVariable( 'heading2' ); ?>
      getTemplateVariable( 'content' ); ?>
      getTemplateVariable( 'actions-bottom' ); ?> getTemplateVariable( 'actions-right' ); ?>
      getTemplateVariable( 'icons-bottom' ); ?> getTemplateVariable( 'icons-right' ); ?>
      PK<\t#/" " 2include/templates/shortcodes/vc_custom_heading.phpnu[getAttributes * @var $google_fonts_data - returned from $this->getAttributes * Shortcode class * @var $this WPBakeryShortCode_VC_Custom_heading */ $source = $text = $link = $google_fonts = $font_container = $el_id = $el_class = $css = $css_animation = $font_container_data = $google_fonts_data = array(); // This is needed to extract $font_container_data and $google_fonts_data extract( $this->getAttributes( $atts ) ); $atts = vc_map_get_attributes( $this->getShortcode(), $atts ); extract( $atts ); /** * @var $css_class */ extract( $this->getStyles( $el_class . $this->getCSSAnimation( $css_animation ), $css, $google_fonts_data, $font_container_data, $atts ) ); $settings = get_option( 'wpb_js_google_fonts_subsets' ); if ( is_array( $settings ) && ! empty( $settings ) ) { $subsets = '&subset=' . implode( ',', $settings ); } else { $subsets = ''; } if ( ( ! isset( $atts['use_theme_fonts'] ) || 'yes' !== $atts['use_theme_fonts'] ) && isset( $google_fonts_data['values']['font_family'] ) ) { wp_enqueue_style( 'vc_google_fonts_' . vc_build_safe_css_class( $google_fonts_data['values']['font_family'] ), '//fonts.googleapis.com/css?family=' . $google_fonts_data['values']['font_family'] . $subsets ); } if ( ! empty( $styles ) ) { $style = 'style="' . esc_attr( implode( ';', $styles ) ) . '"'; } else { $style = ''; } if ( 'post_title' === $source ) { $text = get_the_title( get_the_ID() ); } if ( ! empty( $link ) ) { $link = vc_build_link( $link ); $text = '' . $text . ''; } $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $output = ''; if ( apply_filters( 'vc_custom_heading_template_use_wrapper', false ) ) { $output .= '
      '; $output .= '<' . $font_container_data['values']['tag'] . ' ' . $style . ' >'; $output .= $text; $output .= ''; $output .= '
      '; } else { $output .= '<' . $font_container_data['values']['tag'] . ' ' . $style . ' class="' . esc_attr( $css_class ) . '" ' . implode( ' ', $wrapper_attributes ) . '>'; $output .= $text; $output .= ''; } echo $output; PK<\G0include/templates/shortcodes/vc_single_image.phpnu[getShortcode(), $atts ); extract( $atts ); $default_src = vc_asset_url( 'vc/no_image.png' ); // backward compatibility. since 4.6 if ( empty( $onclick ) && isset( $img_link_large ) && 'yes' === $img_link_large ) { $onclick = 'img_link_large'; } elseif ( empty( $atts['onclick'] ) && ( ! isset( $atts['img_link_large'] ) || 'yes' !== $atts['img_link_large'] ) ) { $onclick = 'custom_link'; } if ( 'external_link' === $source ) { $style = $external_style; $border_color = $external_border_color; } $border_color = ( '' !== $border_color ) ? ' vc_box_border_' . $border_color : ''; $img = false; switch ( $source ) { case 'media_library': case 'featured_image': if ( 'featured_image' === $source ) { $post_id = get_the_ID(); if ( $post_id && has_post_thumbnail( $post_id ) ) { $img_id = get_post_thumbnail_id( $post_id ); } else { $img_id = 0; } } else { $img_id = preg_replace( '/[^\d]/', '', $image ); } // set rectangular if ( preg_match( '/_circle_2$/', $style ) ) { $style = preg_replace( '/_circle_2$/', '_circle', $style ); $img_size = $this->getImageSquareSize( $img_id, $img_size ); } if ( ! $img_size ) { $img_size = 'medium'; } $img = wpb_getImageBySize( array( 'attach_id' => $img_id, 'thumb_size' => $img_size, 'class' => 'vc_single_image-img', ) ); // don't show placeholder in public version if post doesn't have featured image if ( 'featured_image' === $source ) { if ( ! $img && 'page' === vc_manager()->mode() ) { return; } } break; case 'external_link': $dimensions = vcExtractDimensions( $external_img_size ); $hwstring = $dimensions ? image_hwstring( $dimensions[0], $dimensions[1] ) : ''; $custom_src = $custom_src ? esc_attr( $custom_src ) : $default_src; $img = array( 'thumbnail' => '', ); break; default: $img = false; } if ( ! $img ) { $img['thumbnail'] = ''; } $el_class = $this->getExtraClass( $el_class ); // backward compatibility if ( vc_has_class( 'prettyphoto', $el_class ) ) { $onclick = 'link_image'; } // backward compatibility. will be removed in 4.7+ if ( ! empty( $atts['img_link'] ) ) { $link = $atts['img_link']; if ( ! preg_match( '/^(https?\:\/\/|\/\/)/', $link ) ) { $link = 'http://' . $link; } } // backward compatibility if ( in_array( $link, array( 'none', 'link_no' ) ) ) { $link = ''; } $a_attrs = array(); switch ( $onclick ) { case 'img_link_large': if ( 'external_link' === $source ) { $link = $custom_src; } else { $link = wp_get_attachment_image_src( $img_id, 'large' ); $link = $link[0]; } break; case 'link_image': wp_enqueue_script( 'prettyphoto' ); wp_enqueue_style( 'prettyphoto' ); $a_attrs['class'] = 'prettyphoto'; $a_attrs['data-rel'] = 'prettyPhoto[rel-' . get_the_ID() . '-' . rand() . ']'; // backward compatibility if ( vc_has_class( 'prettyphoto', $el_class ) ) { // $link is already defined } elseif ( 'external_link' === $source ) { $link = $custom_src; } else { $link = wp_get_attachment_image_src( $img_id, 'large' ); $link = $link[0]; } break; case 'custom_link': // $link is already defined break; case 'zoom': wp_enqueue_script( 'vc_image_zoom' ); if ( 'external_link' === $source ) { $large_img_src = $custom_src; } else { $large_img_src = wp_get_attachment_image_src( $img_id, 'large' ); if ( $large_img_src ) { $large_img_src = $large_img_src[0]; } } $img['thumbnail'] = str_replace( '' . $img['thumbnail'] . ''; } else { $html = '
      ' . $img['thumbnail'] . '
      '; } $class_to_filter = 'wpb_single_image wpb_content_element vc_align_' . $alignment . ' ' . $this->getCSSAnimation( $css_animation ); $class_to_filter .= vc_shortcode_custom_css_class( $css, ' ' ) . $this->getExtraClass( $el_class ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts ); if ( in_array( $source, array( 'media_library', 'featured_image' ) ) && 'yes' === $add_caption ) { $post = get_post( $img_id ); $caption = $post->post_excerpt; } else { if ( 'external_link' === $source ) { $add_caption = 'yes'; } } if ( 'yes' === $add_caption && '' !== $caption ) { $html .= '
      ' . esc_html( $caption ) . '
      '; } $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $output = '
      ' . wpb_widget_title( array( 'title' => $title, 'extraclass' => 'wpb_singleimage_heading' ) ) . '
      ' . $html . '
      '; echo $output; PK<\IFOWW/include/templates/shortcodes/vc_empty_space.phpnu[getShortcode(), $atts ); extract( $atts ); $pattern = '/^(\d*(?:\.\d+)?)\s*(px|\%|in|cm|mm|em|rem|ex|pt|pc|vw|vh|vmin|vmax)?$/'; // allowed metrics: http://www.w3schools.com/cssref/css_units.asp $regexr = preg_match( $pattern, $height, $matches ); $value = isset( $matches[1] ) ? (float) $matches[1] : (float) WPBMap::getParam( 'vc_empty_space', 'height' ); $unit = isset( $matches[2] ) ? $matches[2] : 'px'; $height = $value . $unit; $inline_css = ( (float) $height >= 0.0 ) ? ' style="height: ' . esc_attr( $height ) . '"' : ''; $class = 'vc_empty_space ' . $this->getExtraClass( $el_class ) . vc_shortcode_custom_css_class( $css, ' ' ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class, $this->settings['base'], $atts ); $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } ?>
      >
      PK<\|(--/include/templates/shortcodes/vc_wp_archives.phpnu[getShortcode(), $atts ); extract( $atts ); $options = explode( ',', $options ); if ( in_array( 'dropdown', $options ) ) { $atts['dropdown'] = true; } if ( in_array( 'count', $options ) ) { $atts['count'] = true; } $el_class = $this->getExtraClass( $el_class ); $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $output = '
      '; $type = 'WP_Widget_Archives'; $args = array(); global $wp_widget_factory; // to avoid unwanted warnings let's check before using widget if ( is_object( $wp_widget_factory ) && isset( $wp_widget_factory->widgets, $wp_widget_factory->widgets[ $type ] ) ) { ob_start(); the_widget( $type, $atts, $args ); $output .= ob_get_clean(); $output .= '
      '; echo $output; } else { echo $this->debugComment( 'Widget ' . esc_attr( $type ) . 'Not found in : vc_wp_archives' ); } PK<\JJ0include/templates/shortcodes/vc_gitem_zone_c.phpnu[getShortcode(), $atts ); extract( $atts ); extract( $atts ); if ( 'no' === $render ) { echo ''; return; } $css_class = 'vc_gitem-zone' . ( strlen( $this->zone_name ) ? ' vc_gitem-zone-' . $this->zone_name : '' ) . $this->getExtraClass( $el_class ); $css_class_mini = 'vc_gitem-zone-mini'; $css_class .= vc_shortcode_custom_css_class( $css, ' ' ); ?>
      PK<\ܳ_ւ/include/templates/shortcodes/vc_wp_tagcloud.phpnu[getShortcode(), $atts ); extract( $atts ); $el_class = $this->getExtraClass( $el_class ); $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $output = '
      '; $type = 'WP_Widget_Tag_Cloud'; $args = array(); global $wp_widget_factory; // to avoid unwanted warnings let's check before using widget if ( is_object( $wp_widget_factory ) && isset( $wp_widget_factory->widgets, $wp_widget_factory->widgets[ $type ] ) ) { ob_start(); the_widget( $type, $atts, $args ); $output .= ob_get_clean(); $output .= '
      '; echo $output; } else { echo $this->debugComment( 'Widget ' . esc_attr( $type ) . 'Not found in : vc_wp_tagcloud' ); } PK<\X^sy# # (include/templates/shortcodes/vc_icon.phpnu[getShortcode(), $atts ); extract( $atts ); $class_to_filter = ''; $class_to_filter .= vc_shortcode_custom_css_class( $css, ' ' ) . $this->getExtraClass( $el_class ) . $this->getCSSAnimation( $css_animation ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts ); // Enqueue needed icon font. vc_icon_element_fonts_enqueue( $type ); $url = vc_build_link( $link ); $has_style = false; if ( strlen( $background_style ) > 0 ) { $has_style = true; if ( false !== strpos( $background_style, 'outline' ) ) { $background_style .= ' vc_icon_element-outline'; // if we use outline style it is border in css } else { $background_style .= ' vc_icon_element-background'; } } $iconClass = isset( ${'icon_' . $type} ) ? esc_attr( ${'icon_' . $type} ) : 'fa fa-adjust'; $style = ''; if ( 'custom' === $background_color ) { if ( false !== strpos( $background_style, 'outline' ) ) { $style = 'border-color:' . $custom_background_color; } else { $style = 'background-color:' . $custom_background_color; } } $style = $style ? ' style="' . esc_attr( $style ) . '"' : ''; $rel = ''; if ( ! empty( $url['rel'] ) ) { $rel = ' rel="' . esc_attr( $url['rel'] ) . '"'; } $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } ?>
      class="vc_icon_element vc_icon_element-outer 0 ? ' ' . trim( esc_attr( $css_class ) ) : ''; ?> vc_icon_element-align-">
      > > 0 && strlen( $url['url'] ) > 0 ) { echo ''; } ?>
      PK<\--include/templates/shortcodes/vc_wp_search.phpnu[getShortcode(), $atts ); extract( $atts ); $el_class = $this->getExtraClass( $el_class ); $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $output = ''; echo $output; } else { echo $this->debugComment( 'Widget ' . esc_attr( $type ) . 'Not found in : vc_wp_search' ); } // TODO: make more informative if wp is in debug mode PK<\N9dd,include/templates/shortcodes/vc_carousel.phpnu[getShortcode(), $atts ); extract( $atts ); global $vc_posts_grid_exclude_id; $vc_posts_grid_exclude_id[] = get_the_ID(); // fix recursive nesting if ( is_array( $posts_query ) ) { $posts_query['post_status'] = 'publish'; } else { $posts_query .= '|post_status:publish'; } list( $args, $my_query ) = vc_build_loop_query( $posts_query, get_the_ID() ); $teaser_blocks = vc_sorted_list_parse_value( $layout ); /** @var $my_query WP_Query */ while ( $my_query->have_posts() ) { $my_query->the_post(); // Get post from query if ( in_array( get_the_ID(), $vc_posts_grid_exclude_id ) ) { continue; } $post = new stdClass(); // Creating post object. $post->id = get_the_ID(); $post->link = get_permalink( $post->id ); $post->post_type = get_post_type(); if ( '1' === $vc_teaser_box->getTeaserData( 'enable', $post->id ) ) { $post->custom_user_teaser = true; $data = $vc_teaser_box->getTeaserData( 'data', $post->id ); if ( ! empty( $data ) ) { $data = json_decode( $data ); } $post->bgcolor = $vc_teaser_box->getTeaserData( 'bgcolor', $post->id ); $post->custom_teaser_blocks = array(); $post->title_attribute = the_title_attribute( 'echo=0' ); if ( ! empty( $data ) ) { foreach ( $data as $block ) { $settings = array(); if ( 'title' === $block->name ) { $post->title = the_title( '', '', false ); } elseif ( 'image' === $block->name ) { if ( 'featured' === $block->image ) { $post->thumbnail_data = $this->getPostThumbnail( $post->id, $thumb_size ); } elseif ( ! empty( $block->image ) ) { $post->thumbnail_data = wpb_getImageBySize( array( 'attach_id' => (int) $block->image, 'thumb_size' => $thumb_size, ) ); } else { $post->thumbnail_data = false; } $post->thumbnail = $post->thumbnail_data && isset( $post->thumbnail_data['thumbnail'] ) ? $post->thumbnail_data['thumbnail'] : ''; $post->image_link = empty( $video ) && $post->thumbnail && isset( $post->thumbnail_data['p_img_large'][0] ) ? $post->thumbnail_data['p_img_large'][0] : $video; } elseif ( 'text' === $block->name ) { if ( 'custom' === $block->mode ) { $settings[] = 'text'; $post->content = $block->text; } elseif ( 'excerpt' === $block->mode ) { $settings[] = $block->mode; $post->excerpt = $this->getPostExcerpt(); } else { $settings[] = $block->mode; $post->content = $this->getPostContent(); } } if ( isset( $block->link ) ) { if ( 'post' === $block->link ) { $settings[] = 'link_post'; } elseif ( 'big_image' === $block->link ) { $settings[] = 'link_image'; } else { $settings[] = 'no_link'; } $settings[] = ''; } $post->custom_teaser_blocks[] = array( $block->name, $settings ); } } } else { $post->custom_user_teaser = false; $post->title = the_title( '', '', false ); $post->title_attribute = the_title_attribute( 'echo=0' ); $post->post_type = get_post_type(); $post->content = $this->getPostContent(); $post->excerpt = $this->getPostExcerpt(); $post->thumbnail_data = $this->getPostThumbnail( $post->id, $thumb_size ); $post->thumbnail = $post->thumbnail_data && isset( $post->thumbnail_data['thumbnail'] ) ? $post->thumbnail_data['thumbnail'] : ''; $video = get_post_meta( $post->id, '_p_video', true ); $post->image_link = empty( $video ) && $post->thumbnail && isset( $post->thumbnail_data['p_img_large'][0] ) ? $post->thumbnail_data['p_img_large'][0] : $video; } $post->categories_css = $this->getCategoriesCss( $post->id ); $posts[] = $post; } wp_reset_query(); $this->setLinkTarget( $link_target ); wp_enqueue_script( 'vc_carousel_js' ); wp_enqueue_style( 'vc_carousel_css' ); $css_class = $this->settings['base'] . ' wpb_content_element vc_carousel_slider_' . $slides_per_view . ' vc_carousel_' . $mode . ( empty( $el_class ) ? '' : ' ' . $el_class ); $carousel_id = esc_attr( 'vc_carousel-' . WPBakeryShortCode_Vc_Carousel::getCarouselIndex() ); ?>
      $title, 'extraclass' => 'wpb_gallery_heading' ) ) ?>
      PK<\ +include/templates/shortcodes/vc_button2.phpnu[getShortcode(), $atts ); extract( $atts ); $class = 'vc_btn'; //parse link $link = ( '||' === $link ) ? '' : $link; $link = vc_build_link( $link ); $a_href = $link['url']; $a_title = $link['title']; $a_target = $link['target']; $a_rel = $link['rel']; if ( ! empty( $a_rel ) ) { $a_rel = ' rel="' . esc_attr( trim( $a_rel ) ) . '"'; } $class .= ( '' !== $color ) ? ( ' vc_btn_' . $color . ' vc_btn-' . $color ) : ''; $class .= ( '' !== $size ) ? ( ' vc_btn_' . $size . ' vc_btn-' . $size ) : ''; $class .= ( '' !== $style ) ? ' vc_btn_' . $style : ''; $el_class = $this->getExtraClass( $el_class ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, ' ' . $class . $el_class, $this->settings['base'], $atts ); $wrapper_css_class = 'vc_button-2-wrapper'; if ( $align ) { $wrapper_css_class .= ' vc_button-2-align-' . $align; } ?>
      >
      PK<\,include/templates/shortcodes/.shortcodes.phpnu[PK<\::(include/templates/shortcodes/vc_tabs.phpnu[getShortcode(), $atts ); extract( $atts ); wp_enqueue_script( 'jquery-ui-tabs' ); $el_class = $this->getExtraClass( $el_class ); $element = 'wpb_tabs'; if ( 'vc_tour' === $this->shortcode ) { $element = 'wpb_tour'; } // Extract tab titles preg_match_all( '/vc_tab([^\]]+)/i', $content, $matches, PREG_OFFSET_CAPTURE ); $tab_titles = array(); /** * vc_tabs * */ if ( isset( $matches[1] ) ) { $tab_titles = $matches[1]; } $tabs_nav = ''; $tabs_nav .= '
        '; foreach ( $tab_titles as $tab ) { $tab_atts = shortcode_parse_atts( $tab[0] ); if ( isset( $tab_atts['title'] ) ) { $tabs_nav .= '
      • ' . $tab_atts['title'] . '
      • '; } } $tabs_nav .= '
      '; $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, trim( $element . ' wpb_content_element ' . $el_class ), $this->settings['base'], $atts ); if ( 'vc_tour' === $this->shortcode ) { $next_prev_nav = ''; } else { $next_prev_nav = ''; } $output = '
      ' . wpb_widget_title( array( 'title' => $title, 'extraclass' => $element . '_heading' ) ) . $tabs_nav . wpb_js_remove_wpautop( $content ) . $next_prev_nav . '
      '; echo $output; PK<\ְ 'include/templates/shortcodes/vc_row.phpnu[getShortcode(), $atts ); extract( $atts ); wp_enqueue_script( 'wpb_composer_front_js' ); $el_class = $this->getExtraClass( $el_class ) . $this->getCSSAnimation( $css_animation ); $css_classes = array( 'vc_row', 'wpb_row', //deprecated 'vc_row-fluid', $el_class, vc_shortcode_custom_css_class( $css ), ); if ( 'yes' === $disable_element ) { if ( vc_is_page_editable() ) { $css_classes[] = 'vc_hidden-lg vc_hidden-xs vc_hidden-sm vc_hidden-md'; } else { return ''; } } if ( vc_shortcode_custom_css_has_property( $css, array( 'border', 'background', ) ) || $video_bg || $parallax ) { $css_classes[] = 'vc_row-has-fill'; } if ( ! empty( $atts['gap'] ) ) { $css_classes[] = 'vc_column-gap-' . $atts['gap']; } $wrapper_attributes = array(); // build attributes for wrapper if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } if ( ! empty( $full_width ) ) { $wrapper_attributes[] = 'data-vc-full-width="true"'; $wrapper_attributes[] = 'data-vc-full-width-init="false"'; if ( 'stretch_row_content' === $full_width ) { $wrapper_attributes[] = 'data-vc-stretch-content="true"'; } elseif ( 'stretch_row_content_no_spaces' === $full_width ) { $wrapper_attributes[] = 'data-vc-stretch-content="true"'; $css_classes[] = 'vc_row-no-padding'; } $after_output .= '
      '; } if ( ! empty( $full_height ) ) { $css_classes[] = 'vc_row-o-full-height'; if ( ! empty( $columns_placement ) ) { $flex_row = true; $css_classes[] = 'vc_row-o-columns-' . $columns_placement; if ( 'stretch' === $columns_placement ) { $css_classes[] = 'vc_row-o-equal-height'; } } } if ( ! empty( $equal_height ) ) { $flex_row = true; $css_classes[] = 'vc_row-o-equal-height'; } if ( ! empty( $content_placement ) ) { $flex_row = true; $css_classes[] = 'vc_row-o-content-' . $content_placement; } if ( ! empty( $flex_row ) ) { $css_classes[] = 'vc_row-flex'; } $has_video_bg = ( ! empty( $video_bg ) && ! empty( $video_bg_url ) && vc_extract_youtube_id( $video_bg_url ) ); $parallax_speed = $parallax_speed_bg; if ( $has_video_bg ) { $parallax = $video_bg_parallax; $parallax_speed = $parallax_speed_video; $parallax_image = $video_bg_url; $css_classes[] = 'vc_video-bg-container'; wp_enqueue_script( 'vc_youtube_iframe_api_js' ); } if ( ! empty( $parallax ) ) { wp_enqueue_script( 'vc_jquery_skrollr_js' ); $wrapper_attributes[] = 'data-vc-parallax="' . esc_attr( $parallax_speed ) . '"'; // parallax speed $css_classes[] = 'vc_general vc_parallax vc_parallax-' . $parallax; if ( false !== strpos( $parallax, 'fade' ) ) { $css_classes[] = 'js-vc_parallax-o-fade'; $wrapper_attributes[] = 'data-vc-parallax-o-fade="on"'; } elseif ( false !== strpos( $parallax, 'fixed' ) ) { $css_classes[] = 'js-vc_parallax-o-fixed'; } } if ( ! empty( $parallax_image ) ) { if ( $has_video_bg ) { $parallax_image_src = $parallax_image; } else { $parallax_image_id = preg_replace( '/[^\d]/', '', $parallax_image ); $parallax_image_src = wp_get_attachment_image_src( $parallax_image_id, 'full' ); if ( ! empty( $parallax_image_src[0] ) ) { $parallax_image_src = $parallax_image_src[0]; } } $wrapper_attributes[] = 'data-vc-parallax-image="' . esc_attr( $parallax_image_src ) . '"'; } if ( ! $parallax && $has_video_bg ) { $wrapper_attributes[] = 'data-vc-video-bg="' . esc_attr( $video_bg_url ) . '"'; } $css_class = preg_replace( '/\s+/', ' ', apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, implode( ' ', array_filter( array_unique( $css_classes ) ) ), $this->settings['base'], $atts ) ); $wrapper_attributes[] = 'class="' . esc_attr( trim( $css_class ) ) . '"'; $output .= '
      '; $output .= wpb_js_remove_wpautop( $content ); $output .= '
      '; $output .= $after_output; echo $output; PK<\61include/templates/shortcodes/vc_accordion_tab.phpnu[getShortcode(), $atts ); extract( $atts ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, 'wpb_accordion_section group', $this->settings['base'], $atts ); $output = '

      ' . $title . '

      ' . ( ( '' === trim( $content ) ) ? __( 'Empty section. Edit page to add content here.', 'js_composer' ) : wpb_js_remove_wpautop( $content ) ) . '
      '; echo $output; PK<\lӤ-include/templates/shortcodes/vc_row_inner.phpnu[getShortcode(), $atts ); extract( $atts ); $el_class = $this->getExtraClass( $el_class ); $css_classes = array( 'vc_row', 'wpb_row', //deprecated 'vc_inner', 'vc_row-fluid', $el_class, vc_shortcode_custom_css_class( $css ), ); if ( 'yes' === $disable_element ) { if ( vc_is_page_editable() ) { $css_classes[] = 'vc_hidden-lg vc_hidden-xs vc_hidden-sm vc_hidden-md'; } else { return ''; } } if ( vc_shortcode_custom_css_has_property( $css, array( 'border', 'background', ) ) ) { $css_classes[] = 'vc_row-has-fill'; } if ( ! empty( $atts['gap'] ) ) { $css_classes[] = 'vc_column-gap-' . $atts['gap']; } if ( ! empty( $equal_height ) ) { $flex_row = true; $css_classes[] = 'vc_row-o-equal-height'; } if ( ! empty( $content_placement ) ) { $flex_row = true; $css_classes[] = 'vc_row-o-content-' . $content_placement; } if ( ! empty( $flex_row ) ) { $css_classes[] = 'vc_row-flex'; } $wrapper_attributes = array(); // build attributes for wrapper if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $css_class = preg_replace( '/\s+/', ' ', apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, implode( ' ', array_filter( array_unique( $css_classes ) ) ), $this->settings['base'], $atts ) ); $wrapper_attributes[] = 'class="' . esc_attr( trim( $css_class ) ) . '"'; $output .= '
      '; $output .= wpb_js_remove_wpautop( $content ); $output .= '
      '; $output .= $after_output; echo $output; PK<\i{2include/templates/shortcodes/vc_widget_sidebar.phpnu[getShortcode(), $atts ); extract( $atts ); if ( '' === $sidebar_id ) { return null; } $el_class = $this->getExtraClass( $el_class ); ob_start(); dynamic_sidebar( $sidebar_id ); $sidebar_value = ob_get_contents(); ob_end_clean(); $sidebar_value = trim( $sidebar_value ); $sidebar_value = ( '' . $sidebar_value . '' : $sidebar_value; $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, 'wpb_widgetised_column wpb_content_element' . $el_class, $this->settings['base'], $atts ); $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $output = '
      ' . wpb_widget_title( array( 'title' => $title, 'extraclass' => 'wpb_widgetised_column_heading' ) ) . ' ' . $sidebar_value . '
      '; echo $output; PK<\*include/templates/shortcodes/vc_wp_rss.phpnu[getShortcode(), $atts ); $atts['url'] = html_entity_decode( $atts['url'], ENT_QUOTES ); // fix #2034 extract( $atts ); if ( '' === $url ) { return; } $options = explode( ',', $options ); if ( in_array( 'show_summary', $options ) ) { $atts['show_summary'] = true; } if ( in_array( 'show_author', $options ) ) { $atts['show_author'] = true; } if ( in_array( 'show_date', $options ) ) { $atts['show_date'] = true; } $el_class = $this->getExtraClass( $el_class ); $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $output = '
      '; $type = 'WP_Widget_RSS'; $args = array(); global $wp_widget_factory; // to avoid unwanted warnings let's check before using widget if ( is_object( $wp_widget_factory ) && isset( $wp_widget_factory->widgets, $wp_widget_factory->widgets[ $type ] ) ) { ob_start(); the_widget( $type, $atts, $args ); $output .= ob_get_clean(); $output .= '
      '; echo $output; } else { echo $this->debugComment( 'Widget ' . esc_attr( $type ) . 'Not found in : vc_wp_rss' ); } PK<\euu/include/templates/shortcodes/vc_gitem_image.phpnu[{{ featured_image: }} PK<\eE.include/templates/shortcodes/vc_googleplus.phpnu[getShortcode(), $atts ); extract( $atts ); if ( empty( $annotation ) ) { $annotation = 'bubble'; } $params = ''; $params .= ( '' !== $type ) ? ' size="' . $type . '"' : ''; $params .= ( '' !== $annotation ) ? ' annotation="' . $annotation . '"' : ''; if ( empty( $type ) ) { $type = 'standard'; } if ( 'inline' === $annotation && strlen( $widget_width ) > 0 ) { $params .= ' width="' . (int) $widget_width . '"'; } $class_to_filter = 'wpb_googleplus wpb_content_element wpb_googleplus_type_' . $type . ' vc_googleplus-annotation-' . $annotation . $this->getCSSAnimation( $css_animation ) . $this->getExtraClass( $el_class ); $class_to_filter .= vc_shortcode_custom_css_class( $css, ' ' ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts ); $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $output = '
      '; echo $output; PK<\L2,include/templates/shortcodes/vc_raw_html.phpnu[getShortcode(), $atts ); extract( $atts ); $content = rawurldecode( base64_decode( strip_tags( $content ) ) ); $content = wpb_js_remove_wpautop( apply_filters( 'vc_raw_html_module_content', $content ) ); // template is also used by 'Raw JS' shortcode which doesn't have Design Options if ( ! isset( $css ) ) { $css = ''; } $class_to_filter = 'wpb_raw_code ' . ( ( 'vc_raw_html' === $this->settings['base'] ) ? 'wpb_content_element wpb_raw_html' : 'wpb_raw_js' ); $class_to_filter .= vc_shortcode_custom_css_class( $css, ' ' ) . $this->getExtraClass( $el_class ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts ); $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $output = '
      ' . $content . '
      '; echo $output; PK<\ pp0include/templates/shortcodes/vc_posts_slider.phpnu[getShortcode(), $atts ); extract( $atts ); $gal_images = ''; $link_start = ''; $link_end = ''; $el_start = ''; $el_end = ''; $slides_wrap_start = ''; $slides_wrap_end = ''; if ( 'nivo' === $type ) { $type = ' wpb_slider_nivo theme-default'; wp_enqueue_script( 'nivo-slider' ); wp_enqueue_style( 'nivo-slider-css' ); wp_enqueue_style( 'nivo-slider-theme' ); $slides_wrap_start = '
      '; $slides_wrap_end = '
      '; } elseif ( 'flexslider' === $type || 'flexslider_fade' === $type || 'flexslider_slide' === $type || 'fading' === $type ) { $el_start = '
    • '; $el_end = '
    • '; $slides_wrap_start = '
        '; $slides_wrap_end = '
      '; wp_enqueue_style( 'flexslider' ); wp_enqueue_script( 'flexslider' ); } $flex_fx = ''; if ( 'flexslider' === $type || 'flexslider_fade' === $type || 'fading' === $type ) { $type = ' wpb_flexslider flexslider_fade flexslider'; $flex_fx = ' data-flex_fx="fade"'; } elseif ( 'flexslider_slide' === $type ) { $type = ' wpb_flexslider flexslider_slide flexslider'; $flex_fx = ' data-flex_fx="slide"'; } if ( 'link_image' === $link ) { wp_enqueue_script( 'prettyphoto' ); wp_enqueue_style( 'prettyphoto' ); } $query_args = array( 'post_status' => 'publish', ); //exclude current post/page from query if ( '' !== $posts_in ) { $query_args['post__in'] = explode( ',', $posts_in ); } global $vc_posts_grid_exclude_id; $vc_posts_grid_exclude_id[] = get_the_ID(); $query_args['post__not_in'] = array( get_the_ID() ); // Post teasers count if ( '' !== $count && ! is_numeric( $count ) ) { $count = - 1; } if ( '' !== $count && is_numeric( $count ) ) { $query_args['posts_per_page'] = $count; } // Post types $pt = array(); if ( '' !== $posttypes ) { $posttypes = explode( ',', $posttypes ); foreach ( $posttypes as $post_type ) { array_push( $pt, $post_type ); } $query_args['post_type'] = $pt; } // Narrow by categories if ( '' !== $categories ) { $categories = explode( ',', $categories ); $gc = array(); foreach ( $categories as $grid_cat ) { array_push( $gc, $grid_cat ); } $gc = implode( ',', $gc ); // http://snipplr.com/view/17434/wordpress-get-category-slug/ $query_args['category_name'] = $gc; $taxonomies = get_taxonomies( '', 'object' ); $query_args['tax_query'] = array( 'relation' => 'OR' ); foreach ( $taxonomies as $t ) { if ( in_array( $t->object_type[0], $pt ) ) { $query_args['tax_query'][] = array( 'taxonomy' => $t->name, 'terms' => $categories, 'field' => 'slug', ); } } } // Order posts if ( null !== $orderby ) { $query_args['orderby'] = $orderby; } $query_args['order'] = $order; // Run query $my_query = new WP_Query( $query_args ); $pretty_rel_random = ' data-rel="prettyPhoto[rel-' . get_the_ID() . '-' . rand() . ']"'; if ( 'custom_link' === $link ) { $custom_links = explode( ',', $custom_links ); } $teasers = ''; $i = - 1; while ( $my_query->have_posts() ) { $i ++; $my_query->the_post(); $post_title = the_title( '', '', false ); $post_id = $my_query->post->ID; if ( in_array( get_the_ID(), $vc_posts_grid_exclude_id ) ) { continue; } if ( 'teaser' === $slides_content ) { $content = apply_filters( 'the_excerpt', get_the_excerpt() ); } else { $content = ''; } $thumbnail = ''; // Thumbnail logic $post_thumbnail = $p_img_large = ''; $post_thumbnail = wpb_getImageBySize( array( 'post_id' => $post_id, 'thumb_size' => $thumb_size ) ); $thumbnail = $post_thumbnail['thumbnail']; $p_img_large = $post_thumbnail['p_img_large']; // Link logic if ( 'link_no' !== $link ) { if ( 'link_post' === $link ) { $link_image_start = ''; } elseif ( 'link_image' === $link ) { $p_video = get_post_meta( $post_id, '_p_video', true ); // if ( '' !== $p_video ) { $p_link = $p_video; } else { $p_link = $p_img_large[0]; } $link_image_start = ''; } elseif ( 'custom_link' === $link ) { if ( isset( $custom_links[ $i ] ) ) { $slide_custom_link = $custom_links[ $i ]; } else { $slide_custom_link = $custom_links[0]; } $link_image_start = ''; } $link_image_end = ''; } else { $link_image_start = ''; $link_image_end = ''; } $description = ''; if ( '' !== $slides_content && '' !== $content && ( ' wpb_flexslider flexslider_fade flexslider' === $type || ' wpb_flexslider flexslider_slide flexslider' === $type ) ) { $description = '
      '; if ( $slides_title ) { $description .= '

      ' . $link_image_start . $post_title . $link_image_end . '

      '; } $description .= $content; $description .= '
      '; } $teasers .= $el_start . $link_image_start . $thumbnail . $link_image_end . $description . $el_end; } // endwhile loop wp_reset_query(); if ( $teasers ) { $teasers = $slides_wrap_start . $teasers . $slides_wrap_end; } else { $teasers = __( 'Nothing found.', 'js_composer' ); } $class_to_filter = 'wpb_gallery wpb_posts_slider wpb_content_element'; $class_to_filter .= vc_shortcode_custom_css_class( $css, ' ' ) . $this->getExtraClass( $el_class ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts ); $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $output = '
      ' . wpb_widget_title( array( 'title' => $title, 'extraclass' => 'wpb_posts_slider_heading' ) ) . '
      '; echo $output; PK<\.0include/templates/shortcodes/vc_progress_bar.phpnu[getShortcode(), $atts ); $atts = $this->convertAttributesToNewProgressBar( $atts ); extract( $atts ); wp_enqueue_script( 'waypoints' ); $el_class = $this->getExtraClass( $el_class ) . $this->getCSSAnimation( $css_animation ); $bar_options = array(); $options = explode( ',', $options ); if ( in_array( 'animated', $options ) ) { $bar_options[] = 'animated'; } if ( in_array( 'striped', $options ) ) { $bar_options[] = 'striped'; } if ( 'custom' === $bgcolor && '' !== $custombgcolor ) { $custombgcolor = ' style="' . vc_get_css_color( 'background-color', $custombgcolor ) . '"'; if ( '' !== $customtxtcolor ) { $customtxtcolor = ' style="' . vc_get_css_color( 'color', $customtxtcolor ) . '"'; } $bgcolor = ''; } else { $custombgcolor = ''; $customtxtcolor = ''; $bgcolor = 'vc_progress-bar-color-' . esc_attr( $bgcolor ); $el_class .= ' ' . $bgcolor; } $class_to_filter = 'vc_progress_bar wpb_content_element'; $class_to_filter .= vc_shortcode_custom_css_class( $css, ' ' ) . $this->getExtraClass( $el_class ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts ); $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $output = '
      '; $output .= wpb_widget_title( array( 'title' => $title, 'extraclass' => 'wpb_progress_bar_heading' ) ); $values = (array) vc_param_group_parse_atts( $values ); $max_value = 0.0; $graph_lines_data = array(); foreach ( $values as $data ) { $new_line = $data; $new_line['value'] = isset( $data['value'] ) ? $data['value'] : 0; $new_line['label'] = isset( $data['label'] ) ? $data['label'] : ''; $new_line['bgcolor'] = isset( $data['color'] ) && 'custom' !== $data['color'] ? '' : $custombgcolor; $new_line['txtcolor'] = isset( $data['color'] ) && 'custom' !== $data['color'] ? '' : $customtxtcolor; if ( isset( $data['customcolor'] ) && ( ! isset( $data['color'] ) || 'custom' === $data['color'] ) ) { $new_line['bgcolor'] = ' style="background-color: ' . esc_attr( $data['customcolor'] ) . ';"'; } if ( isset( $data['customtxtcolor'] ) && ( ! isset( $data['color'] ) || 'custom' === $data['color'] ) ) { $new_line['txtcolor'] = ' style="color: ' . esc_attr( $data['customtxtcolor'] ) . ';"'; } if ( $max_value < (float) $new_line['value'] ) { $max_value = $new_line['value']; } $graph_lines_data[] = $new_line; } foreach ( $graph_lines_data as $line ) { $unit = ( '' !== $units ) ? ' ' . $line['value'] . $units . '' : ''; $output .= '
      '; $output .= '' . $line['label'] . $unit . ''; if ( $max_value > 100.00 ) { $percentage_value = (float) $line['value'] > 0 && $max_value > 100.00 ? round( (float) $line['value'] / $max_value * 100, 4 ) : 0; } else { $percentage_value = $line['value']; } $output .= ''; $output .= '
      '; } $output .= '
      '; echo $output; PK<\pڟ.include/templates/shortcodes/vc_cta_button.phpnu[getShortcode(), $atts ); extract( $atts ); $el_class = $this->getExtraClass( $el_class ); if ( 'same' === $target || '_self' === $target ) { $target = ''; } if ( '' !== $target ) { $target = ' target="' . esc_attr( $target ) . '"'; } $icon = ( '' !== $icon && 'none' !== $icon ) ? ' ' . $icon : ''; $i_icon = ( '' !== $icon ) ? ' ' : ''; $color = ( '' !== $color ) ? ' wpb_' . $color : ''; $size = ( '' !== $size && 'wpb_regularsize' !== $size ) ? ' wpb_' . $size : ' ' . $size; $a_class = ''; if ( '' !== $el_class ) { $tmp_class = explode( ' ', $el_class ); if ( in_array( 'prettyphoto', $tmp_class ) ) { wp_enqueue_script( 'prettyphoto' ); wp_enqueue_style( 'prettyphoto' ); $a_class .= ' prettyphoto'; $el_class = str_ireplace( 'prettyphoto', '', $el_class ); } } if ( '' !== $href ) { $button = '' . $title . $i_icon . ''; $button = '' . $button . ''; } else { $button = ''; $el_class .= ' cta_no_button'; } $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, 'wpb_call_to_action wpb_content_element vc_clearfix ' . $position . $el_class, $this->settings['base'], $atts ); $css_class .= $this->getCSSAnimation( $css_animation ); $output .= '
      '; if ( 'cta_align_bottom' !== $position ) { $output .= $button; } $output .= apply_filters( 'wpb_cta_text', '

      ' . $call_text . '

      ', array( 'content' => $call_text ) ); if ( 'cta_align_bottom' === $position ) { $output .= $button; } $output .= '
      '; echo $output; PK<\;v33+include/templates/shortcodes/vc_section.phpnu[getShortcode(), $atts ); extract( $atts ); wp_enqueue_script( 'wpb_composer_front_js' ); $el_class = $this->getExtraClass( $el_class ) . $this->getCSSAnimation( $css_animation ); $css_classes = array( 'vc_section', $el_class, vc_shortcode_custom_css_class( $css ), ); if ( 'yes' === $disable_element ) { if ( vc_is_page_editable() ) { $css_classes[] = 'vc_hidden-lg vc_hidden-xs vc_hidden-sm vc_hidden-md'; } else { return ''; } } if ( vc_shortcode_custom_css_has_property( $css, array( 'border', 'background', ) ) || $video_bg || $parallax ) { $css_classes[] = 'vc_section-has-fill'; } $wrapper_attributes = array(); // build attributes for wrapper if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } if ( ! empty( $full_width ) ) { $wrapper_attributes[] = 'data-vc-full-width="true"'; $wrapper_attributes[] = 'data-vc-full-width-init="false"'; if ( 'stretch_row_content' === $full_width ) { $wrapper_attributes[] = 'data-vc-stretch-content="true"'; } $after_output .= '
      '; } if ( ! empty( $full_height ) ) { $css_classes[] = 'vc_row-o-full-height'; } if ( ! empty( $content_placement ) ) { $flex_row = true; $css_classes[] = 'vc_section-o-content-' . $content_placement; } if ( ! empty( $flex_row ) ) { $css_classes[] = 'vc_section-flex'; } $has_video_bg = ( ! empty( $video_bg ) && ! empty( $video_bg_url ) && vc_extract_youtube_id( $video_bg_url ) ); $parallax_speed = $parallax_speed_bg; if ( $has_video_bg ) { $parallax = $video_bg_parallax; $parallax_speed = $parallax_speed_video; $parallax_image = $video_bg_url; $css_classes[] = 'vc_video-bg-container'; wp_enqueue_script( 'vc_youtube_iframe_api_js' ); } if ( ! empty( $parallax ) ) { wp_enqueue_script( 'vc_jquery_skrollr_js' ); $wrapper_attributes[] = 'data-vc-parallax="' . esc_attr( $parallax_speed ) . '"'; // parallax speed $css_classes[] = 'vc_general vc_parallax vc_parallax-' . $parallax; if ( false !== strpos( $parallax, 'fade' ) ) { $css_classes[] = 'js-vc_parallax-o-fade'; $wrapper_attributes[] = 'data-vc-parallax-o-fade="on"'; } elseif ( false !== strpos( $parallax, 'fixed' ) ) { $css_classes[] = 'js-vc_parallax-o-fixed'; } } if ( ! empty( $parallax_image ) ) { if ( $has_video_bg ) { $parallax_image_src = $parallax_image; } else { $parallax_image_id = preg_replace( '/[^\d]/', '', $parallax_image ); $parallax_image_src = wp_get_attachment_image_src( $parallax_image_id, 'full' ); if ( ! empty( $parallax_image_src[0] ) ) { $parallax_image_src = $parallax_image_src[0]; } } $wrapper_attributes[] = 'data-vc-parallax-image="' . esc_attr( $parallax_image_src ) . '"'; } if ( ! $parallax && $has_video_bg ) { $wrapper_attributes[] = 'data-vc-video-bg="' . esc_attr( $video_bg_url ) . '"'; } $css_class = preg_replace( '/\s+/', ' ', apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, implode( ' ', array_filter( array_unique( $css_classes ) ) ), $this->settings['base'], $atts ) ); $wrapper_attributes[] = 'class="' . esc_attr( trim( $css_class ) ) . '"'; $output .= '
      '; $output .= wpb_js_remove_wpautop( $content ); $output .= '
      '; $output .= $after_output; echo $output; PK<\II9include/templates/shortcodes/vc_gitem_post_categories.phpnu[getShortcode(), $atts ); ?> {{ post_categories: $atts, ) ); ?> }} PK<\|,include/templates/shortcodes/vc_facebook.phpnu[getShortcode(), $atts ); extract( $atts ); $url = get_permalink(); $el_class = isset( $el_class ) ? $el_class : ''; $class_to_filter = 'fb_like wpb_content_element fb_type_' . $type; $class_to_filter .= vc_shortcode_custom_css_class( $css, ' ' ) . $this->getExtraClass( $el_class ) . $this->getCSSAnimation( $css_animation ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts ); $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $output = '
      '; echo $output; PK<\]=KK.include/templates/shortcodes/rev_slider_vc.phpnu[getShortcode(), $atts ); extract( $atts ); $el_class = $this->getExtraClass( $el_class ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, 'wpb_revslider_element wpb_content_element' . $el_class, $this->settings['base'], $atts ); $output .= '
      '; $output .= wpb_widget_title( array( 'title' => $title, 'extraclass' => 'wpb_revslider_heading' ) ); $output .= apply_filters( 'vc_revslider_shortcode', do_shortcode( '[rev_slider ' . $alias . ']' ) ); $output .= '
      '; echo $output; PK<\/include/templates/shortcodes/vc_round_chart.phpnu[getShortcode(), $atts ); extract( $atts ); $base_colors = array( 'normal' => array( 'blue' => '#5472d2', 'turquoise' => '#00c1cf', 'pink' => '#fe6c61', 'violet' => '#8d6dc4', 'peacoc' => '#4cadc9', 'chino' => '#cec2ab', 'mulled-wine' => '#50485b', 'vista-blue' => '#75d69c', 'orange' => '#f7be68', 'sky' => '#5aa1e3', 'green' => '#6dab3c', 'juicy-pink' => '#f4524d', 'sandy-brown' => '#f79468', 'purple' => '#b97ebb', 'black' => '#2a2a2a', 'grey' => '#ebebeb', 'white' => '#ffffff', 'default' => '#f7f7f7', 'primary' => '#0088cc', 'info' => '#58b9da', 'success' => '#6ab165', 'warning' => '#ff9900', 'danger' => '#ff675b', 'inverse' => '#555555', ), 'active' => array( 'blue' => '#3c5ecc', 'turquoise' => '#00a4b0', 'pink' => '#fe5043', 'violet' => '#7c57bb', 'peacoc' => '#39a0bd', 'chino' => '#c3b498', 'mulled-wine' => '#413a4a', 'vista-blue' => '#5dcf8b', 'orange' => '#f5b14b', 'sky' => '#4092df', 'green' => '#5f9434', 'juicy-pink' => '#f23630', 'sandy-brown' => '#f57f4b', 'purple' => '#ae6ab0', 'black' => '#1b1b1b', 'grey' => '#dcdcdc', 'white' => '#f0f0f0', 'default' => '#e8e8e8', 'primary' => '#0074ad', 'info' => '#3fafd4', 'success' => '#59a453', 'warning' => '#e08700', 'danger' => '#ff4b3c', 'inverse' => '#464646', ), ); $colors = array( 'flat' => array( 'normal' => $base_colors['normal'], 'active' => $base_colors['active'], ), ); foreach ( $base_colors['normal'] as $name => $color ) { $colors['modern']['normal'][ $name ] = array( vc_colorCreator( $color, 7 ), $color ); } foreach ( $base_colors['active'] as $name => $color ) { $colors['modern']['active'][ $name ] = array( vc_colorCreator( $color, 7 ), $color ); } wp_enqueue_script( 'vc_round_chart' ); $class_to_filter = 'vc_chart vc_round-chart wpb_content_element'; $class_to_filter .= vc_shortcode_custom_css_class( $css, ' ' ) . $this->getExtraClass( $el_class ) . $this->getCSSAnimation( $css_animation ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts ); $options = array(); if ( ! empty( $legend ) ) { $options[] = 'data-vc-legend="1"'; } if ( ! empty( $tooltips ) ) { $options[] = 'data-vc-tooltips="1"'; } if ( ! empty( $animation ) ) { $options[] = 'data-vc-animation="' . esc_attr( $animation ) . '"'; } if ( ! empty( $stroke_color ) ) { if ( 'custom' === $stroke_color ) { if ( $custom_stroke_color ) { $color = $custom_stroke_color; } else { $color = $base_colors['normal']['white']; } } else { $color = $base_colors['normal'][ $stroke_color ]; } $options[] = 'data-vc-stroke-color="' . esc_attr( $color ) . '"'; } if ( ! empty( $stroke_width ) ) { $options[] = 'data-vc-stroke-width="' . esc_attr( $stroke_width ) . '"'; } $values = (array) vc_param_group_parse_atts( $values ); $data = array(); foreach ( $values as $k => $v ) { if ( 'custom' === $style ) { if ( ! empty( $v['custom_color'] ) ) { $color = $v['custom_color']; $highlight = vc_colorCreator( $v['custom_color'], - 10 ); //10% darker } else { $color = $base_colors['normal']['grey']; $highlight = $base_colors['active']['grey']; } } else { $color = isset( $colors[ $style ]['normal'][ $v['color'] ] ) ? $colors[ $style ]['normal'][ $v['color'] ] : $v['normal']['color']; $highlight = isset( $colors[ $style ]['active'][ $v['color'] ] ) ? $colors[ $style ]['active'][ $v['color'] ] : $v['active']['color']; } $data[] = array( 'value' => intval( isset( $v['value'] ) ? $v['value'] : 0 ), 'color' => $color, 'highlight' => $highlight, 'label' => isset( $v['title'] ) ? $v['title'] : '', ); } $options[] = 'data-vc-type="' . esc_attr( $type ) . '"'; $options[] = 'data-vc-values="' . esc_attr( json_encode( $data ) ) . '"'; if ( '' !== $title ) { $title = '

      ' . $title . '

      '; } $canvas_html = ''; $legend_html = ''; if ( $legend ) { foreach ( $data as $v ) { $color = is_array( $v['color'] ) ? current( $v['color'] ) : $v['color']; $legend_html .= '
    • ' . $v['label'] . '
    • '; } $legend_html = '
        ' . $legend_html . '
      '; $canvas_html = '
      ' . $canvas_html . '
      '; } if ( ! empty( $el_id ) ) { $options[] = 'id="' . esc_attr( $el_id ) . '"'; } $output = '
      ' . $title . '
      ' . $canvas_html . $legend_html . '
      ' . '
      ' . ' '; echo $output; PK<\7GS S /include/templates/shortcodes/vc_cta_button2.phpnu[getShortcode(), $atts ); extract( $atts ); $class = 'vc_call_to_action wpb_content_element'; $link = ( '||' === $link ) ? '' : $link; $class .= ( '' !== $position ) ? ' vc_cta_btn_pos_' . $position : ''; $class .= ( '' !== $el_width ) ? ' vc_el_width_' . $el_width : ''; $class .= ( '' !== $color ) ? ' vc_cta_' . $color : ''; $class .= ( '' !== $style ) ? ' vc_cta_' . $style : ''; $class .= ( '' !== $txt_align ) ? ' vc_txt_align_' . $txt_align : ''; $inline_css = ( '' !== $accent_color ) ? ' style="' . vc_get_css_color( 'background-color', $accent_color ) . vc_get_css_color( 'border-color', $accent_color ) . '"' : ''; $class .= $this->getExtraClass( $el_class ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class, $this->settings['base'], $atts ); $css_class .= $this->getCSSAnimation( $css_animation ); ?> class="">

      PK<\,include/templates/shortcodes/vc_wp_links.phpnu[getShortcode(), $atts ); extract( $atts ); $options = explode( ',', $options ); if ( in_array( 'images', $options ) ) { $atts['images'] = true; } if ( in_array( 'name', $options ) ) { $atts['name'] = true; } if ( in_array( 'description', $options ) ) { $atts['description'] = true; } if ( in_array( 'rating', $options ) ) { $atts['rating'] = true; } $el_class = $this->getExtraClass( $el_class ); $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $output = ''; echo $output; } else { echo $this->debugComment( 'Widget ' . esc_attr( $type ) . 'Not found in : vc_wp_links' ); } PK<\*include/templates/shortcodes/vc_zigzag.phpnu[getShortcode(), $atts ); $class_to_filter = 'vc-zigzag-wrapper'; $class_to_filter .= vc_shortcode_custom_css_class( $atts['css'], ' ' ) . $this->getExtraClass( $atts['el_class'] ) . $this->getCSSAnimation( $atts['css_animation'] ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts ); $wrapper_attributes = array(); if ( ! empty( $atts['align'] ) ) { $class_to_filter .= ' vc-zigzag-align-' . esc_attr( $atts['align'] ); } if ( ! empty( $atts['el_id'] ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $atts['el_id'] ) . '"'; } $color = ''; if ( 'custom' !== $atts['color'] ) { $color = vc_convert_vc_color( $atts['color'] ); } else { $color = esc_attr( $atts['custom_color'] ); } $width = '100%'; if ( ! empty( $atts['el_width'] ) ) { $width = esc_attr( $atts['el_width'] ) . '%'; } $border_width = '10'; if ( ! empty( $atts['el_border_width'] ) ) { $border_width = esc_attr( $atts['el_border_width'] ); } $minheight = 2 + intval( $border_width ); $svg = ''; ?>
      >
      PK<\ '1include/templates/shortcodes/vc_wp_categories.phpnu[getShortcode(), $atts ); extract( $atts ); $options = explode( ',', $options ); if ( in_array( 'dropdown', $options ) ) { $atts['dropdown'] = true; } if ( in_array( 'count', $options ) ) { $atts['count'] = true; } if ( in_array( 'hierarchical', $options ) ) { $atts['hierarchical'] = true; } $el_class = $this->getExtraClass( $el_class ); $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $output = '
      '; $type = 'WP_Widget_Categories'; $args = array(); global $wp_widget_factory; // to avoid unwanted warnings let's check before using widget if ( is_object( $wp_widget_factory ) && isset( $wp_widget_factory->widgets, $wp_widget_factory->widgets[ $type ] ) ) { ob_start(); the_widget( $type, $atts, $args ); $output .= ob_get_clean(); $output .= '
      '; echo $output; } else { echo $this->debugComment( 'Widget ' . esc_attr( $type ) . 'Not found in : vc_wp_categories' ); } PK<\Bݛ *include/templates/shortcodes/vc_column.phpnu[getShortcode(), $atts ); extract( $atts ); wp_enqueue_script( 'wpb_composer_front_js' ); $width = wpb_translateColumnWidthToSpan( $width ); $width = vc_column_offset_class_merge( $offset, $width ); $css_classes = array( $this->getExtraClass( $el_class ) . $this->getCSSAnimation( $css_animation ), 'wpb_column', 'vc_column_container', $width, ); if ( vc_shortcode_custom_css_has_property( $css, array( 'border', 'background', ) ) || $video_bg || $parallax ) { $css_classes[] = 'vc_col-has-fill'; } $wrapper_attributes = array(); $has_video_bg = ( ! empty( $video_bg ) && ! empty( $video_bg_url ) && vc_extract_youtube_id( $video_bg_url ) ); $parallax_speed = $parallax_speed_bg; if ( $has_video_bg ) { $parallax = $video_bg_parallax; $parallax_speed = $parallax_speed_video; $parallax_image = $video_bg_url; $css_classes[] = 'vc_video-bg-container'; wp_enqueue_script( 'vc_youtube_iframe_api_js' ); } if ( ! empty( $parallax ) ) { wp_enqueue_script( 'vc_jquery_skrollr_js' ); $wrapper_attributes[] = 'data-vc-parallax="' . esc_attr( $parallax_speed ) . '"'; // parallax speed $css_classes[] = 'vc_general vc_parallax vc_parallax-' . $parallax; if ( false !== strpos( $parallax, 'fade' ) ) { $css_classes[] = 'js-vc_parallax-o-fade'; $wrapper_attributes[] = 'data-vc-parallax-o-fade="on"'; } elseif ( false !== strpos( $parallax, 'fixed' ) ) { $css_classes[] = 'js-vc_parallax-o-fixed'; } } if ( ! empty( $parallax_image ) ) { if ( $has_video_bg ) { $parallax_image_src = $parallax_image; } else { $parallax_image_id = preg_replace( '/[^\d]/', '', $parallax_image ); $parallax_image_src = wp_get_attachment_image_src( $parallax_image_id, 'full' ); if ( ! empty( $parallax_image_src[0] ) ) { $parallax_image_src = $parallax_image_src[0]; } } $wrapper_attributes[] = 'data-vc-parallax-image="' . esc_attr( $parallax_image_src ) . '"'; } if ( ! $parallax && $has_video_bg ) { $wrapper_attributes[] = 'data-vc-video-bg="' . esc_attr( $video_bg_url ) . '"'; } $css_class = preg_replace( '/\s+/', ' ', apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, implode( ' ', array_filter( $css_classes ) ), $this->settings['base'], $atts ) ); $wrapper_attributes[] = 'class="' . esc_attr( trim( $css_class ) ) . '"'; if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $output .= '
      '; $output .= '
      '; $output .= '
      '; $output .= wpb_js_remove_wpautop( $content ); $output .= '
      '; $output .= '
      '; $output .= '
      '; echo $output; PK<\?;=uu.include/templates/shortcodes/vc_posts_grid.phpnu[getShortcode(), $atts ); extract( $atts ); $this->resetTaxonomies(); if ( empty( $loop ) ) { return; } $this->getLoop( $loop ); $my_query = $this->query; $args = $this->loop_args; $teaser_blocks = vc_sorted_list_parse_value( $grid_layout ); global $vc_posts_grid_exclude_id; /** @var $my_query WP_Query */ while ( $my_query->have_posts() ) { $my_query->the_post(); // Get post from query $post = new stdClass(); // Creating post object. if ( in_array( get_the_ID(), $vc_posts_grid_exclude_id ) ) { continue; } $post->id = get_the_ID(); $post->link = get_permalink( $post->id ); if ( '1' === $vc_teaser_box->getTeaserData( 'enable', $post->id ) ) { $post->custom_user_teaser = true; $data = $vc_teaser_box->getTeaserData( 'data', $post->id ); if ( ! empty( $data ) ) { $data = json_decode( $data ); } $post->bgcolor = $vc_teaser_box->getTeaserData( 'bgcolor', $post->id ); $post->custom_teaser_blocks = array(); $post->title_attribute = the_title_attribute( 'echo=0' ); if ( ! empty( $data ) ) { foreach ( $data as $block ) { $settings = array(); if ( 'title' === $block->name ) { $post->title = the_title( '', '', false ); } elseif ( 'image' === $block->name ) { if ( 'featured' === $block->image ) { $post->thumbnail_data = $this->getPostThumbnail( $post->id, $grid_thumb_size ); } elseif ( ! empty( $block->image ) ) { $post->thumbnail_data = wpb_getImageBySize( array( 'attach_id' => (int) $block->image, 'thumb_size' => $grid_thumb_size, ) ); } else { $post->thumbnail_data = false; } $post->thumbnail = $post->thumbnail_data && isset( $post->thumbnail_data['thumbnail'] ) ? $post->thumbnail_data['thumbnail'] : ''; $post->image_link = empty( $video ) && $post->thumbnail && isset( $post->thumbnail_data['p_img_large'][0] ) ? $post->thumbnail_data['p_img_large'][0] : $video; } elseif ( 'text' === $block->name ) { if ( 'custom' === $block->mode ) { $settings[] = 'text'; $post->content = $block->text; } elseif ( 'excerpt' === $block->mode ) { $settings[] = $block->mode; $post->excerpt = $this->getPostExcerpt(); } else { $settings[] = $block->mode; $post->content = $this->getPostContent(); } } if ( isset( $block->link ) ) { if ( 'post' === $block->link ) { $settings[] = 'link_post'; } elseif ( 'big_image' === $block->link ) { $settings[] = 'link_image'; } else { $settings[] = 'no_link'; } $settings[] = ''; } $post->custom_teaser_blocks[] = array( $block->name, $settings ); } } } else { $post->custom_user_teaser = false; $post->title = the_title( '', '', false ); $post->title_attribute = the_title_attribute( 'echo=0' ); $post->post_type = get_post_type(); $post->content = $this->getPostContent(); $post->excerpt = $this->getPostExcerpt(); $post->thumbnail_data = $this->getPostThumbnail( $post->id, $grid_thumb_size ); $post->thumbnail = $post->thumbnail_data && isset( $post->thumbnail_data['thumbnail'] ) ? $post->thumbnail_data['thumbnail'] : ''; $video = get_post_meta( $post->id, '_p_video', true ); $post->image_link = empty( $video ) && $post->thumbnail && isset( $post->thumbnail_data['p_img_large'][0] ) ? $post->thumbnail_data['p_img_large'][0] : $video; } $post->categories_css = $this->getCategoriesCss( $post->id ); $posts[] = $post; } wp_reset_query(); /** * Css classes for grid and teasers. * {{ */ $post_types_teasers = ''; if ( ! empty( $args['post_type'] ) && is_array( $args['post_type'] ) ) { foreach ( $args['post_type'] as $post_type ) { $post_types_teasers .= 'wpb_teaser_grid_' . $post_type . ' '; } } $li_span_class = $this->spanClass( $grid_columns_count ); $css_class = 'wpb_row wpb_teaser_grid wpb_content_element ' . $this->getMainCssClass( $filter ) . // Css class as selector for isotope plugin ' columns_count_' . $grid_columns_count . // Custom margin/padding for different count of columns in grid ' columns_count_' . $grid_columns_count . // Combination of layout and column count ' ' . $post_types_teasers; // Css classes by selected post types $class_to_filter = $css_class; $class_to_filter .= $this->getExtraClass( $el_class ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts ); $this->setLinkTarget( $grid_link_target ); ?>
      $title, 'extraclass' => 'wpb_teaser_grid_heading' ) ) ?>
      filter_categories ) ) : $categories_array = $this->getFilterCategories(); echo ''; ?>
        0 ) : ?> custom_user_teaser ? $post->custom_teaser_blocks : $teaser_blocks; $block_style = isset( $post->bgcolor ) ? ' style="background-color: ' . $post->bgcolor . '"' : ''; echo ''; echo '
        '; foreach ( $blocks_to_build as $block_data ) : include $this->getBlockTemplate(); endforeach; echo '
        '; ?>
      PK<\KLJ1include/templates/shortcodes/vc_wp_custommenu.phpnu[getShortcode(), $atts ); extract( $atts ); $el_class = $this->getExtraClass( $el_class ); $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $output = '
      '; $type = 'WP_Nav_Menu_Widget'; $args = array(); global $wp_widget_factory; // to avoid unwanted warnings let's check before using widget if ( is_object( $wp_widget_factory ) && isset( $wp_widget_factory->widgets, $wp_widget_factory->widgets[ $type ] ) ) { ob_start(); the_widget( $type, $atts, $args ); $output .= ob_get_clean(); $output .= '
      '; echo $output; } else { echo $this->debugComment( 'Widget ' . esc_attr( $type ) . 'Not found in : vc_wp_custommenu' ); } PK<\B>-include/templates/shortcodes/vc_gitem_col.phpnu[getShortcode(), $atts ); extract( $atts ); // TODO: Note that vc_map_get_attributes doesnt return align so it should be checked in next bug fix $style = ''; $width = wpb_translateColumnWidthToSpan( $width ); $css_class = $width . ( strlen( $el_class ) ? ' ' . $el_class : '' ) . ' vc_gitem-col vc_gitem-col-align-' . $align . vc_shortcode_custom_css_class( $css, ' ' ); if ( 'yes' === $featured_image ) { $style = '{{ post_image_background_image_css' . ':' . $img_size . ' }}'; } echo '
      0 ? ' style="' . $style . '"' : '' ) . '>' . do_shortcode( $content ) . '
      '; PK<\&o.include/templates/shortcodes/vc_tta_global.phpnu[getShortcode(), $atts ); $this->resetVariables( $atts, $content ); extract( $atts ); $this->setGlobalTtaInfo(); $this->enqueueTtaStyles(); $this->enqueueTtaScript(); // It is required to be before tabs-list-top/left/bottom/right for tabs/tours $prepareContent = $this->getTemplateVariable( 'content' ); $class_to_filter = $this->getTtaGeneralClasses(); $class_to_filter .= vc_shortcode_custom_css_class( $css, ' ' ) . $this->getExtraClass( $el_class ) . $this->getCSSAnimation( $css_animation ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts ); $output = '
      getWrapperAttributes() . '>'; $output .= $this->getTemplateVariable( 'title' ); $output .= '
      '; $output .= $this->getTemplateVariable( 'tabs-list-top' ); $output .= $this->getTemplateVariable( 'tabs-list-left' ); $output .= '
      '; $output .= $this->getTemplateVariable( 'pagination-top' ); $output .= '
      '; $output .= $prepareContent; $output .= '
      '; $output .= $this->getTemplateVariable( 'pagination-bottom' ); $output .= '
      '; $output .= $this->getTemplateVariable( 'tabs-list-bottom' ); $output .= $this->getTemplateVariable( 'tabs-list-right' ); $output .= '
      '; $output .= '
      '; echo $output; PK<\F˾.include/templates/shortcodes/vc_gitem_zone.phpnu[getShortcode(), $atts ); extract( $atts ); if ( 'no' === $render ) { echo ''; return; } // Here we check content. If it doesn't contain any useful content, not to render all this staff. if ( 'yes' !== $featured_image && empty( $css ) && empty( $el_class ) && empty( $height ) && ! vc_gitem_has_content( $content ) ) { return; } $css_class = 'vc_gitem-zone' . ( strlen( $this->zone_name ) ? ' vc_gitem-zone-' . $this->zone_name : '' ); $css_class_mini = 'vc_gitem-zone-mini'; // Autoheight Mode // http://jsfiddle.net/tL2pgtyb/4/ {{ // Set css classes for shortcode main html element wrapper and background block $css_class .= vc_shortcode_custom_css_class( $css, ' ' ) . ( strlen( $el_class ) ? ' ' . $el_class : '' ); preg_match( '/background(\-image)?\s*\:\s*[^\s]*?\s*url\(\'?([^\)]+)\'?\)/', $css, $img_matches ); $background_image_css_editor = isset( $img_matches[2] ) ? $img_matches[2] : false; if ( 'custom' === $height_mode ) { if ( strlen( $height ) > 0 ) { if ( preg_match( '/^\d+$/', $height ) ) { $height .= 'px'; } $css_style .= 'height: ' . $height . ';'; } } elseif ( 'original' !== $height_mode ) { $css_class .= ' vc-gitem-zone-height-mode-auto' . ( strlen( $height_mode ) > 0 ? ' vc-gitem-zone-height-mode-auto-' . $height_mode : '' ); } if ( 'yes' === $featured_image ) { $css_style .= '{{ post_image_background_image_css' . ':' . $img_size . ' }}'; $image = '{{ post_image_alt }}'; } elseif ( false !== $background_image_css_editor ) { $image = '{{ post_image_alt }}'; } if ( strlen( $link ) > 0 && 'none' !== $link ) { $css_class .= ' vc_gitem-is-link'; if ( 'custom' === $link && ! empty( $url ) ) { $link_s = vc_build_link( $url ); /* $attr = ' data-vc-link="' . esc_attr( $link_s['url'] ) . '"' . ' data-vc-target="' . esc_attr( trim($link_s['target']) ) . '"' . ' title="' . esc_attr( $link_s['title'] ) . '"'; */ $rel = ''; if ( ! empty( $link_s['rel'] ) ) { $rel = ' rel="' . esc_attr( trim( $link_s['rel'] ) ) . '"'; } $image_block = ''; } elseif ( 'post_link' === $link ) { $image_block = ''; } elseif ( 'post_author' === $link ) { $image_block = ''; } elseif ( 'image' === $link ) { $image_block = ''; } elseif ( 'image_lightbox' === $link ) { if ( ! isset( $this->prettyphoto_rel ) ) { $this->prettyphoto_rel = ' data-rel="prettyPhoto[rel-' . get_the_ID() . '-' . rand() . ']"'; } $image_block .= 'prettyphoto_rel . ' data-vc-gitem-zone="prettyphotoLink" class="vc_gitem-link prettyphoto vc-zone-link vc-prettyphoto-link">'; } $image_block = apply_filters( 'vc_gitem_zone_image_block_link', $image_block, $link, 'vc_gitem-link vc-zone-link' ); } ?>
      >
      >
      PK<\>H݇ ,include/templates/shortcodes/vc_hoverbox.phpnu[getShortcode(), $atts ); if ( ! empty( $atts['image'] ) ) { $image = intval( $atts['image'] ); $image_data = wp_get_attachment_image_src( $image, 'large' ); $image_src = $image_data[0]; } else { $image_src = vc_asset_url( 'vc/no_image.png' ); } $image_src = esc_url( $image_src ); $align = 'vc-hoverbox-align--' . esc_attr( $atts['align'] ); $shape = 'vc-hoverbox-shape--' . esc_attr( $atts['shape'] ); $width = 'vc-hoverbox-width--' . esc_attr( $atts['el_width'] ); $reverse = 'vc-hoverbox-direction--default'; if ( ! empty( $atts['reverse'] ) ) { $reverse = 'vc-hoverbox-direction--reverse'; } $id = ''; if ( ! empty( $atts['el_id'] ) ) { $id = 'id="' . esc_attr( $atts['el_id'] ) . '"'; } $class_to_filter = vc_shortcode_custom_css_class( $atts['css'], ' ' ) . $this->getExtraClass( $atts['el_class'] ) . $this->getCSSAnimation( $atts['css_animation'] ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts ); // Hover Background color if ( 'custom' !== $atts['hover_background_color'] ) { $hover_background_color = vc_convert_vc_color( $atts['hover_background_color'] ); } else { $hover_background_color = esc_attr( $atts['hover_custom_background'] ); } $primary_title = $this->getHeading( 'primary_title', $atts, $atts['primary_align'] ); $hover_title = $this->getHeading( 'hover_title', $atts, $atts['hover_align'] ); $content = wpb_js_remove_wpautop( $content, true ); $button = ''; if ( $atts['hover_add_button'] ) { $button = $this->renderButton( $atts ); } $template = <<
      $primary_title
      $hover_title $content $button
      HTML; echo $template; PK<\F-include/templates/shortcodes/vc_accordion.phpnu[getShortcode(), $atts ); extract( $atts ); wp_enqueue_script( 'jquery-ui-accordion' ); $el_class = $this->getExtraClass( $el_class ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, 'wpb_accordion wpb_content_element ' . $el_class . ' not-column-inherit', $this->settings['base'], $atts ); $output = '
      ' . wpb_widget_title( array( 'title' => $title, 'extraclass' => 'wpb_accordion_heading' ) ) . ' ' . wpb_js_remove_wpautop( $content ) . '
      '; echo $output; PK<\}kPP3include/templates/shortcodes/vc_gitem_post_data.phpnu[getAttributes( $atts ) ); extract( $this->getStyles( $el_class, $css, $google_fonts_data, $font_container_data, $atts ) ); $data_source = $this->getDataSource( $atts ); if ( isset( $atts['link'] ) && '' !== $atts['link'] && 'none' !== $atts['link'] ) { $link_html = vc_gitem_create_link( $atts ); } $use_custom_fonts = isset( $atts['use_custom_fonts'] ) && 'yes' === $atts['use_custom_fonts']; $settings = get_option( 'wpb_js_google_fonts_subsets' ); $subsets = ''; if ( is_array( $settings ) && ! empty( $settings ) ) { $subsets = '&subset=' . implode( ',', $settings ); } $content = '{{ post_data:' . esc_attr( $data_source ) . ' }}'; if ( ! empty( $link_html ) ) { $content = '<' . $link_html . '>' . $content . ''; } $css_class .= ' vc_gitem-post-data'; if ( $data_source ) { $css_class .= ' vc_gitem-post-data-source-' . $data_source; } if ( $use_custom_fonts && ! empty( $google_fonts_data ) && isset( $google_fonts_data['values']['font_family'] ) ) { wp_enqueue_style( 'vc_google_fonts_' . vc_build_safe_css_class( $google_fonts_data['values']['font_family'] ), '//fonts.googleapis.com/css?family=' . $google_fonts_data['values']['font_family'] . $subsets ); } $output .= '
      '; $style = ''; if ( ! empty( $styles ) ) { $style = 'style="' . esc_attr( implode( ';', $styles ) ) . '"'; } $output .= '<' . $font_container_data['values']['tag'] . ' ' . $style . ' >'; $output .= $content; $output .= ''; $output .= '
      '; echo $output; PK<\hPP'include/templates/shortcodes/vc_tab.phpnu[getShortcode(), $atts ); extract( $atts ); wp_enqueue_script( 'jquery_ui_tabs_rotate' ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, 'wpb_tab ui-tabs-panel wpb_ui-tabs-hide vc_clearfix', $this->settings['base'], $atts ); $output = '
      ' . ( ( '' === trim( $content ) ) ? __( 'Empty tab. Edit page to add content here.', 'js_composer' ) : wpb_js_remove_wpautop( $content ) ) . '
      '; echo $output; PK<\!F60include/templates/shortcodes/vc_column_inner.phpnu[getShortcode(), $atts ); extract( $atts ); $width = wpb_translateColumnWidthToSpan( $width ); $width = vc_column_offset_class_merge( $offset, $width ); $css_classes = array( $this->getExtraClass( $el_class ), 'wpb_column', 'vc_column_container', $width, ); if ( vc_shortcode_custom_css_has_property( $css, array( 'border', 'background', ) ) ) { $css_classes[] = 'vc_col-has-fill'; } $wrapper_attributes = array(); $css_class = preg_replace( '/\s+/', ' ', apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, implode( ' ', array_filter( $css_classes ) ), $this->settings['base'], $atts ) ); $wrapper_attributes[] = 'class="' . esc_attr( trim( $css_class ) ) . '"'; if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $output .= '
      '; $output .= '
      '; $output .= '
      '; $output .= wpb_js_remove_wpautop( $content ); $output .= '
      '; $output .= '
      '; $output .= '
      '; echo $output; PK<\Q<)include/templates/shortcodes/vc_items.phpnu[getShortcode(), $atts ); extract( $atts ); $el_class = $this->getExtraClass( $el_class ); $el_class .= ( ! empty( $el_class ) ? ' ' : '' ) . 'wpb_item items_container'; $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $el_class, $this->settings['base'], $atts ); $output = '
      ' . wpb_js_remove_wpautop( $content ) . '
      '; echo $output; PK<\Et@@0include/templates/shortcodes/vc_custom_field.phpnu[ '', 'custom_field_key' => '', 'el_class' => '', ), $atts ) ); $key = strlen( $custom_field_key ) > 0 ? $custom_field_key : $field_key; if ( strlen( $key ) ) : ?>
      {{ post_meta_value: }}
      PK<\. .EE.include/templates/shortcodes/vc_line_chart.phpnu[getShortcode(), $atts ); extract( $atts ); $base_colors = array( 'normal' => array( 'blue' => '#5472d2', 'turquoise' => '#00c1cf', 'pink' => '#fe6c61', 'violet' => '#8d6dc4', 'peacoc' => '#4cadc9', 'chino' => '#cec2ab', 'mulled-wine' => '#50485b', 'vista-blue' => '#75d69c', 'orange' => '#f7be68', 'sky' => '#5aa1e3', 'green' => '#6dab3c', 'juicy-pink' => '#f4524d', 'sandy-brown' => '#f79468', 'purple' => '#b97ebb', 'black' => '#2a2a2a', 'grey' => '#ebebeb', 'white' => '#ffffff', 'default' => '#f7f7f7', 'primary' => '#0088cc', 'info' => '#58b9da', 'success' => '#6ab165', 'warning' => '#ff9900', 'danger' => '#ff675b', 'inverse' => '#555555', ), 'active' => array( 'blue' => '#3c5ecc', 'turquoise' => '#00a4b0', 'pink' => '#fe5043', 'violet' => '#7c57bb', 'peacoc' => '#39a0bd', 'chino' => '#c3b498', 'mulled-wine' => '#413a4a', 'vista-blue' => '#5dcf8b', 'orange' => '#f5b14b', 'sky' => '#4092df', 'green' => '#5f9434', 'juicy-pink' => '#f23630', 'sandy-brown' => '#f57f4b', 'purple' => '#ae6ab0', 'black' => '#1b1b1b', 'grey' => '#dcdcdc', 'white' => '#f0f0f0', 'default' => '#e8e8e8', 'primary' => '#0074ad', 'info' => '#3fafd4', 'success' => '#59a453', 'warning' => '#e08700', 'danger' => '#ff4b3c', 'inverse' => '#464646', ), ); $colors = array( 'flat' => array( 'normal' => $base_colors['normal'], 'active' => $base_colors['active'], ), ); foreach ( $base_colors['normal'] as $name => $color ) { $colors['modern']['normal'][ $name ] = array( vc_colorCreator( $color, 7 ), $color ); } foreach ( $base_colors['active'] as $name => $color ) { $colors['modern']['active'][ $name ] = array( vc_colorCreator( $color, 7 ), $color ); } wp_enqueue_script( 'vc_line_chart' ); $class_to_filter = 'vc_chart vc_line-chart wpb_content_element'; $class_to_filter .= vc_shortcode_custom_css_class( $css, ' ' ) . $this->getExtraClass( $el_class ) . $this->getCSSAnimation( $css_animation ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts ); $options = array(); if ( ! empty( $legend ) ) { $options[] = 'data-vc-legend="1"'; } if ( ! empty( $tooltips ) ) { $options[] = 'data-vc-tooltips="1"'; } if ( ! empty( $animation ) ) { $options[] = 'data-vc-animation="' . $animation . '"'; } $values = (array) vc_param_group_parse_atts( $values ); $data = array( 'labels' => explode( ';', trim( $x_values, ';' ) ), 'datasets' => array(), ); foreach ( $values as $k => $v ) { if ( 'custom' === $style ) { if ( ! empty( $v['custom_color'] ) ) { $color = $v['custom_color']; $highlight = vc_colorCreator( $v['custom_color'], - 10 ); //10% darker } else { $color = 'grey'; $highlight = 'grey'; } } else { $color = isset( $colors[ $style ]['normal'][ $v['color'] ] ) ? $colors[ $style ]['normal'][ $v['color'] ] : $v['normal']['color']; $highlight = isset( $colors[ $style ]['active'][ $v['color'] ] ) ? $colors[ $style ]['active'][ $v['color'] ] : $v['active']['color']; } // don't use gradients for lines if ( 'line' === $type ) { $color = is_array( $color ) ? end( $color ) : $color; $highlight = is_array( $highlight ) ? end( $highlight ) : $highlight; $rgb = vc_hex2rgb( $color ); $fill_color = 'rgba(' . $rgb[0] . ', ' . $rgb[1] . ', ' . $rgb[2] . ', 0.1)'; } else { $fill_color = $color; } if ( 'modern' === $style ) { $stroke_color = vc_colorCreator( is_array( $color ) ? end( $color ) : $color, - 7 ); $highlight_stroke_color = vc_colorCreator( $stroke_color, - 7 ); } else { $stroke_color = $color; $highlight_stroke_color = $highlight; } $data['datasets'][] = array( 'label' => isset( $v['title'] ) ? $v['title'] : '', 'fillColor' => $fill_color, 'strokeColor' => $stroke_color, 'pointColor' => $color, 'pointStrokeColor' => $color, 'highlightFill' => $highlight, 'highlightStroke' => $highlight_stroke_color, 'pointHighlightFill' => $highlight_stroke_color, 'pointHighlightStroke' => $highlight_stroke_color, 'data' => explode( ';', isset( $v['y_values'] ) ? trim( $v['y_values'], ';' ) : '' ), ); } $options[] = 'data-vc-type="' . esc_attr( $type ) . '"'; $options[] = 'data-vc-values="' . htmlentities( json_encode( $data ) ) . '"'; if ( '' !== $title ) { $title = '

      ' . $title . '

      '; } $canvas_html = ''; $legend_html = ''; if ( $legend ) { foreach ( $data['datasets'] as $v ) { $color = is_array( $v['pointColor'] ) ? current( $v['pointColor'] ) : $v['pointColor']; $legend_html .= '
    • ' . $v['label'] . '
    • '; } $legend_html = '
        ' . $legend_html . '
      '; $canvas_html = '
      ' . $canvas_html . '
      '; } if ( ! empty( $el_id ) ) { $options[] = 'id="' . esc_attr( $el_id ) . '"'; } $output = '
      ' . $title . '
      ' . $canvas_html . $legend_html . '
      ' . '
      ' . ' '; echo $output; PK<\/+)include/templates/shortcodes/vc_video.phpnu[getShortcode(), $atts ); extract( $atts ); if ( '' === $link ) { return null; } $el_class = $this->getExtraClass( $el_class ) . $this->getCSSAnimation( $css_animation ); $video_w = 500; $video_h = $video_w / 1.61; //1.61 golden ratio /** @var WP_Embed $wp_embed */ global $wp_embed; $embed = ''; if ( is_object( $wp_embed ) ) { $embed = $wp_embed->run_shortcode( '[embed width="' . $video_w . '"' . $video_h . ']' . $link . '[/embed]' ); } $el_classes = array( 'wpb_video_widget', 'wpb_content_element', 'vc_clearfix', $el_class, vc_shortcode_custom_css_class( $css, ' ' ), 'vc_video-aspect-ratio-' . esc_attr( $el_aspect ), 'vc_video-el-width-' . esc_attr( $el_width ), 'vc_video-align-' . esc_attr( $align ), ); $css_class = implode( ' ', $el_classes ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $css_class, $this->getShortcode(), $atts ); $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $output = '
      ' . wpb_widget_title( array( 'title' => $title, 'extraclass' => 'wpb_video_heading', ) ) . '
      ' . $embed . '
      '; echo $output; PK<\;;)include/templates/shortcodes/vc_gmaps.phpnu[getShortcode(), $atts ); extract( $atts ); $zoom = 14; // deprecated 4.0.2. In 4.6 was moved outside from shortcode_atts $type = 'm'; // deprecated 4.0.2 $bubble = ''; // deprecated 4.0.2 if ( '' === $link ) { return null; } $link = trim( vc_value_from_safe( $link ) ); $bubble = ( '' !== $bubble && '0' !== $bubble ) ? '&iwloc=near' : ''; $size = str_replace( array( 'px', ' ', ), array( '', '', ), $size ); if ( is_numeric( $size ) ) { $link = preg_replace( '/height="[0-9]*"/', 'height="' . $size . '"', $link ); } $class_to_filter = 'wpb_gmaps_widget wpb_content_element' . ( '' === $size ? ' vc_map_responsive' : '' ); $class_to_filter .= vc_shortcode_custom_css_class( $css, ' ' ) . $this->getExtraClass( $el_class ) . $this->getCSSAnimation( $css_animation ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts ); $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } ?>
      > $title, 'extraclass' => 'wpb_map_heading', ) ); ?>
      '; } ?>
      PK<\W{{1include/templates/shortcodes/post_block/_item.phpnu[

      getLinked( $post, $post->title, $link_setting, 'link_title' ) : $post->title ?>

      thumbnail ) ) : ?>
      getLinked( $post, $post->thumbnail, $link_setting, 'link_image' ) : $post->thumbnail ?>
      content : $post->excerpt; ?>
      link_target ?>> PK<\7include/templates/shortcodes/post_block/.post_block.phpnu[PK<\G""/include/templates/shortcodes/vc_column_text.phpnu[getShortcode(), $atts ); extract( $atts ); $class_to_filter = 'wpb_text_column wpb_content_element ' . $this->getCSSAnimation( $css_animation ); $class_to_filter .= vc_shortcode_custom_css_class( $css, ' ' ) . $this->getExtraClass( $el_class ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts ); $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $output = '
      ' . wpb_js_remove_wpautop( $content, true ) . '
      '; echo $output; PK<\s5include/templates/shortcodes/vc_gitem_post_author.phpnu[getAttributes( $atts ); $styles = $this->getStyles( $atts['el_class'], $atts['css'], $atts['google_fonts_data'], $atts['font_container_data'], $atts ); if ( ! empty( $atts['link'] ) ) { $atts['link'] = 'post_author'; $link_html = vc_gitem_create_link( $atts ); } $use_custom_fonts = isset( $atts['use_custom_fonts'] ) && 'yes' === $atts['use_custom_fonts']; $settings = get_option( 'wpb_js_google_fonts_subsets' ); $subsets = ''; if ( is_array( $settings ) && ! empty( $settings ) ) { $subsets = '&subset=' . implode( ',', $settings ); } $content = '{{ post_author }}'; if ( ! empty( $link_html ) ) { $content = '<' . $link_html . '>' . $content . ''; } $css_class = array( $styles['css_class'], 'vc_gitem-post-data', ); $css_class[] = 'vc_gitem-post-data-source-post_author'; if ( $use_custom_fonts && ! empty( $atts['google_fonts_data'] ) && isset( $atts['google_fonts_data']['values']['font_family'] ) ) { wp_enqueue_style( 'vc_google_fonts_' . vc_build_safe_css_class( $atts['google_fonts_data']['values']['font_family'] ), '//fonts.googleapis.com/css?family=' . $atts['google_fonts_data']['values']['font_family'] . $subsets ); } $output .= '
      '; $style = ''; if ( ! empty( $styles['styles'] ) ) { $style = 'style="' . esc_attr( implode( ';', $styles['styles'] ) ) . '"'; } $output .= '<' . $atts['font_container_data']['values']['tag'] . ' ' . $style . ' >'; $output .= $content; $output .= ''; $output .= '
      '; echo $output; PK<\,include/templates/shortcodes/vc_wp_posts.phpnu[getShortcode(), $atts ); extract( $atts ); $el_class = $this->getExtraClass( $el_class ); $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $output = '
      '; $type = 'WP_Widget_Recent_Posts'; $args = array(); global $wp_widget_factory; // to avoid unwanted warnings let's check before using widget if ( is_object( $wp_widget_factory ) && isset( $wp_widget_factory->widgets, $wp_widget_factory->widgets[ $type ] ) ) { ob_start(); the_widget( $type, $atts, $args ); $output .= ob_get_clean(); $output .= '
      '; echo $output; } else { echo $this->debugComment( 'Widget ' . esc_attr( $type ) . 'Not found in : vc_wp_posts' ); } PK<\,include/templates/shortcodes/vc_wp_pages.phpnu[getShortcode(), $atts ); extract( $atts ); $el_class = $this->getExtraClass( $el_class ); $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $output = '
      '; $type = 'WP_Widget_Pages'; $args = array(); global $wp_widget_factory; // to avoid unwanted warnings let's check before using widget if ( is_object( $wp_widget_factory ) && isset( $wp_widget_factory->widgets, $wp_widget_factory->widgets[ $type ] ) ) { ob_start(); the_widget( $type, $atts, $args ); $output .= ob_get_clean(); $output .= '
      '; echo $output; } else { echo $this->debugComment( 'Widget ' . esc_attr( $type ) . 'Not found in : vc_wp_pages' ); } PK<\goo+include/templates/shortcodes/vc_gallery.phpnu[getShortcode(), $atts ); extract( $attributes ); $default_src = vc_asset_url( 'vc/no_image.png' ); $gal_images = ''; $link_start = ''; $link_end = ''; $el_start = ''; $el_end = ''; $slides_wrap_start = ''; $slides_wrap_end = ''; $el_class = $this->getExtraClass( $el_class ); if ( 'nivo' === $type ) { $type = ' wpb_slider_nivo theme-default'; wp_enqueue_script( 'nivo-slider' ); wp_enqueue_style( 'nivo-slider-css' ); wp_enqueue_style( 'nivo-slider-theme' ); $slides_wrap_start = '
      '; $slides_wrap_end = '
      '; } elseif ( 'flexslider' === $type || 'flexslider_fade' === $type || 'flexslider_slide' === $type || 'fading' === $type ) { $el_start = '
    • '; $el_end = '
    • '; $slides_wrap_start = '
        '; $slides_wrap_end = '
      '; wp_enqueue_style( 'flexslider' ); wp_enqueue_script( 'flexslider' ); } elseif ( 'image_grid' === $type ) { wp_enqueue_script( 'vc_grid-js-imagesloaded' ); wp_enqueue_script( 'isotope' ); wp_enqueue_style( 'isotope-css' ); $el_start = '
    • '; $el_end = '
    • '; $slides_wrap_start = '
        '; $slides_wrap_end = '
      '; } if ( 'link_image' === $onclick ) { wp_enqueue_script( 'prettyphoto' ); wp_enqueue_style( 'prettyphoto' ); } $flex_fx = ''; if ( 'flexslider' === $type || 'flexslider_fade' === $type || 'fading' === $type ) { $type = ' wpb_flexslider flexslider_fade flexslider'; $flex_fx = ' data-flex_fx="fade"'; } elseif ( 'flexslider_slide' === $type ) { $type = ' wpb_flexslider flexslider_slide flexslider'; $flex_fx = ' data-flex_fx="slide"'; } elseif ( 'image_grid' === $type ) { $type = ' wpb_image_grid'; } if ( '' === $images ) { $images = '-1,-2,-3'; } $pretty_rel_random = ' data-rel="prettyPhoto[rel-' . get_the_ID() . '-' . rand() . ']"'; if ( 'custom_link' === $onclick ) { $custom_links = vc_value_from_safe( $custom_links ); $custom_links = explode( ',', $custom_links ); } switch ( $source ) { case 'media_library': $images = explode( ',', $images ); break; case 'external_link': $images = vc_value_from_safe( $custom_srcs ); $images = explode( ',', $images ); break; } foreach ( $images as $i => $image ) { switch ( $source ) { case 'media_library': if ( $image > 0 ) { $img = wpb_getImageBySize( array( 'attach_id' => $image, 'thumb_size' => $img_size, ) ); $thumbnail = $img['thumbnail']; $large_img_src = $img['p_img_large'][0]; } else { $large_img_src = $default_src; $thumbnail = ''; } break; case 'external_link': $image = esc_attr( $image ); $dimensions = vcExtractDimensions( $external_img_size ); $hwstring = $dimensions ? image_hwstring( $dimensions[0], $dimensions[1] ) : ''; $thumbnail = ''; $large_img_src = $image; break; } $link_start = $link_end = ''; switch ( $onclick ) { case 'img_link_large': $link_start = ''; $link_end = ''; break; case 'link_image': $link_start = ''; $link_end = ''; break; case 'custom_link': if ( ! empty( $custom_links[ $i ] ) ) { $link_start = ''; $link_end = ''; } break; } $gal_images .= $el_start . $link_start . $thumbnail . $link_end . $el_end; } $class_to_filter = 'wpb_gallery wpb_content_element vc_clearfix'; $class_to_filter .= vc_shortcode_custom_css_class( $css, ' ' ) . $this->getExtraClass( $el_class ) . $this->getCSSAnimation( $css_animation ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts ); $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $output = ''; $output .= '
      '; $output .= '
      '; $output .= wpb_widget_title( array( 'title' => $title, 'extraclass' => 'wpb_gallery_heading', ) ); $output .= ''; $output .= '
      '; $output .= '
      '; echo $output; PK<\,(include/templates/shortcodes/vc_item.phpnu[getShortcode(), $atts ); extract( $atts ); $css = $this->getExtraClass( $el_class ); echo '
      ' . __( 'Item', 'js_composer' ) . '
      '; PK<\SS+include/templates/shortcodes/vc_wp_meta.phpnu[getShortcode(), $atts ); extract( $atts ); $el_class = $this->getExtraClass( $el_class ); $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $output = '
      '; $type = 'WP_Widget_Meta'; $args = array(); global $wp_widget_factory; // to avoid unwanted warnings let's check before using widget if ( is_object( $wp_widget_factory ) && isset( $wp_widget_factory->widgets, $wp_widget_factory->widgets[ $type ] ) ) { ob_start(); the_widget( $type, $atts, $args ); $output .= ob_get_clean(); $output .= '
      '; echo $output; } else { echo $this->debugComment( 'Widget ' . esc_attr( $type ) . 'Not found in : vc_wp_meta' ); } PK<\=  2include/templates/shortcodes/vc_text_separator.phpnu[getShortcode(), $atts ); extract( $atts ); $class = 'vc_separator wpb_content_element'; $class .= ( '' !== $title_align ) ? ' vc_' . $title_align : ''; $class .= ( '' !== $el_width ) ? ' vc_sep_width_' . $el_width : ' vc_sep_width_100'; $class .= ( '' !== $style ) ? ' vc_sep_' . $style : ''; $class .= ( '' !== $border_width ) ? ' vc_sep_border_width_' . $border_width : ''; $class .= ( '' !== $align ) ? ' vc_sep_pos_' . $align : ''; $class .= ( 'separator_no_text' === $layout ) ? ' vc_separator_no_text' : ''; if ( '' !== $color && 'custom' !== $color ) { $class .= ' vc_sep_color_' . $color; } $inline_css = ( 'custom' === $color && '' !== $accent_color ) ? ' style="' . vc_get_css_color( 'border-color', $accent_color ) . '"' : ''; $class_to_filter = $class; $class_to_filter .= vc_shortcode_custom_css_class( $css, ' ' ) . $this->getExtraClass( $el_class ) . $this->getCSSAnimation( $css_animation ); $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts ); $css_class = esc_attr( trim( $css_class ) ); $icon = ''; if ( 'true' === $add_icon ) { vc_icon_element_fonts_enqueue( $i_type ); $icon = $this->getVcIcon( $atts ); } $content = ''; if ( $icon ) { $content = $icon; } if ( '' !== $title && 'separator_no_text' !== $layout ) { $css_class .= ' vc_separator-has-text'; $content .= '

      ' . $title . '

      '; } $wrapper_attributes = array(); if ( ! empty( $el_id ) ) { $wrapper_attributes[] = 'id="' . esc_attr( $el_id ) . '"'; } $wrapper_attributes_html = implode( ' ', $wrapper_attributes ); $separatorHtml = <<